From d334f1c35ce1729ddd6d106b1a7347c88fd49040 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 29 Jan 2018 13:45:39 +1300 Subject: [PATCH 1/5] Don't append trailing FBX root nodes to the tail of the tree --- libraries/fbx/src/FBXReader.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/fbx/src/FBXReader.cpp b/libraries/fbx/src/FBXReader.cpp index 171fc88443..2f5277241c 100644 --- a/libraries/fbx/src/FBXReader.cpp +++ b/libraries/fbx/src/FBXReader.cpp @@ -323,12 +323,12 @@ public: }; void appendModelIDs(const QString& parentID, const QMultiMap& connectionChildMap, - QHash& models, QSet& remainingModels, QVector& modelIDs) { + QHash& models, QSet& remainingModels, QVector& modelIDs, bool isRootNode = false) { if (remainingModels.contains(parentID)) { modelIDs.append(parentID); remainingModels.remove(parentID); } - int parentIndex = modelIDs.size() - 1; + int parentIndex = isRootNode ? -1 : modelIDs.size() - 1; foreach (const QString& childID, connectionChildMap.values(parentID)) { if (remainingModels.contains(childID)) { FBXModel& model = models[childID]; @@ -1478,7 +1478,7 @@ FBXGeometry* FBXReader::extractFBXGeometry(const QVariantHash& mapping, const QS } } QString topID = getTopModelID(_connectionParentMap, models, first, url); - appendModelIDs(_connectionParentMap.value(topID), _connectionChildMap, models, remainingModels, modelIDs); + appendModelIDs(_connectionParentMap.value(topID), _connectionChildMap, models, remainingModels, modelIDs, true); } // figure the number of animation frames from the curves From 09b92b93aab5a54c0df2a667d36289fc2352393d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 Jan 2018 14:36:34 +1300 Subject: [PATCH 2/5] Handle geometric offsets in FBX mesh extents calculations --- libraries/fbx/src/FBXReader.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/fbx/src/FBXReader.cpp b/libraries/fbx/src/FBXReader.cpp index 2f5277241c..e23d46df18 100644 --- a/libraries/fbx/src/FBXReader.cpp +++ b/libraries/fbx/src/FBXReader.cpp @@ -272,6 +272,11 @@ glm::mat4 getGlobalTransform(const QMultiMap& _connectionParen const FBXModel& model = models.value(nodeID); globalTransform = glm::translate(model.translation) * model.preTransform * glm::mat4_cast(model.preRotation * model.rotation * model.postRotation) * model.postTransform * globalTransform; + if (model.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(model.geometricScaling, model.geometricRotation, model.geometricTranslation); + globalTransform = globalTransform * geometricOffset; + } + if (mixamoHack) { // there's something weird about the models from Mixamo Fuse; they don't skin right with the full transform return globalTransform; From cadd4e61ad5bb2c2e5e3025614f16fcf7feac00b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 Jan 2018 14:36:53 +1300 Subject: [PATCH 3/5] Fix indent --- libraries/fbx/src/FBXReader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXReader.cpp b/libraries/fbx/src/FBXReader.cpp index e23d46df18..aa5c594981 100644 --- a/libraries/fbx/src/FBXReader.cpp +++ b/libraries/fbx/src/FBXReader.cpp @@ -1538,7 +1538,7 @@ FBXGeometry* FBXReader::extractFBXGeometry(const QVariantHash& mapping, const QS joint.transform = geometry.offset * glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(combinedRotation) * joint.postTransform; joint.inverseDefaultRotation = glm::inverse(combinedRotation); - joint.distanceToParent = 0.0f; + joint.distanceToParent = 0.0f; } else { const FBXJoint& parentJoint = geometry.joints.at(joint.parentIndex); From 3aa12eb7df2a36d2d12786f4a2b7669407d479d5 Mon Sep 17 00:00:00 2001 From: Liv Erickson Date: Mon, 29 Jan 2018 17:51:26 -0800 Subject: [PATCH 4/5] pass in deletedIDs so can delete children depth > 1 --- scripts/system/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 92ccdf6565..f8c097795a 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1344,7 +1344,7 @@ function recursiveDelete(entities, childrenList, deletedIDs) { var entityID = entities[i]; var children = Entities.getChildrenIDs(entityID); var grandchildrenList = []; - recursiveDelete(children, grandchildrenList); + recursiveDelete(children, grandchildrenList, deletedIDs); var initialProperties = Entities.getEntityProperties(entityID); childrenList.push({ entityID: entityID, From cb6bebd824cfc3fa53212d4a9d67e6a6e2838778 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 29 Jan 2018 19:43:32 -0800 Subject: [PATCH 5/5] Fix Mac dev builds --- libraries/shared/src/PathUtils.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/shared/src/PathUtils.cpp b/libraries/shared/src/PathUtils.cpp index 41db7281ac..ac402a549f 100644 --- a/libraries/shared/src/PathUtils.cpp +++ b/libraries/shared/src/PathUtils.cpp @@ -37,10 +37,10 @@ QString TEMP_DIR_FORMAT { "%1-%2-%3" }; #if !defined(Q_OS_ANDROID) && defined(DEV_BUILD) -#if defined(Q_OS_OSX) -static bool USE_SOURCE_TREE_RESOURCES = true; -#else static bool USE_SOURCE_TREE_RESOURCES() { +#if defined(Q_OS_OSX) + return true; +#else static bool result = false; static std::once_flag once; std::call_once(once, [&] { @@ -48,8 +48,8 @@ static bool USE_SOURCE_TREE_RESOURCES() { result = QProcessEnvironment::systemEnvironment().contains(USE_SOURCE_TREE_RESOURCES_FLAG); }); return result; -} #endif +} #endif #ifdef DEV_BUILD