From 348c34811f5895b3ab086baabbdf6d43443d623a Mon Sep 17 00:00:00 2001 From: Bernold Kraft Date: Fri, 26 Mar 2021 22:21:45 +0100 Subject: [PATCH] Fixing CHUNK_TRMATRIX translation sub chunk and therefore omitting the transform aggregation in the CHUNK_VERTLIST. --- code/AssetLib/3DS/3DSExporter.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/AssetLib/3DS/3DSExporter.cpp b/code/AssetLib/3DS/3DSExporter.cpp index 32d45c039..108d917d1 100644 --- a/code/AssetLib/3DS/3DSExporter.cpp +++ b/code/AssetLib/3DS/3DSExporter.cpp @@ -444,7 +444,7 @@ void Discreet3DSExporter::WriteMeshes() { const uint16_t count = static_cast(mesh.mNumVertices); writer.PutU2(count); for (unsigned int i = 0; i < mesh.mNumVertices; ++i) { - const aiVector3D &v = trafo * mesh.mVertices[i]; + const aiVector3D &v = mesh.mVertices[i]; writer.PutF4(v.x); writer.PutF4(v.y); writer.PutF4(v.z); @@ -506,11 +506,16 @@ void Discreet3DSExporter::WriteMeshes() { // Transformation matrix by which the mesh vertices have been pre-transformed with. { ChunkWriter curChunk(writer, Discreet3DS::CHUNK_TRMATRIX); - for (unsigned int r = 0; r < 4; ++r) { + // Store rotation 3x3 matrix row wise + for (unsigned int r = 0; r < 3; ++r) { for (unsigned int c = 0; c < 3; ++c) { writer.PutF4(trafo[r][c]); } } + // Store translation sub vector column wise + for (unsigned int r = 0; r < 3; ++r) { + writer.PutF4(trafo[r][3]); + } } } }