From bcf8cadc3097f56c534ce3f7382eb0ef37a46982 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 21 May 2019 18:02:10 +0200 Subject: [PATCH] Correct Y-UP transform in gltf serializer --- src/serializers/GltfSerializer.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/serializers/GltfSerializer.cpp b/src/serializers/GltfSerializer.cpp index a9881c0183..3b73f41b52 100644 --- a/src/serializers/GltfSerializer.cpp +++ b/src/serializers/GltfSerializer.cpp @@ -151,15 +151,19 @@ size_t write_accessor(json& j, std::ofstream& ofs, It begin, It end) { } void GltfSerializer::write(const IfcGeom::TriangulationElement* o) { + if (o->geometry().material_ids().empty()) { + return; + } + node_array_.push_back(json_["nodes"].size()); const std::vector& m = o->transformation().matrix().data(); // nb: note that this contains the Y-UP transform as well. const std::array matrix_flat = { - m[0], m[ 2], m[ 1], 0, - m[3], m[ 5], m[ 4], 0, - m[6], m[ 8], m[ 7], 0, - m[9], m[11], m[10], 1 + m[0], m[ 2], -m[ 1], 0, + m[3], m[ 5], -m[ 4], 0, + m[6], m[ 8], -m[ 7], 0, + m[9], m[11], -m[10], 1 }; static const std::array identity_matrix = {1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};