RavEngine
Loading...
Searching...
No Matches
physx::Gu::BV4TriangleMesh Class Reference
Inheritance diagram for physx::Gu::BV4TriangleMesh:
[legend]
Collaboration diagram for physx::Gu::BV4TriangleMesh:
[legend]

Public Member Functions

virtual const char * getConcreteTypeName () const
 Returns string name of dynamic type.
 
 BV4TriangleMesh (PxBaseFlags baseFlags)
 
virtual PX_PHYSX_COMMON_API void exportExtraData (PxSerializationContext &ctx)
 
void importExtraData (PxDeserializationContext &)
 
 BV4TriangleMesh (MeshFactory *factory, TriangleMeshData &data)
 
virtual PxMeshMidPhase::Enum getMidphaseID () const
 
virtual PxVec3 * getVerticesForModification ()
 Returns all mesh vertices for modification.
 
virtual PxBounds3 refitBVH ()
 Refits BVH for mesh vertices.
 
PX_PHYSX_COMMON_API BV4TriangleMesh (const PxTriangleMeshInternalData &data)
 
virtual bool getInternalData (PxTriangleMeshInternalData &, bool) const
 
PX_FORCE_INLINE const Gu::BV4Tree & getBV4Tree () const
 
- Public Member Functions inherited from physx::Gu::TriangleMesh
 TriangleMesh (PxBaseFlags baseFlags)
 
void preExportDataReset ()
 
void importExtraData (PxDeserializationContext &context)
 
virtual void release ()
 Decrements the reference count of a triangle mesh and releases it if the new reference count is zero.

 
virtual void requiresObjects (PxProcessPxBaseCallback &)
 
 TriangleMesh (MeshFactory *factory, TriangleMeshData &data)
 
 TriangleMesh (const PxTriangleMeshInternalData &data)
 
virtual void onRefCountZero ()
 
virtual void acquireReference ()
 Acquires a counted reference to this object.
 
virtual PxU32 getReferenceCount () const
 Returns the reference count of the object.
 
virtual PxU32 getNbVertices () const
 Returns the number of vertices.
 
virtual const PxVec3 * getVertices () const
 Returns the vertices.
 
virtual PxU32 getNbTriangles () const
 Returns the number of triangles.
 
virtual const void * getTriangles () const
 Returns the triangle indices.
 
virtual PxTriangleMeshFlags getTriangleMeshFlags () const
 Reads the PxTriangleMesh flags.
 
virtual const PxU32 * getTrianglesRemap () const
 Returns the triangle remapping table.
 
virtual void setPreferSDFProjection (bool preferProjection)
 Sets whether this mesh should be preferred for SDF projection.
 
virtual bool getPreferSDFProjection () const
 Returns whether this mesh prefers SDF projection.
 
virtual PxMaterialTableIndex getTriangleMaterialIndex (PxTriangleID triangleIndex) const
 Returns material table index of given triangle.
 
virtual PxBounds3 getLocalBounds () const
 Returns the local-space (vertex space) AABB from the triangle mesh.
 
virtual const PxReal * getSDF () const
 Returns the local-space Signed Distance Field for this mesh if it has one.
 
virtual void getSDFDimensions (PxU32 &numX, PxU32 &numY, PxU32 &numZ) const
 Returns the resolution of the local-space dense SDF.
 
virtual void getMassInformation (PxReal &mass, PxMat33 &localInertia, PxVec3 &localCenterOfMass) const
 Returns the mass properties of the mesh assuming unit density.
 
PX_FORCE_INLINE const PxU32 * getFaceRemap () const
 
PX_FORCE_INLINE bool has16BitIndices () const
 
PX_FORCE_INLINE bool hasPerTriangleMaterials () const
 
PX_FORCE_INLINE PxU32 getNbVerticesFast () const
 
PX_FORCE_INLINE PxU32 getNbTrianglesFast () const
 
PX_FORCE_INLINE const void * getTrianglesFast () const
 
PX_FORCE_INLINE const PxVec3 * getVerticesFast () const
 
PX_FORCE_INLINE const PxU32 * getAdjacencies () const
 
PX_FORCE_INLINE PxReal getGeomEpsilon () const
 
PX_FORCE_INLINE const CenterExtents & getLocalBoundsFast () const
 
PX_FORCE_INLINE const PxU16 * getMaterials () const
 
PX_FORCE_INLINE const PxU8 * getExtraTrigData () const
 
