PxContactSet
Defined in include/PxContactModifyCallback.h
-
class PxContactSet
An array of contact points, as passed to contact modification.
The word ‘set’ in the name does not imply that duplicates are filtered in any way. This initial set of contacts does potentially get reduced to a smaller set before being passed to the solver.
You can use the accessors to read and write contact properties. The number of contacts is immutable, other than being able to disable contacts using ignore().
See also
PxContactModifyCallback, PxModifiableContact
Public Functions
-
inline const PxVec3 &getPoint(PxU32 i) const
Get the position of a specific contact point in the set.
See also
PxModifiableContact.point
- Parameters
i – [in] Index of the point in the set
- Returns
Position to the requested point in world space
-
inline void setPoint(PxU32 i, const PxVec3 &p)
Alter the position of a specific contact point in the set.
See also
PxModifiableContact.point
- Parameters
i – [in] Index of the point in the set
p – [in] The new position in world space
-
inline const PxVec3 &getNormal(PxU32 i) const
Get the contact normal of a specific contact point in the set.
See also
PxModifiableContact.normal
- Parameters
i – [in] Index of the point in the set
- Returns
The requested normal in world space
-
inline void setNormal(PxU32 i, const PxVec3 &n)
Alter the contact normal of a specific contact point in the set.
See also
PxModifiableContact.normal
Note
Changing the normal can cause contact points to be ignored.
- Parameters
i – [in] Index of the point in the set
n – [in] The new normal in world space
-
inline PxReal getSeparation(PxU32 i) const
Get the separation distance of a specific contact point in the set.
See also
PxModifiableContact.separation
- Parameters
i – [in] Index of the point in the set
- Returns
The separation. Negative implies penetration.
-
inline void setSeparation(PxU32 i, PxReal s)
Alter the separation of a specific contact point in the set.
See also
PxModifiableContact.separation
- Parameters
i – [in] Index of the point in the set
s – [in] The new separation
-
inline const PxVec3 &getTargetVelocity(PxU32 i) const
Get the target velocity of a specific contact point in the set.
See also
PxModifiableContact.targetVelocity
- Parameters
i – [in] Index of the point in the set
- Returns
The target velocity in world frame
-
inline void setTargetVelocity(PxU32 i, const PxVec3 &v)
Alter the target velocity of a specific contact point in the set.
See also
PxModifiableContact.targetVelocity
Note
The sign of the velocity needs to be flipped depending on the order of the actors in the pair. There is no guarantee about the consistency of the order from frame to frame.
- Parameters
i – [in] Index of the point in the set
v – [in] The new velocity in world frame as seen from the second actor in the contact pair, i.e., the solver will try to achieve targetVel == (vel1 - vel2)
-
inline PxU32 getInternalFaceIndex0(PxU32 i) const
Get the face index with respect to the first shape of the pair for a specific contact point in the set.
See also
PxModifiableContact.internalFaceIndex0
Note
At the moment, the first shape is never a tri-mesh, therefore this function always returns PXC_CONTACT_NO_FACE_INDEX
- Parameters
i – [in] Index of the point in the set
- Returns
The face index of the first shape
-
inline PxU32 getInternalFaceIndex1(PxU32 i) const
Get the face index with respect to the second shape of the pair for a specific contact point in the set.
See also
PxModifiableContact.internalFaceIndex1
- Parameters
i – [in] Index of the point in the set
- Returns
The face index of the second shape
-
inline PxReal getMaxImpulse(PxU32 i) const
Get the maximum impulse for a specific contact point in the set.
See also
PxModifiableContact.maxImpulse
- Parameters
i – [in] Index of the point in the set
- Returns
The maximum impulse
-
inline void setMaxImpulse(PxU32 i, PxReal s)
Alter the maximum impulse for a specific contact point in the set.
See also
PxModifiableContact.maxImpulse, ignore()
Note
Must be nonnegative. If set to zero, the contact point will be ignored
- Parameters
i – [in] Index of the point in the set
s – [in] The new maximum impulse
-
inline PxReal getRestitution(PxU32 i) const
Get the restitution coefficient for a specific contact point in the set.
See also
PxModifiableContact.restitution
- Parameters
i – [in] Index of the point in the set
- Returns
The restitution coefficient
-
inline void setRestitution(PxU32 i, PxReal r)
Alter the restitution coefficient for a specific contact point in the set.
See also
PxModifiableContact.restitution
Note
Valid ranges [0,1]
- Parameters
i – [in] Index of the point in the set
r – [in] The new restitution coefficient
-
inline PxReal getStaticFriction(PxU32 i) const
Get the static friction coefficient for a specific contact point in the set.
See also
PxModifiableContact.staticFriction
- Parameters
i – [in] Index of the point in the set
- Returns
The friction coefficient (dimensionless)
-
inline void setStaticFriction(PxU32 i, PxReal f)
Alter the static friction coefficient for a specific contact point in the set.
See also
PxModifiableContact.staticFriction
- Parameters
i – [in] Index of the point in the set
f – [in] The new friction coefficient (dimensionless), range [0, inf]
-
inline PxReal getDynamicFriction(PxU32 i) const
Get the static friction coefficient for a specific contact point in the set.
See also
PxModifiableContact.dynamicFriction
- Parameters
i – [in] Index of the point in the set
- Returns
The friction coefficient
-
inline void setDynamicFriction(PxU32 i, PxReal f)
Alter the static dynamic coefficient for a specific contact point in the set.
See also
PxModifiableContact.dynamicFriction
- Parameters
i – [in] Index of the point in the set
f – [in] The new friction coefficient
-
inline void ignore(PxU32 i)
Ignore the contact point.
If a contact point is ignored then no force will get applied at this point. This can be used to disable collision in certain areas of a shape, for example.
- Parameters
i – [in] Index of the point in the set
-
inline PxReal getInvMassScale0() const
Returns the invMassScale of body 0.
A value < 1.0 makes this contact treat the body as if it had larger mass. A value of 0.f makes this contact treat the body as if it had infinite mass. Any value > 1.f makes this contact treat the body as if it had smaller mass.
-
inline PxReal getInvMassScale1() const
Returns the invMassScale of body 1.
A value < 1.0 makes this contact treat the body as if it had larger mass. A value of 0.f makes this contact treat the body as if it had infinite mass. Any value > 1.f makes this contact treat the body as if it had smaller mass.
-
inline PxReal getInvInertiaScale0() const
Returns the invInertiaScale of body 0.
A value < 1.0 makes this contact treat the body as if it had larger inertia. A value of 0.f makes this contact treat the body as if it had infinite inertia. Any value > 1.f makes this contact treat the body as if it had smaller inertia.
-
inline PxReal getInvInertiaScale1() const
Returns the invInertiaScale of body 1.
A value < 1.0 makes this contact treat the body as if it had larger inertia. A value of 0.f makes this contact treat the body as if it had infinite inertia. Any value > 1.f makes this contact treat the body as if it had smaller inertia.
-
inline void setInvMassScale0(const PxReal scale)
Sets the invMassScale of body 0.
This can be set to any value in the range [0, PX_MAX_F32). A value < 1.0 makes this contact treat the body as if it had larger mass. A value of 0.f makes this contact treat the body as if it had infinite mass. Any value > 1.f makes this contact treat the body as if it had smaller mass.
- Parameters
scale – [in] The new scale
-
inline void setInvMassScale1(const PxReal scale)
Sets the invMassScale of body 1.
This can be set to any value in the range [0, PX_MAX_F32). A value < 1.0 makes this contact treat the body as if it had larger mass. A value of 0.f makes this contact treat the body as if it had infinite mass. Any value > 1.f makes this contact treat the body as if it had smaller mass.
- Parameters
scale – [in] The new scale
-
inline void setInvInertiaScale0(const PxReal scale)
Sets the invInertiaScale of body 0.
This can be set to any value in the range [0, PX_MAX_F32). A value < 1.0 makes this contact treat the body as if it had larger inertia. A value of 0.f makes this contact treat the body as if it had infinite inertia. Any value > 1.f makes this contact treat the body as if it had smaller inertia.
- Parameters
scale – [in] The new scale
-
inline void setInvInertiaScale1(const PxReal scale)
Sets the invInertiaScale of body 1.
This can be set to any value in the range [0, PX_MAX_F32). A value < 1.0 makes this contact treat the body as if it had larger inertia. A value of 0.f makes this contact treat the body as if it had infinite inertia. Any value > 1.f makes this contact treat the body as if it had smaller inertia.
- Parameters
scale – [in] The new scale
Protected Functions
-
inline PxContactPatch *getPatch() const
Protected Attributes
-
PxModifiableContact *mContacts
The contact points of the set.
-
inline const PxVec3 &getPoint(PxU32 i) const