The Godot Q&A is currently undergoing maintenance!

Your ability to ask and answer questions is temporarily disabled. You can browse existing threads in read-only mode.

We are working on bringing this community platform back to its full functionality, stay tuned for updates.

godotengine.org | Twitter

+1 vote

I'm working with 3d armature system for some time but I still don't clearly understand differences between Skeleton.get_bone_pose(), Skeleton.get_bone_custom_pose(), Skeleton.get_bone_rest(), Skeleton.get_bone_transform()
Someone maybe will have better understanding of those?

in Engine by (1,299 points)

I beleive a pose is a placement of a bunch of bones, usually a character. So you might have a standing pose, a sitting pose exe, and transform is the position of a bone. But im not entirly sure how those functions work.

1 Answer

+5 votes
Best answer
  1. Bone rest is the default position of the bone
  2. Bone pose is the relative transform from the rest position
  3. Custom pose is an additional transform applied to the Bone pose
  4. Global pose is the bone Parent's global pose * Rest * Custom * Pose (unless the bone has no parent) and it is relative to the skeleton node
  5. Getting the Bone transform is getting the Bone's global pose with it's global rest pose removed (it's rest, and all the ancestor's rest poses combined)
by (122 points)
edited by

Thanks a lot Leonard! Finally it's a little more clear for me. But I'm still not sure what's get_bone_global_pose() could you add this to your answer? :) It's just rest+pose+custom_pose? I assume it's in expressed in model space?

Edited! Adding the definition of global pose sort of made my definition of transform wrong.

Awesome, thanks! :)

Forgot that's how this worked, glad I was able to help myself out a year and a half later (ish)

Documentation lacks about custom pose... so, what's the difference between set_bone_custom_pose() and set_bone_pose()? I would want to understand it...

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.