A btRigidBody with all zero m_linearFactor but non-zero m_angularFactor should still collide with other static objects which changes the angular velocity. But due to the code in btSequentialImpulseConstraintSolver.cpp:
solverBody->internalSetInvMass(btVector3(rb->getInvMass(), rb->getInvMass(), rb->getInvMass()) * rb->getLinearFactor()); in btSequentialImpulseConstraintSolver::initSolverBody
and
if (!solverBodyA || (solverBodyA->m_invMass.fuzzyZero() && (!solverBodyB || solverBodyB->m_invMass.fuzzyZero()))) in btSequentialImpulseConstraintSolver::convertContact
the collision will not occur
A
btRigidBody
with all zerom_linearFactor
but non-zerom_angularFactor
should still collide with other static objects which changes the angular velocity. But due to the code in btSequentialImpulseConstraintSolver.cpp:solverBody->internalSetInvMass(btVector3(rb->getInvMass(), rb->getInvMass(), rb->getInvMass()) * rb->getLinearFactor());
inbtSequentialImpulseConstraintSolver::initSolverBody
andif (!solverBodyA || (solverBodyA->m_invMass.fuzzyZero() && (!solverBodyB || solverBodyB->m_invMass.fuzzyZero())))
inbtSequentialImpulseConstraintSolver::convertContact
the collision will not occur