+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,285 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)

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 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 webmaster@godotengine.org with your username.