PxTetrahedronMeshExt

Defined in include/extensions/PxTetrahedronMeshExt.h

class PxTetrahedronMeshExt

utility functions for use with PxTetrahedronMesh and subclasses

Public Static Functions

static PxI32 findTetrahedronContainingPoint(const PxTetrahedronMesh *mesh, const PxVec3 &point, PxVec4 &bary, PxReal tolerance = 1e-6f)

Returns the index of the tetrahedron that contains a point.

Parameters
  • mesh[in] The tetmesh

  • point[in] The point to find the enclosing tetrahedron for

  • bary[in] The barycentric coordinates of the point inside the enclosing tetrahedron

  • tolerance[in] Tolerance value used classify points as inside if they lie exactly a tetrahedron’s surface

Returns

The index of the tetrahedron containing the point, -1 if not tetrahedron contains the opoint

static PxI32 findTetrahedronClosestToPoint(const PxTetrahedronMesh *mesh, const PxVec3 &point, PxVec4 &bary)

Returns the index of the tetrahedron closest to a point.

Parameters
  • mesh[in] The tetmesh

  • point[in] The point to find the closest tetrahedron for

  • bary[out] The barycentric coordinates of the point in the tetrahedron

Returns

The index of the tetrahedron closest to the point

static void createPointsToTetrahedronMap(const PxArray<PxVec3> &tetMeshVertices, const PxArray<PxU32> &tetMeshIndices, const PxArray<PxVec3> &pointsToEmbed, PxArray<PxVec4> &barycentricCoordinates, PxArray<PxU32> &tetLinks)

Associates points with closest tetrahedra from input tetrahedral mesh.

If the tetmesh does not have any tetrahedra or points, a warning will be generated and the result arrays will be empty, even if there are query points passed into the method.

Parameters
  • tetMeshVertices[in] The tetrahedral mesh vertices

  • tetMeshIndices[in] The tetraheral mesh indices

  • pointsToEmbed[in] The points for which the embedding should be created

  • barycentricCoordinates[in] The output barycentric coordinates for each input point relative to its closest tetrahedron

  • tetLinks[in] The output indices of the closest tetrahedron for each input point

static void extractTetMeshSurface(const void *tetrahedra, PxU32 numTetrahedra, bool sixteenBitIndices, PxArray<PxU32> &surfaceTriangles, PxArray<PxU32> *surfaceTriangleToTet = NULL, bool flipTriangleOrientation = false)

Extracts the surface triangles of a tetmesh.

The extracted triangle’s vertex indices point to the vertex buffer of the tetmesh.

Parameters
  • tetrahedra[in] The tetrahedra indices

  • numTetrahedra[in] The number of tetrahedra

  • sixteenBitIndices[in] If set to true, the tetrahedra indices are read as 16bit integers, otherwise 32bit integers are used

  • surfaceTriangles[in] The resulting surface triangles

  • surfaceTriangleToTet[in] Optional array to get the index of a tetrahedron that is adjacent to the surface triangle with the corresponding index

  • flipTriangleOrientation[in] Reverses the orientation of the ouput triangles

static void extractTetMeshSurface(const PxTetrahedronMesh *mesh, PxArray<PxU32> &surfaceTriangles, PxArray<PxU32> *surfaceTriangleToTet = NULL, bool flipTriangleOrientation = false)

Extracts the surface triangles of a tetmesh.

The extracted triangle’s vertex indices point to the vertex buffer of the tetmesh.

Parameters
  • mesh[in] The mesh from which the surface shall be computed

  • surfaceTriangles[in] The resulting surface triangles

  • surfaceTriangleToTet[in] Optional array to get the index of a tetrahedron that is adjacent to the surface triangle with the corresponding index

  • flipTriangleOrientation[in] Reverses the orientation of the ouput triangles