Optionally enable infinite constraint error.

This commit is contained in:
stolk
2018-11-24 12:56:23 -08:00
parent 5dfcbe9a33
commit cec71341ad
2 changed files with 7 additions and 7 deletions

View File

@@ -860,12 +860,11 @@ int btGeneric6DofSpring2Constraint::get_limit_motor_info2(
// will we not request a velocity with the wrong direction ?
// and the answare is not, because in practice during the solving the current velocity is subtracted from the m_constraintError
// so the sign of the force that is really matters
#if 0
info->m_constraintError[srow] = (rotational ? -1 : 1) * (f < 0 ? -SIMD_INFINITY : SIMD_INFINITY);
#else
// Using infinite constraints makes the damping not work, and oscillate for ever.
info->m_constraintError[srow] = vel + f / m * (rotational ? -1 : 1);
#endif
// BEWARE! This whole approach has shown osciliation issues that prevent proper damping.
if ( m_flags & BT_6DOF_FLAGS_USE_INFINITE_ERROR )
info->m_constraintError[srow] = (rotational ? -1 : 1) * (f < 0 ? -SIMD_INFINITY : SIMD_INFINITY);
else
info->m_constraintError[srow] = vel + f / m * (rotational ? -1 : 1);
btScalar minf = f < fd ? f : fd;
btScalar maxf = f < fd ? fd : f;