PxComputeHeightFieldPenetration

Defined in include/extensions/PxTriangleMeshExt.h

bool PxComputeHeightFieldPenetration(PxVec3 &direction, PxReal &depth, const PxGeometry &geom, const PxTransform &geomPose, const PxHeightFieldGeometry &heightFieldGeom, const PxTransform &heightFieldPose, PxU32 maxIter, PxU32 *usedIter = NULL)

Computes an approximate minimum translational distance (MTD) between a geometry object and a heightfield.

This iterative function computes an approximate vector that can be used to depenetrate a geom object from a heightfield. Returned depenetration vector should be applied to ‘geom’, to get out of the heightfield.

The function works best when the amount of overlap between the geom object and the mesh is small. If the geom object’s center goes inside the heightfield, backface culling usually kicks in, no overlap is detected, and the function does not compute an MTD vector.

The function early exits if no overlap is detected after a depenetration attempt. This means that if maxIter = N, the code will attempt at most N iterations but it might exit earlier if depenetration has been successful. Usually N = 4 gives good results.

See also

PxGeometry PxTransform PxHeightFieldGeometry

Parameters
  • direction[out] Computed MTD unit direction

  • depth[out] Penetration depth. Always positive or zero.

  • geom[in] The geometry object

  • geomPose[in] Pose for the geometry object

  • heightFieldGeom[in] The heightfield geometry

  • heightFieldPose[in] Pose for the heightfield

  • maxIter[in] Max number of iterations before returning.

  • usedIter[out] Number of depenetrations attempts performed during the call. Will not be returned if the pointer is NULL.

Returns

True if the MTD has successfully been computed, i.e. if objects do overlap.