fix bone scale/rotation in AnimationPlayers

fixes #17325.

The bone pose transform was created by setting the rotation and
**then** scaling the transform. This leads to object "deformation"
that's not intended.

(cherry picked from commit 4303fbca5a)
This commit is contained in:
karroffel 2018-04-03 16:40:53 +02:00 committed by Hein-Pieter van Braam
parent cf3c1d878d
commit 2e31c9fe10
2 changed files with 2 additions and 2 deletions

View File

@ -590,8 +590,8 @@ void AnimationPlayer::_animation_update_transforms() {
Transform t; Transform t;
t.origin = nc->loc_accum; t.origin = nc->loc_accum;
t.basis = nc->rot_accum;
t.basis.scale(nc->scale_accum); t.basis.scale(nc->scale_accum);
t.basis.rotate(nc->rot_accum.get_euler());
if (nc->skeleton && nc->bone_idx >= 0) { if (nc->skeleton && nc->bone_idx >= 0) {

View File

@ -895,13 +895,13 @@ void AnimationTreePlayer::_process_animation(float p_delta) {
} }
Transform xform; Transform xform;
xform.basis = t.rot;
xform.origin = t.loc; xform.origin = t.loc;
t.scale.x += 1.0; t.scale.x += 1.0;
t.scale.y += 1.0; t.scale.y += 1.0;
t.scale.z += 1.0; t.scale.z += 1.0;
xform.basis.scale(t.scale); xform.basis.scale(t.scale);
xform.basis.rotate(t.rot.get_euler());
if (t.bone_idx >= 0) { if (t.bone_idx >= 0) {
if (t.skeleton) if (t.skeleton)