diff options
| author | Bryan Galdrikian <[email protected]> | 2018-01-23 15:09:19 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2018-01-23 15:09:19 -0800 |
| commit | 5b173c1082bd932de70b5664dce9b1c95e0ae237 (patch) | |
| tree | 1f39a99b81be853e31044828ccfe6d04c36a25da /sdk/extensions/authoring/source | |
| parent | Changes for 1.1.2 release candidate (diff) | |
| download | blast-5b173c1082bd932de70b5664dce9b1c95e0ae237.tar.xz blast-5b173c1082bd932de70b5664dce9b1c95e0ae237.zip | |
Linux checked and profile builds
New NvBlastExtAuthoringBuildCollisionMesh API
buildtools/steps/build_all_linux.sh will be committed separately
Diffstat (limited to 'sdk/extensions/authoring/source')
| -rw-r--r-- | sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp | 34 | ||||
| -rw-r--r-- | sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp | 4 |
2 files changed, 35 insertions, 3 deletions
diff --git a/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp b/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp index 13654e2..ee636bc 100644 --- a/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp +++ b/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp @@ -139,7 +139,7 @@ CollisionHull* NvBlastExtAuthoringTransformCollisionHull(const CollisionHull* hu return ret; } -void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& result, const CollisionParams& params) +void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& result, const CollisionParams& params, uint32_t chunksToProcessCount = 0, uint32_t* chunksToProcess = nullptr) { uint32_t chunkCount = (uint32_t)result.chunkCount; if (params.maximumNumberOfHulls == 1) @@ -172,10 +172,27 @@ void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& re } else { + std::set<int32_t> chunkSet; + for (uint32_t c = 0; c < chunksToProcessCount; c++) + { + chunkSet.insert(chunksToProcess[c]); + } std::vector<std::vector<CollisionHull*> > hulls(chunkCount); int32_t totalHulls = 0; for (uint32_t i = 0; i < chunkCount; ++i) { + if (chunkSet.size() > 0 && chunkSet.find(i) == chunkSet.end()) + { + int32_t newHulls = result.collisionHullOffset[i + 1] - result.collisionHullOffset[i]; + int32_t off = result.collisionHullOffset[i]; + for (int32_t subhull = 0; subhull < newHulls; ++subhull) + { + hulls[i].push_back(result.collisionHull[off + subhull]); + } + totalHulls += newHulls; + continue; + } + CollisionHull** tempHull; int32_t newHulls = collisionBuilder.buildMeshConvexDecomposition(result.geometry + result.geometryOffset[i], @@ -188,6 +205,11 @@ void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& re SAFE_ARRAY_DELETE(tempHull); } + SAFE_ARRAY_DELETE(result.collisionHullOffset); + SAFE_ARRAY_DELETE(result.collisionHull); + SAFE_ARRAY_DELETE(result.physicsSubchunks); + SAFE_ARRAY_DELETE(result.physicsChunks); + result.collisionHullOffset = SAFE_ARRAY_NEW(uint32_t, chunkCount + 1); result.collisionHullOffset[0] = 0; result.collisionHull = SAFE_ARRAY_NEW(CollisionHull*, totalHulls); @@ -488,11 +510,17 @@ uint32_t NvBlastExtAuthoringFindAssetConnectingBonds } -void NvBlastExtUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& aResult) +void NvBlastExtAuthoringUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& aResult) { uint32_t chunkCount = fTool.getChunkCount(); for (uint32_t i = 0; i < chunkCount; ++i) { fTool.updateBaseMesh(i, aResult.geometry + aResult.geometryOffset[i]); } -}
\ No newline at end of file +} + +void NvBlastExtAuthoringBuildCollisionMeshes(Nv::Blast::AuthoringResult& ares, Nv::Blast::ConvexMeshBuilder& collisionBuilder, + const Nv::Blast::CollisionParams& collisionParam, uint32_t chunksToProcessCount, uint32_t* chunksToProcess) +{ + buildPhysicsChunks(collisionBuilder, ares, collisionParam, chunksToProcessCount, chunksToProcess); +} diff --git a/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp b/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp index 43f1dbf..34e97e6 100644 --- a/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp +++ b/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp @@ -373,6 +373,10 @@ int32_t ConvexMeshBuilderImpl::buildMeshConvexDecomposition(const Triangle* mesh VHACD::IVHACD::Parameters vhacdParam; vhacdParam.m_maxConvexHulls = iparams.maximumNumberOfHulls; vhacdParam.m_resolution = iparams.voxelGridResolution; + vhacdParam.m_concavity = iparams.concavity; + vhacdParam.m_oclAcceleration = false; + //TODO vhacdParam.m_callback + vhacdParam.m_minVolumePerCH = 0.003f; // 1.f / (3 * vhacdParam.m_resolution ^ (1 / 3)); decomposer->Compute(coords.data(), triangleCount * 3, indices.data(), triangleCount, vhacdParam); |