From d27ca7eb73d0157342242cf0f29b2a82a9de737f Mon Sep 17 00:00:00 2001 From: Grant Clarke Date: Fri, 18 Jan 2019 22:26:13 +0000 Subject: Fixed Bone Transform Order The bone index being passed to the visual server is not using the process order and results in incorrect skin deformation if the calculated process order is different from the unordered bones Vector. Incidentally, this never showed when I exported rigged characters from blender using the Better Collada exporter. This bug only materialised when experimenting with the glTF pipeline from Maya. --- scene/3d/skeleton.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scene/3d') diff --git a/scene/3d/skeleton.cpp b/scene/3d/skeleton.cpp index 0db2250a3a..8caf4e8e39 100644 --- a/scene/3d/skeleton.cpp +++ b/scene/3d/skeleton.cpp @@ -320,7 +320,7 @@ void Skeleton::_notification(int p_what) { } b.transform_final = b.pose_global * b.rest_global_inverse; - vs->skeleton_bone_set_transform(skeleton, i, global_transform * (b.transform_final * global_transform_inverse)); + vs->skeleton_bone_set_transform(skeleton, order[i], global_transform * (b.transform_final * global_transform_inverse)); for (List::Element *E = b.nodes_bound.front(); E; E = E->next()) { -- cgit v1.2.3