divide by numWheelsOnGround, see hiker/https://github.com/bulletphysics/bullet3/issues/1400
This commit is contained in:
@@ -493,8 +493,8 @@ struct btWheelContactPoint
|
||||
|
||||
};
|
||||
|
||||
btScalar calcRollingFriction(btWheelContactPoint& contactPoint);
|
||||
btScalar calcRollingFriction(btWheelContactPoint& contactPoint)
|
||||
btScalar calcRollingFriction(btWheelContactPoint& contactPoint, int numWheelsOnGround);
|
||||
btScalar calcRollingFriction(btWheelContactPoint& contactPoint, int numWheelsOnGround)
|
||||
{
|
||||
|
||||
btScalar j1=0.f;
|
||||
@@ -513,7 +513,7 @@ btScalar calcRollingFriction(btWheelContactPoint& contactPoint)
|
||||
btScalar vrel = contactPoint.m_frictionDirectionWorld.dot(vel);
|
||||
|
||||
// calculate j that moves us to zero relative velocity
|
||||
j1 = -vrel * contactPoint.m_jacDiagABInv;
|
||||
j1 = -vrel * contactPoint.m_jacDiagABInv/btScalar(numWheelsOnGround);
|
||||
btSetMin(j1, maxImpulse);
|
||||
btSetMax(j1, -maxImpulse);
|
||||
|
||||
@@ -615,7 +615,8 @@ void btRaycastVehicle::updateFriction(btScalar timeStep)
|
||||
btScalar defaultRollingFrictionImpulse = 0.f;
|
||||
btScalar maxImpulse = wheelInfo.m_brake ? wheelInfo.m_brake : defaultRollingFrictionImpulse;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user