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 physx
00035 {
00036 class PxCooking;
00037 class PxPhysicsInsertionCallback;
00038 }
00039
00040 namespace Nv
00041 {
00042 namespace Blast
00043 {
00044 class Mesh;
00045 class VoronoiSitesGenerator;
00046 class CutoutSet;
00047 class FractureTool;
00048 class ConvexMeshBuilder;
00049 class BlastBondGenerator;
00050 class MeshCleaner;
00051 struct CollisionParams;
00052 struct CollisionHull;
00053 }
00054 }
00055
00056 struct NvBlastExtAssetUtilsBondDesc;
00057
00071 NVBLAST_API Nv::Blast::Mesh* NvBlastExtAuthoringCreateMesh(const physx::PxVec3* positions, const physx::PxVec3* normals,
00072 const physx::PxVec2* uv, uint32_t verticesCount, const uint32_t* indices, uint32_t indicesCount);
00073
00087 NVBLAST_API Nv::Blast::Mesh* NvBlastExtAuthoringCreateMeshFromFacets(const void* vertices, const void* edges, const void* facets,
00088 uint32_t verticesCount, uint32_t edgesCount, uint32_t facetsCount);
00089
00097 NVBLAST_API Nv::Blast::VoronoiSitesGenerator* NvBlastExtAuthoringCreateVoronoiSitesGenerator(Nv::Blast::Mesh* mesh,
00098 Nv::Blast::RandomGeneratorBase* rng);
00099
00101 NVBLAST_API Nv::Blast::CutoutSet* NvBlastExtAuthoringCreateCutoutSet();
00102
00118 NVBLAST_API void NvBlastExtAuthoringBuildCutoutSet(Nv::Blast::CutoutSet& cutoutSet, const uint8_t* pixelBuffer,
00119 uint32_t bufferWidth, uint32_t bufferHeight, float segmentationErrorThreshold, float snapThreshold, bool periodic, bool expandGaps);
00120
00125 NVBLAST_API Nv::Blast::FractureTool* NvBlastExtAuthoringCreateFractureTool();
00126
00131 NVBLAST_API Nv::Blast::BlastBondGenerator* NvBlastExtAuthoringCreateBondGenerator(physx::PxCooking* cooking,
00132 physx::PxPhysicsInsertionCallback* insertionCallback);
00133
00138 NVBLAST_API Nv::Blast::ConvexMeshBuilder* NvBlastExtAuthoringCreateConvexMeshBuilder(physx::PxCooking* cooking,
00139 physx::PxPhysicsInsertionCallback* insertionCallback);
00140
00141
00149 NVBLAST_API void NvBlastExtAuthoringTransformCollisionHullInPlace
00150 (
00151 Nv::Blast::CollisionHull* hull,
00152 const physx::PxVec3* scaling,
00153 const physx::PxQuat* rotation,
00154 const physx::PxVec3* translation
00155 );
00156
00164 NVBLAST_API Nv::Blast::CollisionHull* NvBlastExtAuthoringTransformCollisionHull
00165 (
00166 const Nv::Blast::CollisionHull* hull,
00167 const physx::PxVec3* scaling,
00168 const physx::PxQuat* rotation,
00169 const physx::PxVec3* translation
00170 );
00171
00183 NVBLAST_API Nv::Blast::AuthoringResult* NvBlastExtAuthoringProcessFracture(Nv::Blast::FractureTool& fTool,
00184 Nv::Blast::BlastBondGenerator& bondGenerator, Nv::Blast::ConvexMeshBuilder& collisionBuilder, const Nv::Blast::CollisionParams& collisionParam, int32_t defaultSupportDepth = -1);
00185
00192 NVBLAST_API void NvBlastExtAuthoringUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& ares);
00193
00203 NVBLAST_API void NvBlastExtAuthoringBuildCollisionMeshes
00204 (
00205 Nv::Blast::AuthoringResult& ares,
00206 Nv::Blast::ConvexMeshBuilder& collisionBuilder,
00207 const Nv::Blast::CollisionParams& collisionParam,
00208 uint32_t chunksToProcessCount,
00209 uint32_t* chunksToProcess
00210 );
00211
00216 NVBLAST_API Nv::Blast::MeshCleaner* NvBlastExtAuthoringCreateMeshCleaner();
00217
00240 NVBLAST_API uint32_t NvBlastExtAuthoringFindAssetConnectingBonds
00241 (
00242 const NvBlastAsset** components,
00243 const physx::PxVec3* scales,
00244 const physx::PxQuat* rotations,
00245 const physx::PxVec3* translations,
00246 const uint32_t** convexHullOffsets,
00247 const Nv::Blast::CollisionHull*** chunkHulls,
00248 uint32_t componentCount,
00249 NvBlastExtAssetUtilsBondDesc*& newBondDescs,
00250 float maxSeparation = 0.0f
00251 );
00252
00253 #endif // ifndef NVBLASTAUTHORING_H