aboutsummaryrefslogtreecommitdiff
path: root/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp
diff options
context:
space:
mode:
authorBryan Galdrikian <[email protected]>2018-01-22 14:04:16 -0800
committerBryan Galdrikian <[email protected]>2018-01-22 14:04:16 -0800
commit1dc1a87fba520bb45c1ce8165e8ea2c83c0a308d (patch)
tree5f8ca75a6b92c60fb5cf3b14282fc4cc1c127eb2 /sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp
parentUpdating readme.md to show updated UE4 Blast integration branches (diff)
downloadblast-1dc1a87fba520bb45c1ce8165e8ea2c83c0a308d.tar.xz
blast-1dc1a87fba520bb45c1ce8165e8ea2c83c0a308d.zip
Changes for 1.1.2 release candidate
See README.md, docs/release_notes.txt
Diffstat (limited to 'sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp')
-rw-r--r--sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp b/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp
index 497c846..d465d65 100644
--- a/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp
+++ b/sdk/extensions/exporter/source/NvBlastExtExporterFbxWriter.cpp
@@ -69,6 +69,8 @@ FbxFileWriter::FbxFileWriter():
mRenderLayer = FbxDisplayLayer::Create(mScene, FbxUtils::getRenderGeometryLayerName().c_str());
mRenderLayer->Show.Set(true);
mRenderLayer->Color.Set(FbxDouble3(0.0f, 1.0f, 0.0f));
+
+ mInteriorIndex = -1;
}
void FbxFileWriter::release()
@@ -89,13 +91,19 @@ void FbxFileWriter::createMaterials(const ExporterMeshData& aResult)
for (uint32_t i = 0; i < aResult.submeshCount; ++i)
{
- FbxSurfacePhong* material = FbxSurfacePhong::Create(sdkManager.get(), aResult.submeshNames[i]);
+ FbxSurfacePhong* material = FbxSurfacePhong::Create(sdkManager.get(), aResult.submeshMats[i].name);
material->Diffuse.Set(FbxDouble3(float(rand()) / RAND_MAX , float(rand()) / RAND_MAX, float(rand()) / RAND_MAX));
material->DiffuseFactor.Set(1.0);
mMaterials.push_back(material);
}
}
+void FbxFileWriter::setInteriorIndex(int32_t index)
+{
+ mInteriorIndex = index;
+}
+
+
void FbxFileWriter::createMaterials(const AuthoringResult& aResult)
{
mMaterials.clear();
@@ -113,10 +121,19 @@ void FbxFileWriter::createMaterials(const AuthoringResult& aResult)
material->DiffuseFactor.Set(1.0);
mMaterials.push_back(material);
}
- FbxSurfacePhong* interiorMat = FbxSurfacePhong::Create(sdkManager.get(), "Interior_Material");
- interiorMat->Diffuse.Set(FbxDouble3(1.0, 0.0, 0.5));
- interiorMat->DiffuseFactor.Set(1.0);
- mMaterials.push_back(interiorMat);
+ if (mInteriorIndex == -1) // No material setted. Create new one.
+ {
+ FbxSurfacePhong* interiorMat = FbxSurfacePhong::Create(sdkManager.get(), "Interior_Material");
+ interiorMat->Diffuse.Set(FbxDouble3(1.0, 0.0, 0.5));
+ interiorMat->DiffuseFactor.Set(1.0);
+ mMaterials.push_back(interiorMat);
+ }
+ else
+ {
+ if (mInteriorIndex < 0) mInteriorIndex = 0;
+ if (static_cast<size_t>(mInteriorIndex) >= mMaterials.size()) mInteriorIndex = 0;
+ }
+
}
@@ -416,7 +433,7 @@ uint32_t FbxFileWriter::createChunkRecursive(uint32_t currentCpIdx, uint32_t chu
mesh->AddPolygon(currentCpIdx + cpIdx + 1);
mesh->AddPolygon(currentCpIdx + cpIdx + 2);
mesh->EndPolygon();
- int32_t material = (tri.materialId != MATERIAL_INTERIOR) ? ((tri.materialId < int32_t(mMaterials.size() - 1)) ? tri.materialId : 0) : int32_t(mMaterials.size() - 1);
+ int32_t material = (tri.materialId != MATERIAL_INTERIOR) ? ((tri.materialId < int32_t(mMaterials.size())) ? tri.materialId : 0) : ((mInteriorIndex == -1) ? int32_t(mMaterials.size() - 1): mInteriorIndex);
matElement->GetIndexArray().SetAt(polyCount, material);
if (smElement)
{
@@ -648,7 +665,7 @@ void FbxFileWriter::createChunkRecursiveNonSkinned(const std::string& meshName,
geUV->GetDirectArray().Add(uv);
}
mesh->EndPolygon();
- int32_t material = (geo.materialId != MATERIAL_INTERIOR) ? ((geo.materialId < int32_t(mMaterials.size() - 1))? geo.materialId : 0) : int32_t(mMaterials.size() - 1);
+ int32_t material = (geo.materialId != MATERIAL_INTERIOR) ? ((geo.materialId < int32_t(mMaterials.size()))? geo.materialId : 0) : ((mInteriorIndex == -1)? int32_t(mMaterials.size() - 1) : mInteriorIndex);
matElement->GetIndexArray().SetAt(polyCount, material);
if (smElement)