fix maxLinMotorForce/maxAngMotorForce in btSliderConstraint
Thanks to Stephen Peters, see also https://github.com/bulletphysics/bullet3/pull/328
This commit is contained in:
@@ -155,7 +155,7 @@ class ForkLiftDemo : public ExampleInterface
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
btScalar maxMotorImpulse = 1400.f;
|
btScalar maxMotorImpulse = 4000.f;
|
||||||
|
|
||||||
//the sequential impulse solver has difficulties dealing with large mass ratios (differences), between loadMass and the fork parts
|
//the sequential impulse solver has difficulties dealing with large mass ratios (differences), between loadMass and the fork parts
|
||||||
btScalar loadMass = 350.f;//
|
btScalar loadMass = 350.f;//
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ class Hinge2Vehicle : public CommonRigidBodyBase
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static btScalar maxMotorImpulse = 1400.f;
|
static btScalar maxMotorImpulse = 4000.f;
|
||||||
|
|
||||||
//the sequential impulse solver has difficulties dealing with large mass ratios (differences), between loadMass and the fork parts
|
//the sequential impulse solver has difficulties dealing with large mass ratios (differences), between loadMass and the fork parts
|
||||||
static btScalar loadMass = 350.f;//
|
static btScalar loadMass = 350.f;//
|
||||||
|
|||||||
@@ -539,8 +539,8 @@ void btSliderConstraint::getInfo2NonVirtual(btConstraintInfo2* info, const btTra
|
|||||||
btScalar tag_vel = getTargetLinMotorVelocity();
|
btScalar tag_vel = getTargetLinMotorVelocity();
|
||||||
btScalar mot_fact = getMotorFactor(m_linPos, m_lowerLinLimit, m_upperLinLimit, tag_vel, info->fps * currERP);
|
btScalar mot_fact = getMotorFactor(m_linPos, m_lowerLinLimit, m_upperLinLimit, tag_vel, info->fps * currERP);
|
||||||
info->m_constraintError[srow] -= signFact * mot_fact * getTargetLinMotorVelocity();
|
info->m_constraintError[srow] -= signFact * mot_fact * getTargetLinMotorVelocity();
|
||||||
info->m_lowerLimit[srow] += -getMaxLinMotorForce() * info->fps;
|
info->m_lowerLimit[srow] += -getMaxLinMotorForce() / info->fps;
|
||||||
info->m_upperLimit[srow] += getMaxLinMotorForce() * info->fps;
|
info->m_upperLimit[srow] += getMaxLinMotorForce() / info->fps;
|
||||||
}
|
}
|
||||||
if(limit)
|
if(limit)
|
||||||
{
|
{
|
||||||
@@ -641,8 +641,8 @@ void btSliderConstraint::getInfo2NonVirtual(btConstraintInfo2* info, const btTra
|
|||||||
}
|
}
|
||||||
btScalar mot_fact = getMotorFactor(m_angPos, m_lowerAngLimit, m_upperAngLimit, getTargetAngMotorVelocity(), info->fps * currERP);
|
btScalar mot_fact = getMotorFactor(m_angPos, m_lowerAngLimit, m_upperAngLimit, getTargetAngMotorVelocity(), info->fps * currERP);
|
||||||
info->m_constraintError[srow] = mot_fact * getTargetAngMotorVelocity();
|
info->m_constraintError[srow] = mot_fact * getTargetAngMotorVelocity();
|
||||||
info->m_lowerLimit[srow] = -getMaxAngMotorForce() * info->fps;
|
info->m_lowerLimit[srow] = -getMaxAngMotorForce() / info->fps;
|
||||||
info->m_upperLimit[srow] = getMaxAngMotorForce() * info->fps;
|
info->m_upperLimit[srow] = getMaxAngMotorForce() / info->fps;
|
||||||
}
|
}
|
||||||
if(limit)
|
if(limit)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user