#include <PxVehicleComponents.h>
Public Member Functions | |
PxVehicleSuspensionData () | |
PX_FORCE_INLINE PxReal | getRecipMaxCompression () const |
Reciprocal of maximum compression. | |
PX_FORCE_INLINE PxReal | getRecipMaxDroop () const |
Reciprocal of maximum droop. | |
void | setMassAndPreserveNaturalFrequency (const PxReal newSprungMass) |
Set a new sprung mass for the suspension and modify the spring strength so that the natural frequency of the spring is preserved. | |
Public Attributes | |
PxReal | mSpringStrength |
Spring strength of suspension unit. | |
PxReal | mSpringDamperRate |
Spring damper rate of suspension unit. | |
PxReal | mMaxCompression |
Maximum compression allowed by suspension spring. | |
PxReal | mMaxDroop |
Maximum elongation allowed by suspension spring. | |
PxReal | mSprungMass |
Mass of vehicle that is supported by suspension spring. | |
PxReal | mCamberAtRest |
Camber angle (in radians) of wheel when the suspension is at its rest position. | |
PxReal | mCamberAtMaxCompression |
Camber angle (in radians) of wheel when the suspension is at maximum compression. | |
PxReal | mCamberAtMaxDroop |
Camber angle (in radians) of wheel when the suspension is at maximum droop. | |
Private Member Functions | |
bool | isValid () const |
Private Attributes | |
PxReal | mRecipMaxCompression |
Cached value of 1.0f/mMaxCompression. | |
PxReal | mRecipMaxDroop |
Cached value of 1.0f/mMaxDroop. | |
PxReal | mPad [2] |
Friends | |
class | PxVehicleWheels4SimData |
PxVehicleSuspensionData::PxVehicleSuspensionData | ( | ) | [inline] |
PX_FORCE_INLINE PxReal PxVehicleSuspensionData::getRecipMaxCompression | ( | ) | const [inline] |
Reciprocal of maximum compression.
PX_FORCE_INLINE PxReal PxVehicleSuspensionData::getRecipMaxDroop | ( | ) | const [inline] |
Reciprocal of maximum droop.
bool PxVehicleSuspensionData::isValid | ( | ) | const [private] |
void PxVehicleSuspensionData::setMassAndPreserveNaturalFrequency | ( | const PxReal | newSprungMass | ) | [inline] |
Set a new sprung mass for the suspension and modify the spring strength so that the natural frequency of the spring is preserved.
[in] | newSprungMass | is the new mass that the suspension spring will support. |
friend class PxVehicleWheels4SimData [friend] |
Camber angle (in radians) of wheel when the suspension is at maximum compression.
Specified in radians.
Camber angle (in radians) of wheel when the suspension is at maximum droop.
Specified in radians.
Camber angle (in radians) of wheel when the suspension is at its rest position.
Maximum compression allowed by suspension spring.
Maximum elongation allowed by suspension spring.
PxReal PxVehicleSuspensionData::mPad[2] [private] |
PxReal PxVehicleSuspensionData::mRecipMaxCompression [private] |
Cached value of 1.0f/mMaxCompression.
PxReal PxVehicleSuspensionData::mRecipMaxDroop [private] |
Cached value of 1.0f/mMaxDroop.
Spring damper rate of suspension unit.
Spring strength of suspension unit.
Mass of vehicle that is supported by suspension spring.
Each suspension is guaranteed to generate an upwards force of |gravity|*mSprungMass along the suspension direction when the wheel is perfectly at rest and sitting at the rest pose defined by the wheel centre offset.
The sum of the sprung masses of all suspensions of a vehicle should match the mass of the PxRigidDynamic associated with the vehicle. When this condition is satisfied for a vehicle on a horizontal plane the wheels of the vehicle are guaranteed to sit at the rest pose defined by the wheel centre offset. The mass matching condition is not enforced.
As the wheel compresses or elongates along the suspension direction the force generated by the spring is F = |gravity|*mSprungMass + deltaX*mSpringStrength + deltaXDot*mSpringDamperRate where deltaX is the deviation from the defined rest pose and deltaXDot is the velocity of the sprung mass along the suspension direction. In practice, deltaXDot is computed by comparing the current and previous deviation from the rest pose and dividing the difference by the simulation timestep.
If a single suspension spring is hanging in the air and generates zero force the remaining springs of the vehicle will necessarily sit in a compressed configuration. In summary, the sum of the remaining suspension forces cannot balance the downwards gravitational force acting on the vehicle without extra force arising from the deltaX*mSpringStrength force term.
Theoretically, a suspension spring should generate zero force at maximum elongation and increase linearly as the suspension approaches the rest pose. PxVehicleSuspensionData will only enforce this physical law if the spring is configured so that |gravity|*mSprungMass == mMaxDroop*mSpringStrength. To help decouple vehicle handling from visual wheel positioning this condition is not enforced. In practice, the value of |gravity|*mSprungMass + deltaX*mSpringStrength is clamped at zero to ensure it never falls negative.