RaycastCCDManager
Defined in include/extensions/PxRaycastCCD.h
-
class RaycastCCDManager
Raycast-CCD manager.
Raycast-CCD is a simple and potentially cheaper alternative to the SDK’s built-in continuous collision detection algorithm.
This implementation has some limitations:
it is only implemented for PxRigidDynamic objects (not for PxArticulationLink)
it is only implemented for simple actors with 1 shape (not for “compounds”)
Also, since it is raycast-based, the solution is not perfect. In particular:
small dynamic objects can still go through the static world if the ray goes through a crack between edges, or a small hole in the world (like the keyhole from a door).
dynamic-vs-dynamic CCD is very approximate. It only works well for fast-moving dynamic objects colliding against slow-moving dynamic objects.
Finally, since it is using the SDK’s scene queries under the hood, it only works provided the simulation shapes also have scene-query shapes associated with them. That is, if the objects in the scene only use PxShapeFlag::eSIMULATION_SHAPE (and no PxShapeFlag::eSCENE_QUERY_SHAPE), then the raycast-CCD system will not work.
Public Functions
-
~RaycastCCDManager()
-
bool registerRaycastCCDObject(PxRigidDynamic *actor, PxShape *shape)
Register dynamic object for raycast CCD.
- Parameters
actor – [in] object’s actor
shape – [in] object’s shape
- Returns
True if success
-
bool unregisterRaycastCCDObject(PxRigidDynamic *actor, PxShape *shape)
Unregister dynamic object for raycast CCD.
- Parameters
actor – [in] object’s actor
shape – [in] object’s shape
- Returns
True if success
-
void doRaycastCCD(bool doDynamicDynamicCCD)
Perform raycast CCD.
Call this after your simulate/fetchResults calls.
- Parameters
doDynamicDynamicCCD – [in] True to enable dynamic-vs-dynamic CCD (more expensive, not always needed)