From 58967e739a1d764646d9867bd1dbe5fe42fdb3a9 Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Mon, 13 Dec 2021 17:29:20 +0100 Subject: [PATCH] Fix import transform for skinned models #610 --- Source/Engine/Tools/ModelTool/ModelTool.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Source/Engine/Tools/ModelTool/ModelTool.cpp b/Source/Engine/Tools/ModelTool/ModelTool.cpp index c6a6d42f5..85d0a328c 100644 --- a/Source/Engine/Tools/ModelTool/ModelTool.cpp +++ b/Source/Engine/Tools/ModelTool/ModelTool.cpp @@ -827,16 +827,18 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op { // Transform the root node using the import transformation auto& root = data.Skeleton.RootNode(); + Transform meshTransform = root.LocalTransform.WorldToLocal(importTransform).LocalToWorld(root.LocalTransform); root.LocalTransform = importTransform.LocalToWorld(root.LocalTransform); // Apply import transform on meshes - Matrix importTransformMatrix; - importTransform.GetWorld(importTransformMatrix); + Matrix meshTransformMatrix; + meshTransform.GetWorld(meshTransformMatrix); for (int32 lodIndex = 0; lodIndex < data.LODs.Count(); lodIndex++) { - for (int32 meshIndex = 0; meshIndex < data.LODs[lodIndex].Meshes.Count(); meshIndex++) + auto& lod = data.LODs[lodIndex]; + for (int32 meshIndex = 0; meshIndex < lod.Meshes.Count(); meshIndex++) { - data.LODs[lodIndex].Meshes[meshIndex]->TransformBuffer(importTransformMatrix); + lod.Meshes[meshIndex]->TransformBuffer(meshTransformMatrix); } }