Correct Y-UP transform in gltf serializer

This commit is contained in:
Thomas Krijnen
2019-05-21 18:02:10 +02:00
parent 26621cbcd5
commit bcf8cadc30
+8 -4
View File
@@ -151,15 +151,19 @@ size_t write_accessor(json& j, std::ofstream& ofs, It begin, It end) {
} }
void GltfSerializer::write(const IfcGeom::TriangulationElement<real_t>* o) { void GltfSerializer::write(const IfcGeom::TriangulationElement<real_t>* o) {
if (o->geometry().material_ids().empty()) {
return;
}
node_array_.push_back(json_["nodes"].size()); node_array_.push_back(json_["nodes"].size());
const std::vector<double>& m = o->transformation().matrix().data(); const std::vector<double>& m = o->transformation().matrix().data();
// nb: note that this contains the Y-UP transform as well. // nb: note that this contains the Y-UP transform as well.
const std::array<double, 16> matrix_flat = { const std::array<double, 16> matrix_flat = {
m[0], m[ 2], m[ 1], 0, m[0], m[ 2], -m[ 1], 0,
m[3], m[ 5], m[ 4], 0, m[3], m[ 5], -m[ 4], 0,
m[6], m[ 8], m[ 7], 0, m[6], m[ 8], -m[ 7], 0,
m[9], m[11], m[10], 1 m[9], m[11], -m[10], 1
}; };
static const std::array<double, 16> identity_matrix = {1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}; static const std::array<double, 16> identity_matrix = {1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};