#include <NvBlastExtAuthoringFractureToolImpl.h>

Public Member Functions | |
| Mesh * | createChunkMesh (int32_t chunkId) override |
| int32_t | cut (uint32_t chunkId, const NvcVec3 &normal, const NvcVec3 &position, const NoiseConfiguration &noise, bool replaceChunk, RandomGeneratorBase *rnd) override |
| int32_t | cutout (uint32_t chunkId, CutoutConfiguration conf, bool replaceChunk, RandomGeneratorBase *rnd) override |
| bool | deleteChunkSubhierarchy (int32_t chunkId, bool deleteRoot=false) override |
| void | finalizeFracturing () override |
| void | fitAllUvToRect (float side) override |
| void | fitUvToRect (float side, uint32_t chunkId) override |
| FractureToolImpl () | |
| uint32_t | getBaseMesh (int32_t chunkIndex, Triangle *&output) override |
| uint32_t | getBufferedBaseMeshes (Vertex *&vertexBuffer, uint32_t *&indexBuffer, uint32_t *&indexBufferOffsets) override |
| uint32_t | getChunkCount () const override |
| int32_t | getChunkDepth (int32_t chunkId) override |
| int32_t | getChunkId (int32_t chunkIndex) override |
| int32_t | getChunkIndex (int32_t chunkId) override |
| const ChunkInfo & | getChunkInfo (int32_t chunkIndex) override |
| uint32_t | getChunksIdAtDepth (uint32_t depth, int32_t *&chunkIds) override |
| int32_t | getInteriorMaterialId () const override |
| float | getMeshOverlap (const Mesh &meshA, const Mesh &meshB) override |
| void | getTransformation (NvcVec3 &offset, float &scale) override |
| int32_t | islandDetectionAndRemoving (int32_t chunkId, bool createAtNewDepth=false) override |
| bool | isMeshContainOpenEdges (const Mesh *input) override |
| void | release () override |
| void | replaceMaterialId (int32_t oldMaterialId, int32_t newMaterialId) override |
| void | reset () override |
| bool | setApproximateBonding (uint32_t chunkId, bool useApproximateBonding) override |
| int32_t | setChunkMesh (const Mesh *mesh, int32_t parentId) override |
| void | setInteriorMaterialId (int32_t materialId) override |
| void | setRemoveIslands (bool isRemoveIslands) override |
| void | setSourceMesh (const Mesh *mesh) override |
| int32_t | slicing (uint32_t chunkId, const SlicingConfiguration &conf, bool replaceChunk, RandomGeneratorBase *rnd) override |
| void | uniteChunks (uint32_t threshold, uint32_t targetClusterSize, const uint32_t *chunksToMerge, uint32_t mergeChunkCount, const NvcVec2i *adjChunks, uint32_t adjChunksSize, bool removeOriginalChunks=false) override |
| uint32_t | updateBaseMesh (int32_t chunkIndex, Triangle *output) override |
| int32_t | voronoiFracturing (uint32_t chunkId, uint32_t cellCount, const NvcVec3 *cellPoints, const NvcVec3 &scale, const NvcQuat &rotation, bool replaceChunk) override |
| int32_t | voronoiFracturing (uint32_t chunkId, uint32_t cellCount, const NvcVec3 *cellPoints, bool replaceChunk) override |
| ~FractureToolImpl () | |
Protected Attributes | |
| std::vector< ChunkInfo > | mChunkData |
| int32_t | mChunkIdCounter |
| std::vector< Triangulator * > | mChunkPostprocessors |
| int32_t | mInteriorMaterialId |
| NvcVec3 | mOffset |
| int64_t | mPlaneIndexerOffset |
| bool | mRemoveIslands |
| float | mScaleFactor |
| Nv::Blast::FractureToolImpl::FractureToolImpl | ( | ) | [inline] |
FractureTool can log asset creation info if logCallback is provided.
| Nv::Blast::FractureToolImpl::~FractureToolImpl | ( | ) | [inline] |
| Mesh* Nv::Blast::FractureToolImpl::createChunkMesh | ( | int32_t | chunkId | ) | [override, virtual] |
Get chunk mesh in polygonal representation
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::cut | ( | uint32_t | chunkId, | |
| const NvcVec3 & | normal, | |||
| const NvcVec3 & | position, | |||
| const NoiseConfiguration & | noise, | |||
| bool | replaceChunk, | |||
| RandomGeneratorBase * | rnd | |||
| ) | [override, virtual] |
Cut chunk with plane.
| [in] | chunkId | Chunk to fracture |
| [in] | normal | Plane normal |
| [in] | position | Point on plane |
| [in] | noise | Noise configuration for plane-chunk intersection, see NoiseConfiguration. |
| [in] | replaceChunk | if 'true', newly generated chunks will replace source chunk, if 'false', newly generated chunks will be at next depth level, source chunk will be parent for them. Case replaceChunk == true && chunkId == 0 considered as wrong input parameters |
| [in] | rnd | User supplied random number generator |
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::cutout | ( | uint32_t | chunkId, | |
| CutoutConfiguration | conf, | |||
| bool | replaceChunk, | |||
| RandomGeneratorBase * | rnd | |||
| ) | [override, virtual] |
Cutout fracture for specified chunk.
| [in] | chunkId | Chunk to fracture |
| [in] | conf | Cutout parameters, see CutoutConfiguration. |
| [in] | replaceChunk | if 'true', newly generated chunks will replace source chunk, if 'false', newly generated chunks will be at next depth level, source chunk will be parent for them. Case replaceChunk == true && chunkId == 0 considered as wrong input parameters |
| [in] | rnd | User supplied random number generator |
Implements Nv::Blast::FractureTool.
| bool Nv::Blast::FractureToolImpl::deleteChunkSubhierarchy | ( | int32_t | chunkId, | |
| bool | deleteRoot = false | |||
| ) | [override, virtual] |
Delete all children for specified chunk (also recursively delete chidren of children).
| [in] | chunkId | Chunk ID which children should be deleted |
| [in] | deleteRoot | (optional) If true, deletes the given chunk too |
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::finalizeFracturing | ( | ) | [override, virtual] |
Creates resulting fractured mesh geometry from intermediate format
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::fitAllUvToRect | ( | float | side | ) | [override, virtual] |
Rescale interior uv coordinates of all existing chunks to fit square of given size, relative sizes will be preserved.
| [in] | side | Size of square side |
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::fitUvToRect | ( | float | side, | |
| uint32_t | chunkId | |||
| ) | [override, virtual] |
Rescale interior uv coordinates of given chunk to fit square of given size.
| [in] | side | Size of square side |
| [in] | chunkId | Chunk ID for which UVs should be scaled. |
Implements Nv::Blast::FractureTool.
| uint32_t Nv::Blast::FractureToolImpl::getBaseMesh | ( | int32_t | chunkIndex, | |
| Triangle *& | output | |||
| ) | [override, virtual] |
Get chunk base mesh
| [in] | chunkIndex | Chunk index |
| [out] | output | Array of triangles to be filled |
Implements Nv::Blast::FractureTool.
| uint32_t Nv::Blast::FractureToolImpl::getBufferedBaseMeshes | ( | Vertex *& | vertexBuffer, | |
| uint32_t *& | indexBuffer, | |||
| uint32_t *& | indexBufferOffsets | |||
| ) | [override, virtual] |
Get result geometry without noise as vertex and index buffers, where index buffers contain series of triplets which represent triangles.
| [out] | vertexBuffer | Array of vertices to be filled |
| [out] | indexBuffer | Array of indices to be filled |
| [out] | indexBufferOffsets | Array of offsets in indexBuffer for each base mesh. Contains getChunkCount() + 1 elements. Last one is indexBuffer size |
Implements Nv::Blast::FractureTool.
| uint32_t Nv::Blast::FractureToolImpl::getChunkCount | ( | ) | const [override, virtual] |
Returns overall number of chunks in fracture.
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::getChunkDepth | ( | int32_t | chunkId | ) | [override, virtual] |
Return depth level of the given chunk
| [in] | chunkId | Chunk ID |
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::getChunkId | ( | int32_t | chunkIndex | ) | [override, virtual] |
Return id of chunk with specified index.
| [in] | chunkIndex | Chunk index |
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::getChunkIndex | ( | int32_t | chunkId | ) | [override, virtual] |
Return index of chunk with specified chunkId
| [in] | chunkId | Chunk ID |
Implements Nv::Blast::FractureTool.
| const ChunkInfo& Nv::Blast::FractureToolImpl::getChunkInfo | ( | int32_t | chunkIndex | ) | [override, virtual] |
Get chunk information
Implements Nv::Blast::FractureTool.
| uint32_t Nv::Blast::FractureToolImpl::getChunksIdAtDepth | ( | uint32_t | depth, | |
| int32_t *& | chunkIds | |||
| ) | [override, virtual] |
Return array of chunks IDs with given depth.
| [in] | depth | Chunk depth |
| [out] | Pointer | to array of chunk IDs |
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::getInteriorMaterialId | ( | ) | const [override, virtual] |
Gets the material id to use for new interior faces
Implements Nv::Blast::FractureTool.
| float Nv::Blast::FractureToolImpl::getMeshOverlap | ( | const Mesh & | meshA, | |
| const Mesh & | meshB | |||
| ) | [override, virtual] |
Get percentage of mesh overlap. percentage computed as volume(intersection(meshA , meshB)) / volume (meshA)
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::getTransformation | ( | NvcVec3 & | offset, | |
| float & | scale | |||
| ) | [override, virtual] |
Input mesh is scaled and transformed internally to fit unit cube centered in origin. Method provides offset vector and scale parameter;
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::islandDetectionAndRemoving | ( | int32_t | chunkId, | |
| bool | createAtNewDepth = false | |||
| ) | [override, virtual] |
Try find islands and remove them on some specifical chunk. If chunk has childs, island removing can lead to wrong results! Apply it before further chunk splitting.
| [in] | chunkId | Chunk ID which should be checked for islands |
Implements Nv::Blast::FractureTool.
| bool Nv::Blast::FractureToolImpl::isMeshContainOpenEdges | ( | const Mesh * | input | ) | [override, virtual] |
Check if input mesh contains open edges. Open edges can lead to wrong fracturing results.
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::release | ( | ) | [override, virtual] |
Release FractureTool memory
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::replaceMaterialId | ( | int32_t | oldMaterialId, | |
| int32_t | newMaterialId | |||
| ) | [override, virtual] |
Replaces an material id on faces with a new one
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::reset | ( | ) | [override, virtual] |
Reset FractureTool state.
Implements Nv::Blast::FractureTool.
| bool Nv::Blast::FractureToolImpl::setApproximateBonding | ( | uint32_t | chunkIndex, | |
| bool | useApproximateBonding | |||
| ) | [override, virtual] |
Set the APPROXIMATE_BONDING flag in the chunk's ChunkInfo
| [in] | chunkIndex | chunk index - use getChunkIndex(ID) |
| [in] | useApproximateBonding | value of flag to set |
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::setChunkMesh | ( | const Mesh * | mesh, | |
| int32_t | parentId | |||
| ) | [override, virtual] |
Set chunk mesh, parentId should be valid, return id of new chunk.
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::setInteriorMaterialId | ( | int32_t | materialId | ) | [override, virtual] |
Set the material id to use for new interior faces. Defaults to kMaterialInteriorId
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::setRemoveIslands | ( | bool | isRemoveIslands | ) | [override, virtual] |
Set automatic islands removing. May cause instabilities.
| [in] | isRemoveIslands | Flag whether remove or not islands. |
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::setSourceMesh | ( | const Mesh * | mesh | ) | [override, virtual] |
Set input mesh wich will be fractured, FractureTool will be reseted.
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::slicing | ( | uint32_t | chunkId, | |
| const SlicingConfiguration & | conf, | |||
| bool | replaceChunk, | |||
| RandomGeneratorBase * | rnd | |||
| ) | [override, virtual] |
Fractures specified chunk with slicing method.
| [in] | chunkId | Chunk to fracture |
| [in] | conf | Slicing parameters, see SlicingConfiguration. |
| [in] | replaceChunk | if 'true', newly generated chunks will replace source chunk, if 'false', newly generated chunks will be at next depth level, source chunk will be parent for them. Case replaceChunk == true && chunkId == 0 considered as wrong input parameters |
| [in] | rnd | User supplied random number generator |
Implements Nv::Blast::FractureTool.
| void Nv::Blast::FractureToolImpl::uniteChunks | ( | uint32_t | threshold, | |
| uint32_t | targetClusterSize, | |||
| const uint32_t * | chunksToMerge, | |||
| uint32_t | mergeChunkCount, | |||
| const NvcVec2i * | adjChunks, | |||
| uint32_t | adjChunksSize, | |||
| bool | removeOriginalChunks = false | |||
| ) | [override, virtual] |
Optimize chunk hierarhy for better runtime performance. It tries to unite chunks to groups of some size in order to transform flat hierarchy (all chunks are children of single root) to tree like hieracrhy with limited number of children for each chunk.
| [in] | threshold | If number of children of some chunk less then maxAtLevel then it would be considered as already optimized and skipped. |
| [in] | targetClusterSize | Target number of children for processed chunks. |
| [in] | chunksToMerge | Which chunks are merge candidate. If NULL, all chunks will be a merge candidate. |
| [in] | mergeChunkCount | size of chunksToMerge array, if chunksToMerge != NULL. |
| [in] | adjChunks | Optional index pairs to describe chunk adjacency. May be NULL. |
| [in] | adjChunksSize | If 'adjChunks' is not NULL, the number of index pairs in the adjChunks array. |
| [in] | removeOriginalChunks | If true, original chunks that are merged are removed. |
Implements Nv::Blast::FractureTool.
| uint32_t Nv::Blast::FractureToolImpl::updateBaseMesh | ( | int32_t | chunkIndex, | |
| Triangle * | output | |||
| ) | [override, virtual] |
Update chunk base mesh
| [in] | chunkIndex | Chunk index |
| [out] | output | Array of triangles to be filled |
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::voronoiFracturing | ( | uint32_t | chunkId, | |
| uint32_t | cellCount, | |||
| const NvcVec3 * | cellPoints, | |||
| const NvcVec3 & | scale, | |||
| const NvcQuat & | rotation, | |||
| bool | replaceChunk | |||
| ) | [override, virtual] |
Fractures specified chunk with voronoi method. Cells can be scaled along x,y,z axes.
| [in] | chunkId | Chunk to fracture |
| [in] | cellPoints | Array of voronoi sites |
| [in] | cellPoints | Array of voronoi sites |
| [in] | scale | Voronoi cells scaling factor |
| [in] | rotation | Voronoi cells rotation. Has no effect without cells scale factor |
| [in] | replaceChunk | if 'true', newly generated chunks will replace source chunk, if 'false', newly generated chunks will be at next depth level, source chunk will be parent for them. Case replaceChunk == true && chunkId == 0 considered as wrong input parameters |
Implements Nv::Blast::FractureTool.
| int32_t Nv::Blast::FractureToolImpl::voronoiFracturing | ( | uint32_t | chunkId, | |
| uint32_t | cellCount, | |||
| const NvcVec3 * | cellPoints, | |||
| bool | replaceChunk | |||
| ) | [override, virtual] |
Fractures specified chunk with voronoi method.
| [in] | chunkId | Chunk to fracture |
| [in] | cellPoints | Array of voronoi sites |
| [in] | replaceChunk | if 'true', newly generated chunks will replace source chunk, if 'false', newly generated chunks will be at next depth level, source chunk will be parent for them. Case replaceChunk == true && chunkId == 0 considered as wrong input parameters |
Implements Nv::Blast::FractureTool.
std::vector<ChunkInfo> Nv::Blast::FractureToolImpl::mChunkData [protected] |
int32_t Nv::Blast::FractureToolImpl::mChunkIdCounter [protected] |
std::vector<Triangulator*> Nv::Blast::FractureToolImpl::mChunkPostprocessors [protected] |
int32_t Nv::Blast::FractureToolImpl::mInteriorMaterialId [protected] |
NvcVec3 Nv::Blast::FractureToolImpl::mOffset [protected] |
int64_t Nv::Blast::FractureToolImpl::mPlaneIndexerOffset [protected] |
bool Nv::Blast::FractureToolImpl::mRemoveIslands [protected] |
float Nv::Blast::FractureToolImpl::mScaleFactor [protected] |
Mesh scaled to unite-cube and translated to the origin