From 82e43aea113116ca917294d9cda360e16d5456ab Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 8 May 2018 13:59:38 -0700 Subject: [PATCH] Baking - if mesh extraction or compression fails don't change node Needed to prevent a null (would-be Draco mesh) node being added. --- libraries/baking/src/FBXBaker.cpp | 59 ++++++++++++++++--------------- libraries/fbx/src/FBXWriter.cpp | 3 +- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/libraries/baking/src/FBXBaker.cpp b/libraries/baking/src/FBXBaker.cpp index 0cd0c0addb..0aa0414518 100644 --- a/libraries/baking/src/FBXBaker.cpp +++ b/libraries/baking/src/FBXBaker.cpp @@ -257,39 +257,40 @@ void FBXBaker::rewriteAndBakeSceneModels() { } else if (hasWarnings()) { continue; } - } - - objectChild.children.push_back(dracoMeshNode); + } else { + objectChild.children.push_back(dracoMeshNode); - static const std::vector nodeNamesToDelete { - // Node data that is packed into the draco mesh - "Vertices", - "PolygonVertexIndex", - "LayerElementNormal", - "LayerElementColor", - "LayerElementUV", - "LayerElementMaterial", - "LayerElementTexture", + static const std::vector nodeNamesToDelete { + // Node data that is packed into the draco mesh + "Vertices", + "PolygonVertexIndex", + "LayerElementNormal", + "LayerElementColor", + "LayerElementUV", + "LayerElementMaterial", + "LayerElementTexture", - // Node data that we don't support - "Edges", - "LayerElementTangent", - "LayerElementBinormal", - "LayerElementSmoothing" - }; - auto& children = objectChild.children; - auto it = children.begin(); - while (it != children.end()) { - auto begin = nodeNamesToDelete.begin(); - auto end = nodeNamesToDelete.end(); - if (find(begin, end, it->name) != end) { - it = children.erase(it); - } else { - ++it; + // Node data that we don't support + "Edges", + "LayerElementTangent", + "LayerElementBinormal", + "LayerElementSmoothing" + }; + auto& children = objectChild.children; + auto it = children.begin(); + while (it != children.end()) { + auto begin = nodeNamesToDelete.begin(); + auto end = nodeNamesToDelete.end(); + if (find(begin, end, it->name) != end) { + it = children.erase(it); + } else { + ++it; + } } } - } - } + } // Geometry Object + + } // foreach root child } } } diff --git a/libraries/fbx/src/FBXWriter.cpp b/libraries/fbx/src/FBXWriter.cpp index 511f253193..9cdc552af1 100644 --- a/libraries/fbx/src/FBXWriter.cpp +++ b/libraries/fbx/src/FBXWriter.cpp @@ -62,8 +62,7 @@ QByteArray FBXWriter::encodeFBX(const FBXNode& root) { out.setVersion(QDataStream::Qt_4_5); out.writeRawData(FBX_BINARY_PROLOG, FBX_BINARY_PROLOG.size()); - auto bytes = QByteArray(FBX_HEADER_BYTES_BEFORE_VERSION - FBX_BINARY_PROLOG.size(), '\0'); - out.writeRawData(bytes, bytes.size()); + out.writeRawData("\0\x1a", 3); // Blender needs this header component. #ifdef USE_FBX_2016_FORMAT out << FBX_VERSION_2016;