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:
Xuchen Han
2019-08-08 14:25:01 -07:00
parent deb7c152c4
commit 26983b05e2
2 changed files with 9 additions and 3 deletions

View File

@@ -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)

View File

@@ -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()