PxSDFBuilder

Defined in include/PxSDFBuilder.h

class PxSDFBuilder

Utility class to compute an SDF on the GPU.

Public Functions

virtual bool buildSDF(const PxVec3 *vertices, PxU32 numVertices, const PxU32 *indices, PxU32 numTriangleIndices, PxU32 width, PxU32 height, PxU32 depth, const PxVec3 &minExtents, const PxVec3 &maxExtents, bool cellCenteredSamples, PxReal *sdf, CUstream stream = 0) = 0

Constructs a dense grid SDF for a triangle mesh using the GPU.

Parameters
  • vertices[in] The vertices of the triangle mesh

  • numVertices[in] The number of vertices

  • indices[in] The triangle indices

  • numTriangleIndices[in] The number of triangle indices

  • width[in] The number of samples along the x direction of the resulting SDF volume

  • height[in] The number of samples along the y direction of the resulting SDF volume

  • depth[in] The number of samples along the z direction of the resulting SDF volume

  • minExtents[in] The minimum corner location of the axis aligned box containing the SDF samples

  • maxExtents[in] The maximum corner location of the axis aligned box containing the SDF samples

  • cellCenteredSamples[in] Determines if the sample points are located at the center of a SDF cell or at the lower left (=min) corner of a cell

  • sdf[out] The distance values. Must provide space for width*height*depth distance samples. Negative distance means the sample point is located inside of the triangle mesh

  • stream[in] The cuda stream on which the conversion is processed. If the default stream (0) is used, a temporary stream will be created internally

Returns

A boolean that indicates whether the SDF creation succeeded

virtual bool buildSparseSDF(const PxVec3 *vertices, PxU32 numVertices, const PxU32 *indices, PxU32 numTriangleIndices, PxU32 width, PxU32 height, PxU32 depth, const PxVec3 &minExtents, const PxVec3 &maxExtents, PxReal narrowBandThickness, PxU32 cellsPerSubgrid, PxSdfBitsPerSubgridPixel::Enum bitsPerSubgridPixel, PxArray<PxReal> &sdfCoarse, PxArray<PxU32> &sdfSubgridsStartSlots, PxArray<PxU8> &sdfDataSubgrids, PxReal &subgridsMinSdfValue, PxReal &subgridsMaxSdfValue, PxU32 &sdfSubgrids3DTexBlockDimX, PxU32 &sdfSubgrids3DTexBlockDimY, PxU32 &sdfSubgrids3DTexBlockDimZ, CUstream stream = 0) = 0

Constructs a sparse grid SDF for a triangle mesh using the GPU.

Parameters
  • vertices[in] The vertices of the triangle mesh

  • numVertices[in] The number of vertices

  • indices[in] The triangle indices

  • numTriangleIndices[in] The number of triangle indices

  • width[in] The number of samples along the x direction of the resulting SDF volume

  • height[in] The number of samples along the y direction of the resulting SDF volume

  • depth[in] The number of samples along the z direction of the resulting SDF volume

  • minExtents[in] The minimum corner location of the axis aligned box containing the SDF samples

  • maxExtents[in] The maximum corner location of the axis aligned box containing the SDF samples

  • narrowBandThickness[in] The thickness of the narrow band

  • cellsPerSubgrid[in] The number of cells in a sparse subgrid block (full block has mSubgridSize^3 cells and (mSubgridSize+1)^3 samples)

  • bitsPerSubgridPixel[in] Subgrid pixel compression

  • sdfCoarse[out] Used to store the lower resolution, dense backround SDF to provide distance information further away from the mesh’s surface

  • sdfSubgridsStartSlots[out] Used to store the subgrids start indices

  • sdfDataSubgrids[out] Used to store the subgrids

  • subgridsMinSdfValue[out] Used to store the minimum sdf value over all subgrids

  • subgridsMaxSdfValue[out] Used to store the maximum sdf value over all subgrids

  • sdfSubgrids3DTexBlockDimX[out] Used to store x dimension of the texture block that stores the subgrids

  • sdfSubgrids3DTexBlockDimY[out] Used to store y dimension of the texture block that stores the subgrids

  • sdfSubgrids3DTexBlockDimZ[out] Used to store z dimension of the texture block that stores the subgrids

  • stream[in] The cuda stream on which the conversion is processed. If the default stream (0) is used, a temporary stream will be created internally

Returns

A boolean that indicates whether the SDF creation succeeded

virtual void release() = 0

Releases the memory including the this pointer.

inline virtual ~PxSDFBuilder()

Destructor.