From 2b376f78811c70e273861c5122c921a9e9e23b47 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 3 Apr 2019 14:13:51 -0700 Subject: [PATCH] handle weird material name case --- libraries/baking/src/ModelBaker.cpp | 1 + libraries/fbx/src/FBXSerializer.cpp | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libraries/baking/src/ModelBaker.cpp b/libraries/baking/src/ModelBaker.cpp index e92e4afe84..82af2f94e9 100644 --- a/libraries/baking/src/ModelBaker.cpp +++ b/libraries/baking/src/ModelBaker.cpp @@ -326,6 +326,7 @@ void ModelBaker::outputBakedFST() { auto outputMapping = _mapping; outputMapping[FST_VERSION_FIELD] = FST_VERSION; outputMapping[FILENAME_FIELD] = _bakedModelURL.fileName(); + outputMapping.remove(TEXDIR_FIELD); hifi::ByteArray fstOut = FSTReader::writeMapping(outputMapping); QFile fstOutputFile { outputFSTURL }; diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 5c5b5fa002..0b965e276d 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -97,7 +97,7 @@ QString processID(const QString& id) { return id.mid(id.lastIndexOf(':') + 1); } -QString getName(const QVariantList& properties) { +QString getModelName(const QVariantList& properties) { QString name; if (properties.size() == 3) { name = properties.at(1).toString(); @@ -108,6 +108,17 @@ QString getName(const QVariantList& properties) { return name; } +QString getMaterialName(const QVariantList& properties) { + QString name; + if (properties.size() == 1 || properties.at(1).toString().isEmpty()) { + name = properties.at(0).toString(); + name = processID(name.left(name.indexOf(QChar('\0')))); + } else { + name = processID(properties.at(1).toString()); + } + return name; +} + QString getID(const QVariantList& properties, int index = 0) { return processID(properties.at(index).toString()); } @@ -507,7 +518,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const blendshapes.append(extracted); } } else if (object.name == "Model") { - QString name = getName(object.properties); + QString name = getModelName(object.properties); QString id = getID(object.properties); modelIDsToNames.insert(id, name); @@ -826,7 +837,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } else if (object.name == "Material") { HFMMaterial material; MaterialParam materialParam; - material.name = (object.properties.at(1).toString()); + material.name = getMaterialName(object.properties); foreach (const FBXNode& subobject, object.children) { bool properties = false;