godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.52k stars 21.07k forks source link

[Godot 4] Root Motion rig from Blender calculated wrong in Godot #77087

Closed TypeOverride closed 1 year ago

TypeOverride commented 1 year ago

Godot version

4.1.dev2

System information

Windows 10

Issue description

Root motion is not working proper in Godot when exporting a rig from Blender.

Furthermore it seems that the imported asset looks into the wrong direction in Godot. Front view in Blender is showing the front of the character, while in Godot you see the back of the character.

(I think i know what the problem is now - the rotation of the root bone. So maybe it goes into a proposal here - to get an option in Godot for determine the axis or orientation for correcting the caluclation?)

Steps to reproduce

Create in Blender a character with a root motion rig Import it to Godot (gltf) Create a Node3D scene with a AnimationTree and setted root motion to the root bone Create a RootMotionView and set the animationPath to AnimationTree

Minimal reproduction project

https://www.youtube.com/watch?v=t_2i6Sv_On4

lyuma commented 1 year ago

@TypeOverride have you considered using the BoneMap setting in the advanced import for the Skeleton3D node. Assigning a SkeletonProfile (such as SkeletonProfileHumanoid) inside the BoneMap will enable the retarget system: https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/retargeting_3d_skeletons.html Specifically, the "Apply Node Transforms" feature is what you're looking for, and may resolve the issue you're experiencing with the backwards or rotated rig.

Also, you did not attach a valid reproducion project. It must be a .zip of a project folder (with the .godot folder removed) which shows the issue. Without this, we cannot evaluate if you have encountered a real bug / issue.

TokageItLab commented 1 year ago

Dupe of https://github.com/godotengine/godot/issues/75228. See also https://github.com/godotengine/godot/pull/76052.