aboutsummaryrefslogtreecommitdiff
path: root/sdk/extensions/exporter/source/NvBlastExtExporterObjReader.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/NvBlastExtExporterObjReader.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/NvBlastExtExporterObjReader.cpp')
-rw-r--r--sdk/extensions/exporter/source/NvBlastExtExporterObjReader.cpp33
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;
+ }
+ }
}