mirror of
https://github.com/godotengine/godot.git
synced 2025-03-19 23:53:32 +08:00
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 4303fbca5ab3e46b99834a810fa27fd7176f6213)
This commit is contained in:
parent
cf3c1d878d
commit
2e31c9fe10
@ -590,8 +590,8 @@ void AnimationPlayer::_animation_update_transforms() {
|
||||
|
||||
Transform t;
|
||||
t.origin = nc->loc_accum;
|
||||
t.basis = nc->rot_accum;
|
||||
t.basis.scale(nc->scale_accum);
|
||||
t.basis.rotate(nc->rot_accum.get_euler());
|
||||
|
||||
if (nc->skeleton && nc->bone_idx >= 0) {
|
||||
|
||||
|
@ -895,13 +895,13 @@ void AnimationTreePlayer::_process_animation(float p_delta) {
|
||||
}
|
||||
|
||||
Transform xform;
|
||||
xform.basis = t.rot;
|
||||
xform.origin = t.loc;
|
||||
|
||||
t.scale.x += 1.0;
|
||||
t.scale.y += 1.0;
|
||||
t.scale.z += 1.0;
|
||||
xform.basis.scale(t.scale);
|
||||
xform.basis.rotate(t.rot.get_euler());
|
||||
|
||||
if (t.bone_idx >= 0) {
|
||||
if (t.skeleton)
|
||||
|
Loading…
x
Reference in New Issue
Block a user