modify constraint setup so that contact constraints are persistent in a single CG solve but motor constraints are applied only once
This commit is contained in:
@@ -402,8 +402,8 @@ btMultiBody* GraspDeformable::createFeatherstoneMultiBody(btMultiBodyDynamicsWor
|
||||
{
|
||||
//init the base
|
||||
btVector3 baseInertiaDiag(0.f, 0.f, 0.f);
|
||||
float baseMass = .1f;
|
||||
float linkMass = .1f;
|
||||
float baseMass = 1.f;
|
||||
float linkMass = 1.f;
|
||||
int numLinks = 2;
|
||||
|
||||
if (baseMass)
|
||||
|
||||
@@ -375,10 +375,15 @@ struct MultiBodyInplaceSolverIslandCallback : public btSimulationIslandManager::
|
||||
m_islandAnalyticsData.push_back(m_solver->m_analyticsData);
|
||||
}
|
||||
m_bodies.resize(0);
|
||||
m_manifolds.resize(0);
|
||||
// m_manifolds.resize(0);
|
||||
m_constraints.resize(0);
|
||||
m_multiBodyConstraints.resize(0);
|
||||
}
|
||||
|
||||
void clearContactConstraints()
|
||||
{
|
||||
m_manifolds.resize(0);
|
||||
}
|
||||
};
|
||||
|
||||
void btMultiBodyDynamicsWorld::getAnalyticsData(btAlignedObjectArray<btSolverAnalyticsData>& islandAnalyticsData) const
|
||||
@@ -430,6 +435,7 @@ void btMultiBodyDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo)
|
||||
solveExternalForces(solverInfo);
|
||||
buildIslands();
|
||||
solveInternalConstraints(solverInfo);
|
||||
m_solverMultiBodyIslandCallback->clearContactConstraints();
|
||||
}
|
||||
|
||||
void btMultiBodyDynamicsWorld::buildIslands()
|
||||
|
||||
Reference in New Issue
Block a user