PxArticulation Class Referenceabstract

a tree structure of bodies connected by joints that is treated as a unit by the dynamics solver More...

#include <PxArticulation.h>

Inheritance diagram for PxArticulation:
Collaboration diagram for PxArticulation:

Public Member Functions

virtual void release ()=0
 Releases the PxBase instance, please check documentation of release in derived class. More...
 
virtual void setMaxProjectionIterations (PxU32 iterations)=0
 sets maxProjectionIterations. More...
 
virtual PxU32 getMaxProjectionIterations () const =0
 gets maxProjectionIterations. More...
 
virtual void setSeparationTolerance (PxReal tolerance)=0
 sets separationTolerance. More...
 
virtual PxReal getSeparationTolerance () const =0
 gets separationTolerance. More...
 
virtual void setInternalDriveIterations (PxU32 iterations)=0
 sets the number of iterations used to compute the drive response to internal forces More...
 
virtual PxU32 getInternalDriveIterations () const =0
 gets internal driveIterations. More...
 
virtual void setExternalDriveIterations (PxU32 iterations)=0
 sets the number of iterations for drive response to external forces. More...
 
virtual PxU32 getExternalDriveIterations () const =0
 gets externalDriveIterations. More...
 
virtual PxArticulationDriveCachecreateDriveCache (PxReal compliance, PxU32 driveIterations) const =0
 create a drive cache for applying impulses which are propagated to the entire articulation More...
 
virtual void updateDriveCache (PxArticulationDriveCache &driveCache, PxReal compliance, PxU32 driveIterations) const =0
 update a drive cache More...
 
virtual void releaseDriveCache (PxArticulationDriveCache &driveCache) const =0
 release a drive cache More...
 
virtual void applyImpulse (PxArticulationLink *link, const PxArticulationDriveCache &driveCache, const PxVec3 &linearImpulse, const PxVec3 &angularImpulse)=0
 apply an impulse to an entire articulation More...
 
virtual void computeImpulseResponse (PxArticulationLink *link, PxVec3 &linearResponse, PxVec3 &angularResponse, const PxArticulationDriveCache &driveCache, const PxVec3 &linearImpulse, const PxVec3 &angularImpulse) const =0
 determine the effect of applying an impulse to an entire articulation, without applying the impulse More...
 
- Public Member Functions inherited from PxArticulationBase
virtual PxScenegetScene () const =0
 Retrieves the scene which this articulation belongs to. More...
 
virtual void setSolverIterationCounts (PxU32 minPositionIters, PxU32 minVelocityIters=1)=0
 Sets the solver iteration counts for the articulation. More...
 
virtual void getSolverIterationCounts (PxU32 &minPositionIters, PxU32 &minVelocityIters) const =0
 Retrieves the solver iteration counts. More...
 
virtual bool isSleeping () const =0
 Returns true if this articulation is sleeping. More...
 
virtual void setSleepThreshold (PxReal threshold)=0
 Sets the mass-normalized energy threshold below which an articulation may go to sleep. More...
 
virtual PxReal getSleepThreshold () const =0
 Returns the mass-normalized energy below which an articulation may go to sleep. More...
 
virtual void setStabilizationThreshold (PxReal threshold)=0
 Sets the mass-normalized kinetic energy threshold below which an articulation may participate in stabilization. More...
 
virtual PxReal getStabilizationThreshold () const =0
 Returns the mass-normalized kinetic energy below which an articulation may participate in stabilization. More...
 
virtual void setWakeCounter (PxReal wakeCounterValue)=0
 Sets the wake counter for the articulation. More...
 
virtual PxReal getWakeCounter () const =0
 Returns the wake counter of the articulation. More...
 
virtual void wakeUp ()=0
 Wakes up the articulation if it is sleeping. More...
 
virtual void putToSleep ()=0
 Forces the articulation to sleep. More...
 
virtual PxArticulationLinkcreateLink (PxArticulationLink *parent, const PxTransform &pose)=0
 adds a link to the articulation with default attribute values. More...
 
virtual PxU32 getNbLinks () const =0
 returns the number of links in the articulation More...
 