PX_FORCE_INLINE const PxU32 * getAccumulatedTriangleRef () const
 
PX_FORCE_INLINE const PxU32 * getTriangleReferences () const
 
PX_FORCE_INLINE PxU32 getNbTriangleReferences () const
 
PX_FORCE_INLINE const CenterExtentsPadded & getPaddedBounds () const
 
PX_FORCE_INLINE void computeWorldTriangle (PxTriangle &worldTri, PxTriangleID triangleIndex, const PxMat34 &worldMatrix, bool flipNormal=false, PxU32 *PX_RESTRICT vertexIndices=NULL, PxU32 *PX_RESTRICT adjacencyIndices=NULL) const
 
PX_FORCE_INLINE void getLocalTriangle (PxTriangle &localTri, PxTriangleID triangleIndex, bool flipNormal=false) const
 
void setMeshFactory (MeshFactory *factory)
 
PX_FORCE_INLINE const SDF & getSdfDataFast () const
 
PX_FORCE_INLINE PxReal getMass () const
 
PX_PHYSX_COMMON_API const Gu::EdgeList * requestEdgeList () const
 
void setAllEdgesActive ()
 
- Public Member Functions inherited from physx::PxBase
template<class T >
T * is ()
 
template<class T >
const T * is () const
 
PX_FORCE_INLINE PxType getConcreteType () const
 Returns concrete type of object.
 
PX_FORCE_INLINE void setBaseFlag (PxBaseFlag::Enum flag, bool value)
 Set PxBaseFlag

 
PX_FORCE_INLINE void setBaseFlags (PxBaseFlags inFlags)
 Set PxBaseFlags

 
PX_FORCE_INLINE PxBaseFlags getBaseFlags () const
 Returns PxBaseFlags.
 
virtual bool isReleasable () const
 Whether the object is subordinate.
 
- Public Member Functions inherited from physx::PxUserAllocated
PX_INLINE void * operator new (size_t, void *address)
 
PX_INLINE void operator delete (void *, void *)
 
