00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef NVBLASTAUTHORING_H
00030 #define NVBLASTAUTHORING_H
00031
00032 #include "NvBlastExtAuthoringTypes.h"
00033
00034 namespace Nv
00035 {
00036 namespace Blast
00037 {
00038 class Mesh;
00039 class VoronoiSitesGenerator;
00040 class CutoutSet;
00041 class RandomGeneratorBase;
00042 class FractureTool;
00043 class ConvexMeshBuilder;
00044 class BlastBondGenerator;
00045 class MeshCleaner;
00046 class PatternGenerator;
00047 class Grid;
00048 class GridWalker;
00049 }
00050 }
00051
00052 struct NvBlastExtAssetUtilsBondDesc;
00053
00067 NVBLAST_API Nv::Blast::Mesh*
00068 NvBlastExtAuthoringCreateMesh(const NvcVec3* positions, const NvcVec3* normals, const NvcVec2* uv,
00069 uint32_t verticesCount, const uint32_t* indices, uint32_t indicesCount);
00070
00084 NVBLAST_API Nv::Blast::Mesh*
00085 NvBlastExtAuthoringCreateMeshOnlyTriangles(const void* vertices, uint32_t verticesCount, uint32_t* indices,
00086 uint32_t indexCount, void* materials = nullptr, uint32_t materialStride = 4);
00087
00101 NVBLAST_API Nv::Blast::Mesh*
00102 NvBlastExtAuthoringCreateMeshFromFacets(const void* vertices, const void* edges, const void* facets,
00103 uint32_t verticesCount, uint32_t edgesCount, uint32_t facetsCount);
00104
00112 NVBLAST_API Nv::Blast::VoronoiSitesGenerator*
00113 NvBlastExtAuthoringCreateVoronoiSitesGenerator(Nv::Blast::Mesh* mesh, Nv::Blast::RandomGeneratorBase* rng);
00114
00116 NVBLAST_API Nv::Blast::CutoutSet* NvBlastExtAuthoringCreateCutoutSet();
00117
00134 NVBLAST_API void
00135 NvBlastExtAuthoringBuildCutoutSet(Nv::Blast::CutoutSet& cutoutSet, const uint8_t* pixelBuffer, uint32_t bufferWidth,
00136 uint32_t bufferHeight, float segmentationErrorThreshold, float snapThreshold,
00137 bool periodic, bool expandGaps);
00138
00143 NVBLAST_API Nv::Blast::FractureTool* NvBlastExtAuthoringCreateFractureTool();
00144
00149 NVBLAST_API Nv::Blast::BlastBondGenerator* NvBlastExtAuthoringCreateBondGenerator(Nv::Blast::ConvexMeshBuilder* builder);
00150
00160 NVBLAST_API int32_t NvBlastExtAuthoringBuildMeshConvexDecomposition(Nv::Blast::ConvexMeshBuilder* cmb,
00161 const Nv::Blast::Triangle* mesh,
00162 uint32_t triangleCount,
00163 const Nv::Blast::ConvexDecompositionParams& params,
00164 Nv::Blast::CollisionHull**& convexes);
00165
00166
00179 NVBLAST_API void NvBlastExtAuthoringTrimCollisionGeometry(Nv::Blast::ConvexMeshBuilder* cmb, uint32_t chunksCount,
00180 Nv::Blast::CollisionHull** in, const uint32_t* chunkDepth);
00181
00182
00190 NVBLAST_API void NvBlastExtAuthoringTransformCollisionHullInPlace(Nv::Blast::CollisionHull* hull, const NvcVec3* scaling,
00191 const NvcQuat* rotation, const NvcVec3* translation);
00192
00200 NVBLAST_API Nv::Blast::CollisionHull*
00201 NvBlastExtAuthoringTransformCollisionHull(const Nv::Blast::CollisionHull* hull, const NvcVec3* scaling,
00202 const NvcQuat* rotation, const NvcVec3* translation);
00203
00215 NVBLAST_API Nv::Blast::AuthoringResult*
00216 NvBlastExtAuthoringProcessFracture(Nv::Blast::FractureTool& fTool, Nv::Blast::BlastBondGenerator& bondGenerator,
00217 Nv::Blast::ConvexMeshBuilder& collisionBuilder,
00218 const Nv::Blast::ConvexDecompositionParams& collisionParam,
00219 int32_t defaultSupportDepth = -1);
00220
00221
00225 NVBLAST_API void NvBlastExtAuthoringReleaseAuthoringResultCollision(Nv::Blast::ConvexMeshBuilder& collisionBuilder, Nv::Blast::AuthoringResult* ar);
00226
00230 NVBLAST_API void NvBlastExtAuthoringReleaseAuthoringResult(Nv::Blast::ConvexMeshBuilder& collisionBuilder, Nv::Blast::AuthoringResult* ar);
00231
00232
00240 NVBLAST_API void NvBlastExtAuthoringUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& ares);
00241
00251 NVBLAST_API void NvBlastExtAuthoringBuildCollisionMeshes(Nv::Blast::AuthoringResult& ares,
00252 Nv::Blast::ConvexMeshBuilder& collisionBuilder,
00253 const Nv::Blast::ConvexDecompositionParams& collisionParam,
00254 uint32_t chunksToProcessCount, uint32_t* chunksToProcess);
00255
00260 NVBLAST_API Nv::Blast::MeshCleaner* NvBlastExtAuthoringCreateMeshCleaner();
00261
00287 NVBLAST_API uint32_t NvBlastExtAuthoringFindAssetConnectingBonds(
00288 const NvBlastAsset** components, const NvcVec3* scales, const NvcQuat* rotations, const NvcVec3* translations,
00289 const uint32_t** convexHullOffsets, const Nv::Blast::CollisionHull*** chunkHulls, uint32_t componentCount,
00290 NvBlastExtAssetUtilsBondDesc*& newBondDescs, float maxSeparation = 0.0f);
00291
00295 NVBLAST_API Nv::Blast::PatternGenerator* NvBlastExtAuthoringCreatePatternGenerator();
00296
00300 NVBLAST_API Nv::Blast::Grid* NvBlastExtAuthoringCreateGridAccelerator(uint32_t resolution, const Nv::Blast::Mesh* m);
00301
00305 NVBLAST_API Nv::Blast::GridWalker* NvBlastExtAuthoringCreateGridWalker(Nv::Blast::Grid* parent);
00306
00307 #endif // ifndef NVBLASTAUTHORING_H