This commit is contained in:
Erwin Coumans
2017-11-07 19:41:14 -08:00
parent 344005a8f0
commit 378020f864

View File

@@ -493,8 +493,8 @@ struct btWheelContactPoint
}; };
btScalar calcRollingFriction(btWheelContactPoint& contactPoint); btScalar calcRollingFriction(btWheelContactPoint& contactPoint, int numWheelsOnGround);
btScalar calcRollingFriction(btWheelContactPoint& contactPoint) btScalar calcRollingFriction(btWheelContactPoint& contactPoint, int numWheelsOnGround)
{ {
btScalar j1=0.f; btScalar j1=0.f;
@@ -513,7 +513,7 @@ btScalar calcRollingFriction(btWheelContactPoint& contactPoint)
btScalar vrel = contactPoint.m_frictionDirectionWorld.dot(vel); btScalar vrel = contactPoint.m_frictionDirectionWorld.dot(vel);
// calculate j that moves us to zero relative velocity // calculate j that moves us to zero relative velocity
j1 = -vrel * contactPoint.m_jacDiagABInv; j1 = -vrel * contactPoint.m_jacDiagABInv/btScalar(numWheelsOnGround);
btSetMin(j1, maxImpulse); btSetMin(j1, maxImpulse);
btSetMax(j1, -maxImpulse); btSetMax(j1, -maxImpulse);
@@ -615,7 +615,8 @@ void btRaycastVehicle::updateFriction(btScalar timeStep)
btScalar defaultRollingFrictionImpulse = 0.f; btScalar defaultRollingFrictionImpulse = 0.f;
btScalar maxImpulse = wheelInfo.m_brake ? wheelInfo.m_brake : defaultRollingFrictionImpulse; btScalar maxImpulse = wheelInfo.m_brake ? wheelInfo.m_brake : defaultRollingFrictionImpulse;
btWheelContactPoint contactPt(m_chassisBody,groundObject,wheelInfo.m_raycastInfo.m_contactPointWS,m_forwardWS[wheel],maxImpulse); btWheelContactPoint contactPt(m_chassisBody,groundObject,wheelInfo.m_raycastInfo.m_contactPointWS,m_forwardWS[wheel],maxImpulse);
rollingFriction = calcRollingFriction(contactPt)/btScalar(getNumWheels()); btAssert(numWheelsOnGround > 0);
rollingFriction = calcRollingFriction(contactPt, numWheelsOnGround);
} }
} }