virtual PxU32 getLinks (PxArticulationLink **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 returns the set of links in the articulation More...
 
virtual void setName (const char *name)=0
 Sets a name string for the object that can be retrieved with getName(). More...
 
virtual const char * getName () const =0
 Retrieves the name string set with setName(). More...
 
virtual PxBounds3 getWorldBounds (float inflation=1.01f) const =0
 Retrieves the axis aligned bounding box enclosing the articulation. More...
 
virtual PxAggregategetAggregate () const =0
 Retrieves the aggregate the articulation might be a part of. More...
 
virtual PxArticulationImpl * getImpl ()=0
 
virtual const PxArticulationImpl * getImpl () const =0
 
virtual ~PxArticulationBase ()
 
virtual PxArticulationJointBasecreateArticulationJoint (PxArticulationLink &parent, const PxTransform &parentFrame, PxArticulationLink &child, const PxTransform &childFrame)=0
 
virtual void releaseArticulationJoint (PxArticulationJointBase *joint)=0
 
- Public Member Functions inherited from PxBase
virtual const char * getConcreteTypeName () const =0
 Returns string name of dynamic type. More...
 
template<class T >
T * is ()
 
template<class T >
const T * is () const
 
PX_FORCE_INLINE PxType getConcreteType () const
 Returns concrete type of object. More...
 
PX_FORCE_INLINE void setBaseFlag (PxBaseFlag::Enum flag, bool value)
 Set PxBaseFlag. More...
 
PX_FORCE_INLINE void setBaseFlags (PxBaseFlags inFlags)
 Set PxBaseFlags. More...
 
PX_FORCE_INLINE PxBaseFlags getBaseFlags () const
 Returns PxBaseFlags. More...
 
virtual bool isReleasable () const
 Whether the object is subordinate. More...
 

Protected Member Functions

PX_INLINE PxArticulation (PxType concreteType, PxBaseFlags baseFlags)
 
PX_INLINE PxArticulation (PxBaseFlags baseFlags)
 
virtual ~PxArticulation ()
 
- Protected Member Functions inherited from PxArticulationBase
PX_INLINE PxArticulationBase (PxType concreteType, PxBaseFlags baseFlags)
 
PX_INLINE PxArticulationBase (PxBaseFlags baseFlags)
 
- Protected Member Functions inherited from PxBase
PX_INLINE PxBase (PxType concreteType, PxBaseFlags baseFlags)
 Constructor setting concrete type and base flags. More...
 
PX_INLINE PxBase (PxBaseFlags baseFlags)
 Deserialization constructor setting base flags. More...
 
virtual ~PxBase ()
 Destructor. More...
 
virtual bool isKindOf (const char *superClass) const
 Returns whether a given type name matches with the type of this instance. More...
 
template<class T >
bool typeMatch () const
 

Additional Inherited Members

- Public Attributes inherited from PxArticulationBase
void * userData
 user can assign this to whatever, usually to create a 1:1 relationship with a user object. More...
 
- Protected Attributes inherited from PxBase
PxType mConcreteType
 
PxBaseFlags mBaseFlags
 

Detailed Description

a tree structure of bodies connected by joints that is treated as a unit by the dynamics solver

Articulations are more expensive to simulate than the equivalent collection of PxRigidDynamic and PxJoint structures, but because the dynamics solver treats each articulation as a single object, they are much less prone to separation and have better support for actuation. An articulation may have at most 64 links.

See also
PxArticulationJoint PxArticulationLink PxPhysics.createArticulation

Constructor & Destructor Documentation

◆ PxArticulation() [1/2]

PX_INLINE PxArticulation::PxArticulation ( PxType  concreteType,
PxBaseFlags  baseFlags 
)
inlineprotected

◆ PxArticulation() [2/2]

PX_INLINE PxArticulation::PxArticulation ( PxBaseFlags  baseFlags)
inlineprotected

◆ ~PxArticulation()

virtual PxArticulation::~PxArticulation ( )
inlineprotectedvirtual

Member Function Documentation

◆ applyImpulse()

virtual void PxArticulation::applyImpulse ( PxArticulationLink link,
const PxArticulationDriveCache driveCache,
const PxVec3 linearImpulse,
const PxVec3 angularImpulse 
)
pure virtual

apply an impulse to an entire articulation

Parameters
[in]linkthe link to which to apply the impulse
[in]driveCachethe drive cache
[in]linearImpulsethe linear impulse to apply
[in]angularImpulsethe angular impulse to apply
See also
computeImpulseResponse
Note
this call may only be made on articulations that are in a scene, and may not be made during simulation

◆ computeImpulseResponse()

virtual void PxArticulation::computeImpulseResponse ( PxArticulationLink link,
PxVec3 linearResponse,
PxVec3 angularResponse,
const PxArticulationDriveCache driveCache,
const PxVec3 linearImpulse,
const PxVec3 angularImpulse 
) const
pure virtual

determine the effect of applying an impulse to an entire articulation, without applying the impulse

Parameters
[in]linkthe link to which to apply the impulse
[out]linearResponsethe change in linear velocity of the articulation link
[out]angularResponsethe change in angular velocity of the articulation link
[in]driveCachethe drive cache
[in]linearImpulsethe linear impulse to apply
[in]angularImpulsethe angular impulse to apply
See also
applyImpulse

This call will wake up the articulation if it is asleep.

Note
this call may only be made on articulations that are in a scene, and may not be made during simulation

◆ createDriveCache()

virtual PxArticulationDriveCache* PxArticulation::createDriveCache ( PxReal  compliance,
PxU32  driveIterations 
) const
pure virtual

create a drive cache for applying impulses which are propagated to the entire articulation

Parameters
[in]compliancethe compliance value to use at all joints of the articulation. This is equivalent to the external compliance parameter for articulation joints, as the impulse is treated as an external force
[in]driveIterationsthe number of iterations to use to evaluate the drive strengths
Returns
a drive cache
See also
PxArticulationDriveCache updateDriveCache releaseDriveCache applyImpulse computeImpulseResponse
Note
this call may only be made on articulations that are in a scene, and may not be made during simulation

◆ getExternalDriveIterations()

virtual PxU32 PxArticulation::getExternalDriveIterations ( ) const
pure virtual

gets externalDriveIterations.

Returns
the number of iterations used to compute the drive response to external forces
See also
setExternalDriveIterations()

◆ getInternalDriveIterations()

virtual PxU32 PxArticulation::getInternalDriveIterations ( ) const
pure virtual

gets internal driveIterations.

Returns
the number of iterations used to compute the drive response to internal forces
See also
setInternalDriveIterations()

◆ getMaxProjectionIterations()

virtual PxU32 PxArticulation::getMaxProjectionIterations ( ) const
pure virtual

gets maxProjectionIterations.

Returns
the maximum number of projection iterations
See also
setMaxProjectionIterations()

◆ getSeparationTolerance()

virtual PxReal PxArticulation::getSeparationTolerance ( ) const
pure virtual

gets separationTolerance.

Returns
the separation tolerance
See also
setSeparationTolerance()

◆ release()

virtual void PxArticulation::release ( )
pure virtual

Releases the PxBase instance, please check documentation of release in derived class.

Implements PxBase.

◆ releaseDriveCache()

virtual void PxArticulation::releaseDriveCache ( PxArticulationDriveCache driveCache) const
pure virtual

release a drive cache

Parameters
[in]driveCachethe drive cache to release
See also
createDriveCache updateDriveCache

◆ setExternalDriveIterations()

virtual void PxArticulation::setExternalDriveIterations ( PxU32  iterations)
pure virtual

sets the number of iterations for drive response to external forces.

The drive model uses an iterative algorithm to determine the load on each joint of the articulation. This is the number of iterations to use when computing response of the drive to external forces.

Parameters
[in]iterationsthe number of iterations used to compute the drive response to external forces.

Default: 4

See also
getExternalDriveIterations()

◆ setInternalDriveIterations()

virtual void PxArticulation::setInternalDriveIterations ( PxU32  iterations)
pure virtual

sets the number of iterations used to compute the drive response to internal forces

The drive model uses an iterative algorithm to determine the load on each joint of the articulation. This is the number of iterations to use when computing response of the drive to internal forces.

Parameters
[in]iterationsthe number of iterations used to compute the drive response to internal forces.

Default: 4

See also
getInternalDriveIterations()

◆ setMaxProjectionIterations()

virtual void PxArticulation::setMaxProjectionIterations ( PxU32  iterations)
pure virtual

sets maxProjectionIterations.

This is the maximum number of iterations to run projection on the articulation to bring the links back together if the separation tolerance is exceeded.

Parameters
[in]iterationsthe maximum number of projection iterations Default: 4
See also
getMaxProjectionIterations()

◆ setSeparationTolerance()

virtual void PxArticulation::setSeparationTolerance ( PxReal  tolerance)
pure virtual

sets separationTolerance.

This is the maximum allowed separation of any joint in the articulation before projection is used

Default: 0.1f, scaled by the tolerance scale

Parameters
[in]tolerancethe separation tolerance for the articulation
See also
getSeparationTolerance()

◆ updateDriveCache()

virtual void PxArticulation::updateDriveCache ( PxArticulationDriveCache driveCache,
PxReal  compliance,
PxU32  driveIterations 
) const
pure virtual

update a drive cache

Parameters
[in]driveCachethe drive cache to update
[in]compliancethe compliance value to use at all joints of the articulation.
[in]driveIterationsthe number of iterations to use to evaluate the drive strengths
See also
releaseDriveCache createDriveCache applyImpulse computeImpulseResponse
Note
this call may only be made on articulations that are in a scene, and may not be made during simulation

The documentation for this class was generated from the following file: