RavEngine
Loading...
Searching...
No Matches
physx::PxGeometryQuery Class Reference

Collection of geometry object queries (sweeps, raycasts, overlaps, ...). More...

#include <PxGeometryQuery.h>

Static Public Member Functions

static PX_PHYSX_COMMON_API PxU32 raycast (const PxVec3 &origin, const PxVec3 &unitDir, const PxGeometry &geom, const PxTransform &pose, PxReal maxDist, PxHitFlags hitFlags, PxU32 maxHits, PxGeomRaycastHit *PX_RESTRICT rayHits, PxU32 stride, PxGeometryQueryFlags queryFlags=PxGeometryQueryFlag::eDEFAULT, PxRaycastThreadContext *threadContext=NULL)
 Raycast test against a geometry object.
 
template<class HitT >
PX_DEPRECATED static PX_FORCE_INLINE PxU32 raycast (const PxVec3 &origin, const PxVec3 &unitDir, const PxGeometry &geom, const PxTransform &pose, PxReal maxDist, PxHitFlags hitFlags, PxU32 maxHits, HitT *PX_RESTRICT rayHits)
 Backward compatibility helper.
 
static PX_PHYSX_COMMON_API bool overlap (const PxGeometry &geom0, const PxTransform &pose0, const PxGeometry &geom1, const PxTransform &pose1, PxGeometryQueryFlags queryFlags=PxGeometryQueryFlag::eDEFAULT, PxOverlapThreadContext *threadContext=NULL)
 Overlap test for two geometry objects.
 
static PX_PHYSX_COMMON_API bool sweep (const PxVec3 &unitDir, const PxReal maxDist, const PxGeometry &geom0, const PxTransform &pose0, const PxGeometry &geom1, const PxTransform &pose1, PxGeomSweepHit &sweepHit, PxHitFlags hitFlags=PxHitFlag::eDEFAULT, const PxReal inflation=0.0f, PxGeometryQueryFlags queryFlags=PxGeometryQueryFlag::eDEFAULT, PxSweepThreadContext *threadContext=NULL)
 Sweep a specified geometry object in space and test for collision with a given object.
 
static PX_PHYSX_COMMON_API bool computePenetration (PxVec3 &direction, PxF32 &depth, const PxGeometry &geom0, const PxTransform &pose0, const PxGeometry &geom1, const PxTransform &pose1, PxGeometryQueryFlags queryFlags=PxGeometryQueryFlag::eDEFAULT)
 Compute minimum translational distance (MTD) between two geometry objects.
 
static PX_PHYSX_COMMON_API PxReal pointDistance (const PxVec3 &point, const PxGeometry &geom, const PxTransform &pose, PxVec3 *closestPoint=NULL, PxU32 *closestIndex=NULL, PxGeometryQueryFlags queryFlags=PxGeometryQueryFlag::eDEFAULT)
 Computes distance between a point and a geometry object.
 
static PX_PHYSX_COMMON_API void computeGeomBounds (PxBounds3 &bounds, const PxGeometry &geom, const PxTransform &pose, float offset=0.0f, float inflation=1.0f, PxGeometryQueryFlags queryFlags=PxGeometryQueryFlag::eDEFAULT)
 computes the bounds for a geometry object
 
PX_DEPRECATED static PX_PHYSX_COMMON_API PxBounds3 getWorldBounds (const PxGeometry &geom, const PxTransform &pose, float inflation=1.01f)
 get the bounds for a geometry object
 
static PX_PHYSX_COMMON_API bool generateTriangleContacts (const PxGeometry &geom, const PxTransform &pose, const PxVec3 triangleVertices[3], PxU32 triangleIndex, PxReal contactDistance, PxReal meshContactMargin, PxReal toleranceLength, PxContactBuffer &contactBuffer)
 Generate collision contacts between a convex geometry and a single triangle.
 
static PX_PHYSX_COMMON_API bool isValid (const PxGeometry &geom)
 Checks if provided geometry is valid.
 

Detailed Description

Collection of geometry object queries (sweeps, raycasts, overlaps, ...).

Member Function Documentation

◆ computeGeomBounds()

void PxGeometryQuery::computeGeomBounds ( PxBounds3 &  bounds,
const PxGeometry &  geom,
const PxTransform &  pose,
float  offset = 0.0f,
float  inflation = 1.0f,
PxGeometryQueryFlags  queryFlags = PxGeometryQueryFlag::eDEFAULT 
)
static

computes the bounds for a geometry object

Parameters
[out]boundsReturned computed bounds
[in]geomThe geometry object
[in]posePose of the geometry object
[in]offsetOffset for computed bounds. This value is added to the geom's extents.
[in]inflationScale factor for computed bounds. The geom's extents are multiplied by this value.
[in]queryFlagsOptional flags controlling the query.
See also
PxGeometry PxTransform

◆ computePenetration()

bool PxGeometryQuery::computePenetration ( PxVec3 &  direction,
PxF32 &  depth,
const PxGeometry &  geom0,
const PxTransform &  pose0,
const PxGeometry &  geom1,
const PxTransform &  pose1,
PxGeometryQueryFlags  queryFlags = PxGeometryQueryFlag::eDEFAULT 
)
static

Compute minimum translational distance (MTD) between two geometry objects.

All combinations of geom objects are supported except:

The function returns a unit vector ('direction') and a penetration depth ('depth').

The depenetration vector D = direction * depth should be applied to the first object, to get out of the second object.

Returned depth should always be positive or null.

If objects do not overlap, the function can not compute the MTD and returns false.

Parameters
[out]directionComputed MTD unit direction
[out]depthPenetration depth. Always positive or null.
[in]geom0The first geometry object
[in]pose0Pose of the first geometry object
[in]geom1The second geometry object
[in]pose1Pose of the second geometry object
[in]queryFlagsOptional flags controlling the query.
Returns
True if the MTD has successfully been computed, i.e. if objects do overlap.
See also
PxGeometry PxTransform

◆ generateTriangleContacts()

bool PxGeometryQuery::generateTriangleContacts ( const PxGeometry &  geom,
const PxTransform &  pose,
const PxVec3  triangleVertices[3],
PxU32  triangleIndex,
PxReal  contactDistance,
PxReal  meshContactMargin,
PxReal  toleranceLength,
PxContactBuffer &  contactBuffer 
)
static

Generate collision contacts between a convex geometry and a single triangle.

Parameters
[in]geomThe geometry object. Can be a capsule, a box or a convex mesh
[in]posePose of the geometry object
[in]triangleVerticesTriangle vertices in local space
[in]triangleIndexTriangle index
[in]contactDistanceThe distance at which contacts begin to be generated between the pairs
[in]meshContactMarginThe mesh contact margin.
[in]toleranceLengthThe toleranceLength. Used for scaling distance-based thresholds internally to produce appropriate results given simulations in different units
[out]contactBufferA buffer to write contacts to.
Returns
True if there was collision

◆ getWorldBounds()

PxBounds3 PxGeometryQuery::getWorldBounds ( const PxGeometry &  geom,
const PxTransform &  pose,
float  inflation = 1.01f 
)
static

get the bounds for a geometry object

Parameters
[in]geomThe geometry object
[in]posePose of the geometry object
[in]inflationScale factor for computed world bounds. Box extents are multiplied by this value.
Returns
The bounds of the object
See also
PxGeometry PxTransform
Deprecated:

◆ isValid()

bool PxGeometryQuery::isValid ( const PxGeometry &  geom)
static

Checks if provided geometry is valid.

Parameters
[in]geomThe geometry object.
Returns
True if geometry is valid.
See also
PxGeometry

◆ overlap()

bool PxGeometryQuery::overlap ( const PxGeometry &  geom0,
const PxTransform &  pose0,
const PxGeometry &  geom1,
const PxTransform &  pose1,
PxGeometryQueryFlags  queryFlags = PxGeometryQueryFlag::eDEFAULT,
PxOverlapThreadContext *  threadContext = NULL 
)
static

Overlap test for two geometry objects.

All combinations are supported except:

Parameters
[in]geom0The first geometry object
[in]pose0Pose of the first geometry object
[in]geom1The second geometry object
[in]pose1Pose of the second geometry object
[in]queryFlagsOptional flags controlling the query.
[in]threadContextOptional user-defined per-thread context.
Returns
True if the two geometry objects overlap
See also
PxGeometry PxTransform

◆ pointDistance()

PxReal PxGeometryQuery::pointDistance ( const PxVec3 &  point,
const PxGeometry &  geom,
const PxTransform &  pose,
PxVec3 *  closestPoint = NULL,
PxU32 *  closestIndex = NULL,
PxGeometryQueryFlags  queryFlags = PxGeometryQueryFlag::eDEFAULT 
)
static

Computes distance between a point and a geometry object.

