diff options
| author | Bryan Galdrikian <[email protected]> | 2018-01-22 14:04:16 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2018-01-22 14:04:16 -0800 |
| commit | 1dc1a87fba520bb45c1ce8165e8ea2c83c0a308d (patch) | |
| tree | 5f8ca75a6b92c60fb5cf3b14282fc4cc1c127eb2 /sdk/extensions/exporter/source/NvBlastExtExporterObjReader.cpp | |
| parent | Updating readme.md to show updated UE4 Blast integration branches (diff) | |
| download | blast-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/NvBlastExtExporterObjReader.cpp')
| -rw-r--r-- | sdk/extensions/exporter/source/NvBlastExtExporterObjReader.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/sdk/extensions/exporter/source/NvBlastExtExporterObjReader.cpp b/sdk/extensions/exporter/source/NvBlastExtExporterObjReader.cpp index fb6e9b3..9eba7d5 100644 --- a/sdk/extensions/exporter/source/NvBlastExtExporterObjReader.cpp +++ b/sdk/extensions/exporter/source/NvBlastExtExporterObjReader.cpp @@ -60,7 +60,18 @@ void ObjFileReader::loadFromFile(const char* filename) std::vector<tinyobj::material_t> mats; std::string err; std::string mtlPath; - bool ret = tinyobj::LoadObj(shapes, mats, err, filename); + + int32_t lastDelimeter = strlen(filename); + + while (lastDelimeter > 0 && filename[lastDelimeter] != '/' && filename[lastDelimeter] != '\\') + { + lastDelimeter--; + } + mtlPath = std::string(filename, filename + lastDelimeter); + mtlPath += '/'; + + bool ret = tinyobj::LoadObj(shapes, mats, err, filename, mtlPath.c_str()); + // can't load? if (!ret) { @@ -71,6 +82,18 @@ void ObjFileReader::loadFromFile(const char* filename) std::cout << "Can load only one object per mesh" << std::endl; } + if (!mats.empty()) + { + if (mats.size() == 1 && mats[0].name == "") + { + mats[0].name = "Default"; + } + for (uint32_t i = 0; i < mats.size(); ++i) + { + mMaterialNames.push_back(mats[i].name); + } + } + mVertexPositions.clear(); mVertexNormals.clear(); mVertexUv.clear(); @@ -93,6 +116,14 @@ void ObjFileReader::loadFromFile(const char* filename) } mIndices = shapes[0].mesh.indices; + mPerFaceMatId = shapes[0].mesh.material_ids; + for (uint32_t i = 0; i < mPerFaceMatId.size(); ++i) + { + if (mPerFaceMatId[i] == -1) // TinyOBJ loader sets ID to -1 when .mtl file not found. Set to default 0 material. + { + mPerFaceMatId[i] = 0; + } + } } |