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
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.
-
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