more bug fixes
This commit is contained in:
@@ -206,15 +206,15 @@ void DeformableMultibody::initPhysics()
|
|||||||
|
|
||||||
psb->getCollisionShape()->setMargin(0.25);
|
psb->getCollisionShape()->setMargin(0.25);
|
||||||
psb->generateBendingConstraints(2);
|
psb->generateBendingConstraints(2);
|
||||||
psb->setTotalMass(5);
|
psb->setTotalMass(1);
|
||||||
psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects
|
psb->m_cfg.kKHR = 1; // collision hardness with kinematic objects
|
||||||
psb->m_cfg.kCHR = 1; // collision hardness with rigid body
|
psb->m_cfg.kCHR = 1; // collision hardness with rigid body
|
||||||
psb->m_cfg.kDF = .1;
|
psb->m_cfg.kDF = 2;
|
||||||
psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD;
|
psb->m_cfg.collisions = btSoftBody::fCollision::SDF_RD;
|
||||||
psb->setCollisionFlags(0);
|
psb->setCollisionFlags(0);
|
||||||
getDeformableDynamicsWorld()->addSoftBody(psb);
|
getDeformableDynamicsWorld()->addSoftBody(psb);
|
||||||
|
|
||||||
btDeformableMassSpringForce* mass_spring = new btDeformableMassSpringForce(2, 0.01, false);
|
btDeformableMassSpringForce* mass_spring = new btDeformableMassSpringForce(30, 1, true);
|
||||||
getDeformableDynamicsWorld()->addForce(psb, mass_spring);
|
getDeformableDynamicsWorld()->addForce(psb, mass_spring);
|
||||||
m_forces.push_back(mass_spring);
|
m_forces.push_back(mass_spring);
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ struct btContactSolverInfo : public btContactSolverInfoData
|
|||||||
m_numIterations = 10;
|
m_numIterations = 10;
|
||||||
m_erp = btScalar(0.2);
|
m_erp = btScalar(0.2);
|
||||||
m_erp2 = btScalar(0.2);
|
m_erp2 = btScalar(0.2);
|
||||||
m_deformable_erp = btScalar(1.0);
|
m_deformable_erp = btScalar(0.0);
|
||||||
m_globalCfm = btScalar(0.);
|
m_globalCfm = btScalar(0.);
|
||||||
m_frictionERP = btScalar(0.2); //positional friction 'anchors' are disabled by default
|
m_frictionERP = btScalar(0.2); //positional friction 'anchors' are disabled by default
|
||||||
m_frictionCFM = btScalar(0.);
|
m_frictionCFM = btScalar(0.);
|
||||||
|
|||||||
@@ -127,8 +127,8 @@ void btDeformableMultiBodyConstraintSolver::solveGroupCacheFriendlySplitImpulseI
|
|||||||
leastSquaresResidual = btMax(leastSquaresResidual, residual * residual);
|
leastSquaresResidual = btMax(leastSquaresResidual, residual * residual);
|
||||||
}
|
}
|
||||||
// solve the position correction between deformable and rigid/multibody
|
// solve the position correction between deformable and rigid/multibody
|
||||||
btScalar residual = m_deformableSolver->solveSplitImpulse(infoGlobal);
|
// btScalar residual = m_deformableSolver->solveSplitImpulse(infoGlobal);
|
||||||
leastSquaresResidual = btMax(leastSquaresResidual, residual * residual);
|
// leastSquaresResidual = btMax(leastSquaresResidual, residual * residual);
|
||||||
}
|
}
|
||||||
if (leastSquaresResidual <= infoGlobal.m_leastSquaresResidualThreshold || iteration >= (infoGlobal.m_numIterations - 1))
|
if (leastSquaresResidual <= infoGlobal.m_leastSquaresResidualThreshold || iteration >= (infoGlobal.m_numIterations - 1))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3700,8 +3700,8 @@ void btSoftBody::defaultCollisionHandler(const btCollisionObjectWrapper* pcoWrap
|
|||||||
docollideFace.psb = this;
|
docollideFace.psb = this;
|
||||||
docollideFace.m_colObj1Wrap = pcoWrap;
|
docollideFace.m_colObj1Wrap = pcoWrap;
|
||||||
docollideFace.m_rigidBody = prb1;
|
docollideFace.m_rigidBody = prb1;
|
||||||
docollideFace.dynmargin = basemargin + timemargin;
|
docollideFace.dynmargin = 0.9*(basemargin + timemargin);
|
||||||
docollideFace.stamargin = basemargin;
|
docollideFace.stamargin = 0.9*basemargin;
|
||||||
m_fdbvt.collideTV(m_fdbvt.m_root, volume, docollideFace);
|
m_fdbvt.collideTV(m_fdbvt.m_root, volume, docollideFace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user