28 #ifndef NVBLASTAUTHORINGFRACTURETOOLIMPL_H 29 #define NVBLASTAUTHORINGFRACTURETOOLIMPL_H 41 class SpatialAccelerator;
106 void radialPattern(
const NvcVec3& center,
const NvcVec3&
normal,
float radius, int32_t angularSteps, int32_t radialSteps,
float angleOffset = 0.0f,
float variability = 0.0f)
override;
131 void deleteInSphere(
const float radius,
const NvcVec3& center,
const float eraserProbability = 1)
override;
134 std::vector <NvcVec3> mGeneratedSites;
136 const Mesh* mStencil;
156 mPlaneIndexerOffset = 1;
158 mRemoveIslands =
false;
172 void reset()
override;
177 void setInteriorMaterialId(int32_t materialId)
override;
182 int32_t getInteriorMaterialId()
const override;
187 void replaceMaterialId(int32_t oldMaterialId, int32_t newMaterialId)
override;
192 void setSourceMesh(
const Mesh* mesh)
override;
197 int32_t setChunkMesh(
const Mesh* mesh, int32_t parentId)
override;
202 Mesh* createChunkMesh(int32_t chunkId)
override;
208 void getTransformation(
NvcVec3& offset,
float& scale)
override;
219 int32_t voronoiFracturing(uint32_t chunkId, uint32_t cellCount,
const NvcVec3* cellPoints,
bool replaceChunk)
override;
232 int32_t voronoiFracturing(uint32_t chunkId, uint32_t cellCount,
const NvcVec3* cellPoints,
const NvcVec3& scale,
const NvcQuat& rotation,
bool replaceChunk)
override;
278 void finalizeFracturing()
override;
280 uint32_t getChunkCount()
const override;
285 const ChunkInfo& getChunkInfo(int32_t chunkIndex)
override;
294 float getMeshOverlap(
const Mesh& meshA,
const Mesh& meshB)
override;
303 uint32_t getBaseMesh(int32_t chunkIndex,
Triangle*& output)
override;
312 uint32_t updateBaseMesh(int32_t chunkIndex,
Triangle* output)
override;
319 int32_t getChunkIndex(int32_t chunkId)
override;
326 int32_t getChunkId(int32_t chunkIndex)
override;
333 int32_t getChunkDepth(int32_t chunkId)
override;
342 uint32_t getChunksIdAtDepth(uint32_t depth, int32_t*& chunkIds)
override;
355 uint32_t getBufferedBaseMeshes(
Vertex*& vertexBuffer, uint32_t*& indexBuffer, uint32_t*& indexBufferOffsets)
override;
361 void setRemoveIslands(
bool isRemoveIslands)
override;
368 int32_t islandDetectionAndRemoving(int32_t chunkId,
bool createAtNewDepth =
false)
override;
374 bool isMeshContainOpenEdges(
const Mesh* input)
override;
376 bool deleteChunkSubhierarchy(int32_t chunkId,
bool deleteRoot =
false)
override;
378 void uniteChunks(uint32_t threshold, uint32_t targetClusterSize,
379 const uint32_t* chunksToMerge, uint32_t mergeChunkCount,
380 const NvcVec2i* adjChunks, uint32_t adjChunksSize,
381 bool removeOriginalChunks =
false)
override;
383 bool setApproximateBonding(uint32_t chunkId,
bool useApproximateBonding)
override;
390 void fitUvToRect(
float side, uint32_t chunkId)
override;
396 void fitAllUvToRect(
float side)
override;
401 bool isAncestorForChunk(int32_t ancestorId, int32_t chunkId);
403 uint32_t stretchGroup(
const std::vector<uint32_t>& group, std::vector<std::vector<uint32_t>>& graph);
404 void rebuildAdjGraph(
const std::vector<uint32_t>& chunksToRebuild,
const NvcVec2i* adjChunks, uint32_t adjChunksSize,
405 std::vector<std::vector<uint32_t> >& chunkGraph);
406 void fitAllUvToRect(
float side, std::set<uint32_t>& mask);
412 uint32_t createNewChunk(uint32_t parentId);
435 void findCellBasePlanes(
const std::vector<NvcVec3>& sites, std::vector<std::vector<int32_t> >& neighboors);
436 Mesh*
getCellMesh(
class BooleanEvaluator& eval, int32_t planeIndexerOffset, int32_t cellId,
const std::vector<NvcVec3>& sites, std::vector < std::vector<int32_t> >& neighboors, int32_t interiorMaterialId,
NvcVec3 origin);
442 #endif // ifndef NVBLASTAUTHORINGFRACTURETOOLIMPL_H Definition: NvBlastExtAuthoringFractureTool.h:107
void generateInSphere(const uint32_t count, const float radius, const NvcVec3 ¢er) override
Definition: NvBlastExtAuthoringFractureTool.h:47
uint32_t getVoronoiSites(const NvcVec3 *&sites) override
void addSite(const NvcVec3 &site) override
void deleteInSphere(const float radius, const NvcVec3 ¢er, const float eraserProbability=1) override
Definition: NvBlastExtAuthoringFractureTool.h:179
Definition: NvBlastExtAuthoringBooleanTool.h:108
NV_INLINE float normal(const float a[3], float r[3])
Definition: NvBlastMath.h:93
void setBaseMesh(const Mesh *m) override
Definition: NvBlastExtAuthoringAccelerator.h:47
void clearStencil() override
Definition: NvBlastExtAuthoringFractureTool.h:79
Definition: NvBlastExtAuthoringMesh.h:42
void findCellBasePlanes(const std::vector< NvcVec3 > &sites, std::vector< std::vector< int32_t > > &neighboors)
Definition: NvBlastExtAuthoringFractureTool.h:66
void uniformlyGenerateSitesInMesh(uint32_t numberOfSites) override
Mesh * getCellMesh(class BooleanEvaluator &eval, int32_t planeIndexerOffset, int32_t cellId, const std::vector< NvcVec3 > &sites, std::vector< std::vector< int32_t > > &neighboors, int32_t interiorMaterialId, NvcVec3 origin)
Definition: NvCTypes.h:106
const uint32_t kMaterialInteriorId
Definition: NvBlastExtAuthoringTypes.h:42
Definition: NvBlastExtAuthoringFractureTool.h:133
Definition: NvBlastExtAuthoringTypes.h:79
Definition: NvBlastExtAuthoringFractureToolImpl.h:48
VoronoiSitesGeneratorImpl(const Mesh *mesh, RandomGeneratorBase *rnd)
void radialPattern(const NvcVec3 ¢er, const NvcVec3 &normal, float radius, int32_t angularSteps, int32_t radialSteps, float angleOffset=0.0f, float variability=0.0f) override
Definition: NvBlastExtAuthoringTypes.h:67
void setStencil(const Mesh *stencil) override
Definition: NvBlastArray.h:37
Definition: NvCTypes.h:49
void clusteredSitesGeneration(uint32_t numberOfClusters, uint32_t sitesPerCluster, float clusterRadius) override
~VoronoiSitesGeneratorImpl()
Definition: NvCTypes.h:61