-
-
Notifications
You must be signed in to change notification settings - Fork 21.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Physics interpolation doesn't interpolate Skeleton2D animation correctly, resulting in wobbly visuals #92872
Comments
Ah this is interesting, I hadn't noticed that. It's likely it will need to the interpolated transform somewhere in the relative xforms, will investigate. 👍 |
Have figured this out, took a while debugging the numbers but wasn't as bad a problem as I feared. |
Fixed by #93309. |
This still needs to be fixed in 4.3 IIUC? |
Possibly, I'll be looking at this with @rburing . There are significant differences in the 2D skinning in 4.x if I remember right, so we'll have to see whether the same issue / fix is needed. |
Re-opening as still needs to be done in 4.x (my mistake). |
Transform2D::interpolate_with
result produces unintended skew #71974.Tested versions
System information
Godot v4.3.dev (b7feebe) - Fedora Linux 39 (KDE Plasma) - X11 - GLES3 (Compatibility) - NVIDIA GeForce RTX 4090 (nvidia; 550.78) - 13th Gen Intel(R) Core(TM) i9-13900K (32 Threads)
Issue description
Physics interpolation doesn't interpolate Skeleton2D animation correctly, resulting in wobbly visuals.
I've tried disabling interpolation on specific nodes on the SkeletalPlayer scene, but the only thing that fixes the issue is disabling interpolation on the entire CharacterBody2D – which makes any movement not interpolated. I've also tried changing the process mode of the AnimationPlayer and/or AnimationTree to Physics instead of Idle, but that didn't help either.
This issue is still noticeable at 60 tps on a 120 Hz display, so it's not just at low physics FPS.
All videos were recorded at 60 FPS.
10 ticks per second, physics interpolation enabled
10_tps_with_interpolation.mp4
10 ticks per second, physics interpolation disabled
Skeleton updates at the rendered framerate, so does it actually need to be interpolated here? I've tried disabling interpolation on the skeleton/AnimationPlayer/AnimationTree/Polygon2D nodes and it didn't help though. I've also tried changing the process mode of the AnimationPlayer and/or AnimationTree to Physics instead of Idle.
10_tps_without_interpolation.mp4
10 ticks per second, physics interpolation enabled, AnimationPlayer + AnimationTree using Physics callback mode
10_tps_interpolation_physics_callback.mp4
120 ticks per second, physics interpolation enabled
At this stage, it looks pretty much the same whether interpolation is enabled or not.
120_tps_with_interpolation.mp4
Steps to reproduce
Minimal reproduction project (MRP)
skeleton.zip
The text was updated successfully, but these errors were encountered: