Change picking force to implicit for all integration schemes.

This commit is contained in:
Xuchen Han
2020-08-03 23:04:47 -07:00
committed by Chuyuan Fu
parent ba6117c4ed
commit ae9fb3ca8f
@@ -86,7 +86,8 @@ void btDeformableBackwardEulerObjective::multiply(const TVStack& x, TVStack& b)
{
// add damping matrix
m_lf[i]->addScaledDampingForceDifferential(-m_dt, x, b);
if (m_implicit)
// Always integrate picking force implicitly for stability.
if (m_implicit || m_lf[i]->getForceType() == BT_MOUSE_PICKING_FORCE)
{
m_lf[i]->addScaledElasticForceDifferential(-m_dt * m_dt, x, b);
}
@@ -176,7 +177,8 @@ void btDeformableBackwardEulerObjective::computeResidual(btScalar dt, TVStack& r
// add implicit force
for (int i = 0; i < m_lf.size(); ++i)
{
if (m_implicit)
// Always integrate picking force implicitly for stability.
if (m_implicit || m_lf[i]->getForceType() == BT_MOUSE_PICKING_FORCE)
{
m_lf[i]->addScaledForces(dt, residual);
}