Fix import transform for skinned models

#610
This commit is contained in:
Wojciech Figat
2021-12-13 17:29:20 +01:00
parent 224b9b8930
commit 58967e739a

View File

@@ -827,16 +827,18 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
{ {
// Transform the root node using the import transformation // Transform the root node using the import transformation
auto& root = data.Skeleton.RootNode(); auto& root = data.Skeleton.RootNode();
Transform meshTransform = root.LocalTransform.WorldToLocal(importTransform).LocalToWorld(root.LocalTransform);
root.LocalTransform = importTransform.LocalToWorld(root.LocalTransform); root.LocalTransform = importTransform.LocalToWorld(root.LocalTransform);
// Apply import transform on meshes // Apply import transform on meshes
Matrix importTransformMatrix; Matrix meshTransformMatrix;
importTransform.GetWorld(importTransformMatrix); meshTransform.GetWorld(meshTransformMatrix);
for (int32 lodIndex = 0; lodIndex < data.LODs.Count(); lodIndex++) 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);
} }
} }