PxConstraint

Defined in include/PxConstraint.h

class PxConstraint : public PxBase

A plugin class for implementing constraints.

See also

PxPhysics.createConstraint

Public Functions

virtual void release() = 0

Releases a PxConstraint instance.

See also

PxPhysics.createConstraint, PxBase.release()

Note

This call does not wake up the connected rigid bodies.

virtual PxScene *getScene() const = 0

Retrieves the scene which this constraint belongs to.

See also

PxScene

Returns

Owner Scene. NULL if not part of a scene.

virtual void getActors(PxRigidActor *&actor0, PxRigidActor *&actor1) const = 0

Retrieves the actors for this constraint.

See also

PxActor

Parameters
  • actor0[out] a reference to the pointer for the first actor

  • actor1[out] a reference to the pointer for the second actor

virtual void setActors(PxRigidActor *actor0, PxRigidActor *actor1) = 0

Sets the actors for this constraint.

See also

PxActor

Parameters
  • actor0[in] a reference to the pointer for the first actor

  • actor1[in] a reference to the pointer for the second actor

virtual void markDirty() = 0

Notify the scene that the constraint shader data has been updated by the application.

virtual PxConstraintFlags getFlags() const = 0

Retrieve the flags for this constraint.

See also

PxConstraintFlags

Returns

the constraint flags

virtual void setFlags(PxConstraintFlags flags) = 0

Set the flags for this constraint.

default: PxConstraintFlag::eDRIVE_LIMITS_ARE_FORCES

See also

PxConstraintFlags

Parameters

flags[in] the new constraint flags

virtual void setFlag(PxConstraintFlag::Enum flag, bool value) = 0

Set a flag for this constraint.

See also

PxConstraintFlags

Parameters
  • flag[in] the constraint flag

  • value[in] the new value of the flag

virtual void getForce(PxVec3 &linear, PxVec3 &angular) const = 0

Retrieve the constraint force most recently applied to maintain this constraint.

Note

It is not allowed to use this method while the simulation is running (except during PxScene::collide(), in PxContactModifyCallback or in contact report callbacks).

Parameters
  • linear[out] the constraint force

  • angular[out] the constraint torque

virtual bool isValid() const = 0

whether the constraint is valid.

A constraint is valid if it has at least one dynamic rigid body or articulation link. A constraint that is not valid may not be inserted into a scene, and therefore a static actor to which an invalid constraint is attached may not be inserted into a scene.

Invalid constraints arise only when an actor to which the constraint is attached has been deleted.

virtual void setBreakForce(PxReal linear, PxReal angular) = 0

Set the break force and torque thresholds for this constraint.

If either the force or torque measured at the constraint exceed these thresholds the constraint will break.

Parameters
  • linear[in] the linear break threshold

  • angular[in] the angular break threshold

virtual void getBreakForce(PxReal &linear, PxReal &angular) const = 0

Retrieve the constraint break force and torque thresholds.

Parameters
  • linear[out] the linear break threshold

  • angular[out] the angular break threshold

virtual void setMinResponseThreshold(PxReal threshold) = 0

Set the minimum response threshold for a constraint row.

When using mass modification for a joint or infinite inertia for a jointed body, very stiff solver constraints can be generated which can destabilize simulation. Setting this value to a small positive value (e.g. 1e-8) will cause constraint rows to be ignored if very large changes in impulses will generate only small changes in velocity. When setting this value, also set PxConstraintFlag::eDISABLE_PREPROCESSING. The solver accuracy for this joint may be reduced.

See also

PxConstraintFlag::eDISABLE_PREPROCESSING

Parameters

threshold[in] the minimum response threshold

virtual PxReal getMinResponseThreshold() const = 0

Retrieve the constraint break force and torque thresholds.

Returns

the minimum response threshold for a constraint row

virtual void *getExternalReference(PxU32 &typeID) = 0

Fetch external owner of the constraint.

Provides a reference to the external owner of a constraint and a unique owner type ID.

See also

PxConstraintConnector.getExternalReference()

Parameters

typeID[out] Unique type identifier of the external object.

Returns

Reference to the external object which owns the constraint.

virtual void setConstraintFunctions(PxConstraintConnector &connector, const PxConstraintShaderTable &shaders) = 0

Set the constraint functions for this constraint.

See also

PxConstraintConnector PxConstraintSolverPrep PxConstraintVisualize

Parameters
  • connector[in] the constraint connector object by which the SDK communicates with the constraint.

  • shaders[in] the shader table for the constraint

inline virtual const char *getConcreteTypeName() const final override

Returns string name of dynamic type.

Returns

Class name of most derived type of this object.

virtual PxConstraintResidual getSolverResidual() const = 0

Returns the residual for this constraint.

The residual represents the current error in this constraint measured as the delta impulse applied in the last velocity or position iteration. If the solver converges perfectly, the residual should approach zero.

See also

PxConstraintResidual

Returns

The residual for this constraint.

template<class T>
inline T *is()
template<class T>
inline const T *is() const
inline PxType getConcreteType() const

Returns concrete type of object.

See also

PxConcreteType

Returns

PxConcreteType::Enum of serialized object

inline void setBaseFlag(PxBaseFlag::Enum flag, bool value)

Set PxBaseFlag

Parameters
  • flag[in] The flag to be set

  • value[in] The flags new value

inline void setBaseFlags(PxBaseFlags inFlags)

Set PxBaseFlags

See also

PxBaseFlags

Parameters

inFlags[in] The flags to be set

inline PxBaseFlags getBaseFlags() const

Returns PxBaseFlags.

See also

PxBaseFlags

Returns

PxBaseFlags

inline virtual bool isReleasable() const

Whether the object is subordinate.

A class is subordinate, if it can only be instantiated in the context of another class.

See also

PxSerialization::isSerializable

Returns

Whether the class is subordinate

Public Members

void *userData

user can assign this to whatever, usually to create a 1:1 relationship with a user object.

Protected Functions

inline PxConstraint(PxType concreteType, PxBaseFlags baseFlags)
inline PxConstraint(PxBaseFlags baseFlags)
inline virtual ~PxConstraint()
inline virtual bool isKindOf(const char *name) const override

Returns whether a given type name matches with the type of this instance.

template<class T>
inline bool typeMatch() const

Protected Attributes

PxType mConcreteType
PxBaseFlags mBaseFlags
PxU32 mBuiltInRefCount