diff --git a/examples/GraspDeformable/GraspDeformable.cpp b/examples/GraspDeformable/GraspDeformable.cpp index 7d42ffa43..68a52be7e 100644 --- a/examples/GraspDeformable/GraspDeformable.cpp +++ b/examples/GraspDeformable/GraspDeformable.cpp @@ -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) diff --git a/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp b/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp index f5a7a7f1e..602c94926 100644 --- a/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp +++ b/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp @@ -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& islandAnalyticsData) const @@ -430,6 +435,7 @@ void btMultiBodyDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo) solveExternalForces(solverInfo); buildIslands(); solveInternalConstraints(solverInfo); + m_solverMultiBodyIslandCallback->clearContactConstraints(); } void btMultiBodyDynamicsWorld::buildIslands()