From b2b9e1e0bf0976379d7f7ee6a410e94a440be2e6 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Thu, 3 Oct 2013 14:35:58 -0700 Subject: [PATCH] Need to allow multiple blendshape mappings per shape index. --- interface/src/renderer/FBXReader.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/interface/src/renderer/FBXReader.cpp b/interface/src/renderer/FBXReader.cpp index 4ac892caa3..9b92c531cd 100644 --- a/interface/src/renderer/FBXReader.cpp +++ b/interface/src/renderer/FBXReader.cpp @@ -210,7 +210,7 @@ QVariantHash parseMapping(QIODevice* device) { for (int i = 2; i < sections.size(); i++) { contents.append(sections.at(i).trimmed()); } - heading.insert(sections.at(1).trimmed(), contents); + heading.insertMulti(sections.at(1).trimmed(), contents); properties.insert(name, heading); } } @@ -360,12 +360,15 @@ FBXGeometry extractFBXGeometry(const FBXNode& node, const QVariantHash& mapping) if (blendshapeName.isEmpty()) { break; } - QVariantList blendshapeMapping = blendshapeMappings.value(blendshapeName).toList(); - if (blendshapeMapping.isEmpty()) { + QList mappings = blendshapeMappings.values(blendshapeName); + if (mappings.isEmpty()) { blendshapeIndices.insert("ExpressionBlendshapes." + blendshapeName, QPair(i, 1.0f)); } else { - blendshapeIndices.insert(blendshapeMapping.at(0).toByteArray(), - QPair(i, blendshapeMapping.at(1).toFloat())); + foreach (const QVariant& mapping, mappings) { + QVariantList blendshapeMapping = mapping.toList(); + blendshapeIndices.insert(blendshapeMapping.at(0).toByteArray(), + QPair(i, blendshapeMapping.at(1).toFloat())); + } } } QHash > blendshapeChannelIndices;