PxMassProperties
Defined in include/extensions/PxMassProperties.h
-
class PxMassProperties
Utility class to compute and manipulate mass and inertia tensor properties.
In most cases PxRigidBodyExt::updateMassAndInertia(), PxRigidBodyExt::setMassAndUpdateInertia() should be enough to setup the mass properties of a rigid body. This utility class targets users that need to customize the mass properties computation.
Public Functions
-
inline PxMassProperties()
Default constructor.
-
inline PxMassProperties(const PxReal m, const PxMat33 &inertiaT, const PxVec3 &com)
Construct from individual elements.
-
inline PxMassProperties(const PxGeometry &geometry)
Compute mass properties based on a provided geometry structure.
This constructor assumes the geometry has a density of 1. Mass and inertia tensor scale linearly with density.
- Parameters
geometry – [in] The geometry to compute the mass properties for. Supported geometry types are: sphere, box, capsule and convex mesh.
-
inline PxMassProperties operator*(const PxReal scale) const
Scale mass properties.
- Parameters
scale – [in] The linear scaling factor to apply to the mass properties.
- Returns
The scaled mass properties.
Public Members
Public Static Functions
-
static inline PxVec3 getMassSpaceInertia(const PxMat33 &inertia, PxQuat &massFrame)
Get the entries of the diagonalized inertia tensor and the corresponding reference rotation.
- Parameters
inertia – [in] The inertia tensor to diagonalize.
massFrame – [out] The frame the diagonalized tensor refers to.
- Returns
The entries of the diagonalized inertia tensor.
-
static inline PxMat33 translateInertia(const PxMat33 &inertia, const PxReal mass, const PxVec3 &t)
Translate an inertia tensor using the parallel axis theorem.
- Parameters
inertia – [in] The inertia tensor to translate.
mass – [in] The mass of the object.
t – [in] The relative frame to translate the inertia tensor to.
- Returns
The translated inertia tensor.
-
static inline PxMat33 rotateInertia(const PxMat33 &inertia, const PxQuat &q)
Rotate an inertia tensor around the center of mass.
- Parameters
inertia – [in] The inertia tensor to rotate.
q – [in] The rotation from the new to the old coordinate frame, i.e. q.rotate(v) transforms the coordinates of vector v from the old to the new coordinate frame.
- Returns
The rotated inertia tensor.
-
static inline PxMat33 scaleInertia(const PxMat33 &inertia, const PxQuat &scaleRotation, const PxVec3 &scale)
Non-uniform scaling of the inertia tensor.
- Parameters
inertia – [in] The inertia tensor to scale.
scaleRotation – [in] The rotation from the scaling frame to the frame that inertia is expressed in. I.e. scaleRotation.rotate(v) transforms the coordinates of vertex v from inertia’s frame to the scaling-axes frame.
scale – [in] The scaling factor for each axis (relative to the frame specified with scaleRotation).
- Returns
The scaled inertia tensor.
-
static inline PxMassProperties sum(const PxMassProperties *props, const PxTransform *transforms, const PxU32 count)
Sum up individual mass properties.
- Parameters
props – [in] Array of mass properties to sum up.
transforms – [in] Reference transforms for each mass properties entry.
count – [in] The number of mass properties to sum up.
- Returns
The summed up mass properties.
-
inline PxMassProperties()