diff options
| author | Anton Novoselov <[email protected]> | 2017-08-08 20:14:22 +0300 |
|---|---|---|
| committer | Anton Novoselov <[email protected]> | 2017-08-08 20:14:22 +0300 |
| commit | d41654b469fa51870b5952c836c04d9da17f32d3 (patch) | |
| tree | 64f8f437eef394630355f281d35ca1d53e5c4d6c /sdk/extensions/exporter | |
| parent | add +x for packman script (diff) | |
| download | blast-d41654b469fa51870b5952c836c04d9da17f32d3.tar.xz blast-d41654b469fa51870b5952c836c04d9da17f32d3.zip | |
Updated to CL 22627414:
* docs updates
* authoring fixes
* stress solver crash fixes
Diffstat (limited to 'sdk/extensions/exporter')
3 files changed, 25 insertions, 8 deletions
diff --git a/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.cpp b/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.cpp index df0500e..c376701 100644 --- a/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.cpp +++ b/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.cpp @@ -218,7 +218,8 @@ void FbxFileReader::loadFromFile(const char* filename) std::cerr << "Mesh has more than 1 material mappings, first one will be used. " << std::endl; } auto matLayer = mesh->GetElementMaterial(0); - + auto smLayer = mesh->GetElementSmoothing(); + for (int i = 0; i < polyCount; i++) { @@ -245,6 +246,10 @@ void FbxFileReader::loadFromFile(const char* filename) { mMaterialIds.push_back(matLayer->GetIndexArray().GetAt(i)); } + if (smLayer != nullptr) + { + mSmoothingGroups.push_back(smLayer->GetDirectArray().GetAt(i)); + } } mVertexPositions = positions; @@ -255,6 +260,18 @@ void FbxFileReader::loadFromFile(const char* filename) getBoneInfluencesInternal(mesh); } +int32_t* FbxFileReader::getSmoothingGroups() +{ + if (!mSmoothingGroups.empty()) + { + return mSmoothingGroups.data(); + } + else + { + return nullptr; + } +} + int32_t FbxFileReader::getMaterialCount() { return mMaterialNames.size(); diff --git a/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.h b/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.h index 4155b25..b7c81aa 100644 --- a/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.h +++ b/sdk/extensions/exporter/source/NvBlastExtExporterFbxReader.h @@ -104,7 +104,7 @@ public: /** Get loaded per triangle smoothing groups. Currently not supported. */ - int32_t* getSmoothingGroups() override { return nullptr; }; + int32_t* getSmoothingGroups() override; /** Get material name. diff --git a/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp b/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp index b5fd04b..161ec5f 100644 --- a/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp +++ b/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp @@ -148,7 +148,7 @@ bool FbxFileWriter::appendMesh(const AuthoringResult& aResult, const char* asset //Found a valid smoothing group smElement = mesh->CreateElementSmoothing(); smElement->SetMappingMode(FbxGeometryElement::eByPolygon); - smElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); + smElement->SetReferenceMode(FbxGeometryElement::eDirect); break; } } @@ -423,11 +423,11 @@ uint32_t FbxFileWriter::createChunkRecursive(uint32_t currentCpIdx, uint32_t chu { if (tri.userData == 0) { - smElement->GetIndexArray().SetAt(polyCount, tri.smoothingGroup); + smElement->GetDirectArray().Add(tri.smoothingGroup); } else { - smElement->GetIndexArray().SetAt(polyCount, SMOOTHING_GROUP_INTERIOR); + smElement->GetDirectArray().Add(SMOOTHING_GROUP_INTERIOR); } } @@ -611,7 +611,7 @@ void FbxFileWriter::createChunkRecursiveNonSkinned(const std::string& meshName, //Found a valid smoothing group smElement = mesh->CreateElementSmoothing(); smElement->SetMappingMode(FbxGeometryElement::eByPolygon); - smElement->SetReferenceMode(FbxGeometryElement::eIndexToDirect); + smElement->SetReferenceMode(FbxGeometryElement::eDirect); break; } } @@ -658,11 +658,11 @@ void FbxFileWriter::createChunkRecursiveNonSkinned(const std::string& meshName, { if (geo.userData == 0) { - smElement->GetIndexArray().SetAt(polyCount, geo.smoothingGroup); + smElement->GetDirectArray().Add(geo.smoothingGroup); } else { - smElement->GetIndexArray().SetAt(polyCount, SMOOTHING_GROUP_INTERIOR); + smElement->GetDirectArray().Add(SMOOTHING_GROUP_INTERIOR); } } |