template<typename Alloc >
PX_INLINE void * operator new (size_t size, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void * operator new (size_t size, size_t, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void * operator new[] (size_t size, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void * operator new[] (size_t size, size_t, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void operator delete (void *ptr, Alloc alloc, const char *fileName, int line)
 
template<typename Alloc >
PX_INLINE void operator delete[] (void *ptr, Alloc alloc, const char *fileName, int line)
 
PX_INLINE void operator delete (void *ptr)
 
PX_INLINE void operator delete[] (void *ptr)
 

Static Public Member Functions

static PX_PHYSX_COMMON_API TriangleMesh * createObject (PxU8 *&address, PxDeserializationContext &context)
 
static PX_PHYSX_COMMON_API void getBinaryMetaData (PxOutputStream &stream)
 
- Static Public Member Functions inherited from physx::Gu::TriangleMesh
static PX_PHYSX_COMMON_API void getBinaryMetaData (PxOutputStream &stream)
 

Additional Inherited Members

- Public Attributes inherited from physx::Gu::TriangleMesh
void * mGRB_triIndices
 GRB: GPU-friendly tri indices.
 
void * mGRB_triAdjacencies
 GRB: adjacency data, with BOUNDARY and NONCONVEX flags (flags replace adj indices where applicable)
 
PxU32 * mGRB_faceRemap
 GRB : gpu to cpu triangle indice remap.
 
PxU32 * mGRB_faceRemapInverse
 
Gu::BV32Tree * mGRB_BV32Tree
 GRB: BV32 tree.
 
SDF mSdfData
 
PxU32 * mAccumulatedTrianglesRef
 
PxU32 * mTrianglesReferences
 
PxU32 mNbTrianglesReferences
 
- Protected Member Functions inherited from physx::PxTriangleMesh
PX_INLINE PxTriangleMesh (PxType concreteType, PxBaseFlags baseFlags)
 
PX_INLINE PxTriangleMesh (PxBaseFlags baseFlags)
 
virtual bool isKindOf (const char *name) const
 Returns whether a given type name matches with the type of this instance.
 
- Protected Member Functions inherited from physx::PxRefCounted
PX_INLINE PxRefCounted (PxType concreteType, PxBaseFlags baseFlags)
 
PX_INLINE PxRefCounted (PxBaseFlags baseFlags)
 
- Protected Member Functions inherited from physx::PxBase
PX_INLINE PxBase (PxType concreteType, PxBaseFlags baseFlags)
 Constructor setting concrete type and base flags.
 
PX_INLINE PxBase (PxBaseFlags baseFlags)
 Deserialization constructor setting base flags.
 
virtual ~PxBase ()
 Destructor.
 
template<class T >
bool typeMatch () const
 
- Protected Attributes inherited from physx::Gu::TriangleMesh
PxU32 mNbVertices
 
PxU32 mNbTriangles
 
PxVec3 * mVertices
 
void * mTriangles
 16 (<= 0xffff #vertices) or 32 bit trig indices (mNbTriangles * 3)
 
CenterExtents mAABB
 
PxU8 * mExtraTrigData
 
PxReal mGeomEpsilon
 see comments in cooking code referencing this variable
 
PxU8 mFlags
 
PxU16 * mMaterialIndices
 the size of the array is numTriangles.
 
PxU32 * mFaceRemap
 new faces to old faces mapping (after cleaning, etc). Usage: old = faceRemap[new]
 
PxU32 * mAdjacencies
 
MeshFactory * mMeshFactory
 
Gu::EdgeList * mEdgeList
 
PxReal mMass
 
PxMat33 mInertia
 
PxVec3 mLocalCenterOfMass
 
- Protected Attributes inherited from physx::PxBase
PxType mConcreteType
 
PxBaseFlags mBaseFlags
 
PxU32 mBuiltInRefCount
 

Member Function Documentation

◆ exportExtraData()

void physx::BV4TriangleMesh::exportExtraData ( PxSerializationContext &  ctx)
virtual

Reimplemented from physx::Gu::TriangleMesh.

◆ getConcreteTypeName()

virtual const char * physx::Gu::BV4TriangleMesh::getConcreteTypeName ( ) const
inlinevirtual

Returns string name of dynamic type.

Returns
Class name of most derived type of this object.

Implements physx::PxBase.

◆ getInternalData()

bool physx::BV4TriangleMesh::getInternalData ( PxTriangleMeshInternalData &  data,
bool  takeOwnership 
) const
virtual

Reimplemented from physx::Gu::TriangleMesh.

◆ getMidphaseID()

virtual PxMeshMidPhase::Enum physx::Gu::BV4TriangleMesh::getMidphaseID ( ) const
inlinevirtual

◆ getVerticesForModification()

PxVec3 * physx::BV4TriangleMesh::getVerticesForModification ( )
virtual

Returns all mesh vertices for modification.

This function will return the vertices of the mesh so that their positions can be changed in place. After modifying the vertices you must call refitBVH for the refitting to actually take place. This function maintains the old mesh topology (triangle indices).

Returns
inplace vertex coordinates for each existing mesh vertex.
Note
It is recommended to use this feature for scene queries only.
Size of array returned is equal to the number returned by getNbVertices().
This function operates on cooked vertex indices.
This means the index mapping and vertex count can be different from what was provided as an input to the cooking routine.
To achieve unchanged 1-to-1 index mapping with orignal mesh data (before cooking) please use the following cooking flags:
eWELD_VERTICES = 0, eDISABLE_CLEAN_MESH = 1.
It is also recommended to make sure that a call to validateTriangleMesh returns true if mesh cleaning is disabled.
See also
getNbVertices()
refitBVH()

Reimplemented from physx::Gu::TriangleMesh.

◆ refitBVH()

PxBounds3 physx::BV4TriangleMesh::refitBVH ( )
virtual

Refits BVH for mesh vertices.

This function will refit the mesh BVH to correctly enclose the new positions updated by getVerticesForModification. Mesh BVH will not be reoptimized by this function so significantly different new positions will cause significantly reduced performance.

Returns
New bounds for the entire mesh.
Note
For PxMeshMidPhase::eBVH34 trees the refit operation is only available on non-quantized trees (see PxBVH34MidphaseDesc::quantized)
PhysX does not keep a mapping from the mesh to mesh shapes that reference it.
Call PxShape::setGeometry on each shape which references the mesh, to ensure that internal data structures are updated to reflect the new geometry.
PxShape::setGeometry does not guarantee correct/continuous behavior when objects are resting on top of old or new geometry.
It is also recommended to make sure that a call to validateTriangleMesh returns true if mesh cleaning is disabled.
Active edges information will be lost during refit, the rigid body mesh contact generation might not perform as expected.
See also
getNbVertices()
getVerticesForModification()
PxBVH34MidphaseDesc::quantized

Reimplemented from physx::Gu::TriangleMesh.


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