Currently supported geometry objects: box, sphere, capsule, convex, mesh.

Note
For meshes, only the BVH34 midphase data-structure is supported.
Parameters
[in]pointThe point P
[in]geomThe geometry object
[in]posePose of the geometry object
[out]closestPointOptionally returned closest point to P on the geom object. Only valid when returned distance is strictly positive.
[out]closestIndexOptionally returned closest (triangle) index. Only valid for triangle meshes.
[in]queryFlagsOptional flags controlling the query.
Returns
Square distance between the point and the geom object, or 0.0 if the point is inside the object, or -1.0 if an error occured (geometry type is not supported, or invalid pose)
See also
PxGeometry PxTransform

◆ raycast() [1/2]

template<class HitT >
PX_DEPRECATED static PX_FORCE_INLINE PxU32 physx::PxGeometryQuery::raycast ( const PxVec3 &  origin,
const PxVec3 &  unitDir,
const PxGeometry &  geom,
const PxTransform &  pose,
PxReal  maxDist,
PxHitFlags  hitFlags,
PxU32  maxHits,
HitT *PX_RESTRICT  rayHits 
)
inlinestatic

Backward compatibility helper.

Deprecated:

◆ raycast() [2/2]

PxU32 PxGeometryQuery::raycast ( const PxVec3 &  origin,
const PxVec3 &  unitDir,
const PxGeometry &  geom,
const PxTransform &  pose,
PxReal  maxDist,
PxHitFlags  hitFlags,
PxU32  maxHits,
PxGeomRaycastHit *PX_RESTRICT  rayHits,
PxU32  stride,
PxGeometryQueryFlags  queryFlags = PxGeometryQueryFlag::eDEFAULT,
PxRaycastThreadContext *  threadContext = NULL 
)
static

Raycast test against a geometry object.

All geometry types are supported except PxParticleSystemGeometry, PxTetrahedronMeshGeometry and PxHairSystemGeometry.

Parameters
[in]originThe origin of the ray to test the geometry object against
[in]unitDirNormalized direction of the ray to test the geometry object against
[in]geomThe geometry object to test the ray against
[in]posePose of the geometry object
[in]maxDistMaximum ray length, has to be in the [0, inf) range
[in]hitFlagsSpecification of the kind of information to retrieve on hit. Combination of #PxHitFlag flags
[in]maxHitsmax number of returned hits = size of 'rayHits' buffer
[out]rayHitsRaycast hits information
[in]strideStride value (in number of bytes) for rayHits array. Typically sizeof(PxGeomRaycastHit) for packed arrays.
[in]queryFlagsOptional flags controlling the query.
[in]threadContextOptional user-defined per-thread context.
Returns
Number of hits between the ray and the geometry object
See also
PxGeomRaycastHit PxGeometry PxTransform

◆ sweep()

bool PxGeometryQuery::sweep ( const PxVec3 &  unitDir,
const PxReal  maxDist,
const PxGeometry &  geom0,
const PxTransform &  pose0,
const PxGeometry &  geom1,
const PxTransform &  pose1,
PxGeomSweepHit &  sweepHit,
PxHitFlags  hitFlags = PxHitFlag::eDEFAULT,
const PxReal  inflation = 0.0f,
PxGeometryQueryFlags  queryFlags = PxGeometryQueryFlag::eDEFAULT,
PxSweepThreadContext *  threadContext = NULL 
)
static

Sweep a specified geometry object in space and test for collision with a given object.

The following combinations are supported.

Parameters
[in]unitDirNormalized direction along which object geom0 should be swept
[in]maxDistMaximum sweep distance, has to be in the [0, inf) range
[in]geom0The geometry object to sweep. Supported geometries are #PxSphereGeometry, #PxCapsuleGeometry, #PxBoxGeometry and #PxConvexMeshGeometry
[in]pose0Pose of the geometry object to sweep
[in]geom1The geometry object to test the sweep against
[in]pose1Pose of the geometry object to sweep against
[out]sweepHitThe sweep hit information. Only valid if this method returns true.
[in]hitFlagsSpecify which properties per hit should be computed and written to result hit array. Combination of #PxHitFlag flags
[in]inflationSurface of the swept shape is additively extruded in the normal direction, rounding corners and edges.
[in]queryFlagsOptional flags controlling the query.
[in]threadContextOptional user-defined per-thread context.
Returns
True if the swept geometry object geom0 hits the object geom1
See also
PxGeomSweepHit PxGeometry PxTransform

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