change collision detection between deformables to from continuous to discrete
This commit is contained in:
@@ -431,11 +431,10 @@ void btDeformableBodySolver::predictDeformableMotion(btSoftBody* psb, btScalar d
|
||||
for (i = 0, ni = psb->m_nodes.size(); i < ni; ++i)
|
||||
{
|
||||
btSoftBody::Node& n = psb->m_nodes[i];
|
||||
vol = btDbvtVolume::FromCR(n.m_q, psb->m_sst.radmrg);
|
||||
psb->m_ndbvt.update(n.m_leaf,
|
||||
vol,
|
||||
n.m_v * psb->m_sst.velmrg,
|
||||
psb->m_sst.updmrg);
|
||||
btVector3 points[2] = {n.m_x, n.m_q};
|
||||
vol = btDbvtVolume::FromPoints(points, 2);
|
||||
vol.Expand(btVector3(psb->m_sst.radmrg, psb->m_sst.radmrg, psb->m_sst.radmrg));
|
||||
psb->m_ndbvt.update(n.m_leaf, vol);
|
||||
}
|
||||
|
||||
if (!psb->m_fdbvt.empty())
|
||||
@@ -443,15 +442,12 @@ void btDeformableBodySolver::predictDeformableMotion(btSoftBody* psb, btScalar d
|
||||
for (int i = 0; i < psb->m_faces.size(); ++i)
|
||||
{
|
||||
btSoftBody::Face& f = psb->m_faces[i];
|
||||
const btVector3 v = (f.m_n[0]->m_v +
|
||||
f.m_n[1]->m_v +
|
||||
f.m_n[2]->m_v) /
|
||||
3;
|
||||
vol = VolumeOf(f, psb->m_sst.radmrg);
|
||||
psb->m_fdbvt.update(f.m_leaf,
|
||||
vol,
|
||||
v * psb->m_sst.velmrg,
|
||||
psb->m_sst.updmrg);
|
||||
btVector3 points[6] = {f.m_n[0]->m_x, f.m_n[0]->m_q,
|
||||
f.m_n[1]->m_x, f.m_n[1]->m_q,
|
||||
f.m_n[2]->m_x, f.m_n[2]->m_q};
|
||||
vol = btDbvtVolume::FromPoints(points, 6);
|
||||
vol.Expand(btVector3(psb->m_sst.radmrg, psb->m_sst.radmrg, psb->m_sst.radmrg));
|
||||
psb->m_fdbvt.update(f.m_leaf, vol);
|
||||
}
|
||||
}
|
||||
/* Clear contacts */
|
||||
|
||||
Reference in New Issue
Block a user