3D armature: What are differences between bone's: pose, custom_pose, rest and transform

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By kubecz3k
:warning: Old Version Published before Godot 3 was released.

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?

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.

Sojan | 2016-09-01 16:28

:bust_in_silhouette: Reply From: Leonard Meagher
  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)

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? :slight_smile: It’s just rest+pose+custom_pose? I assume it’s in expressed in model space?

kubecz3k | 2016-10-18 08:42

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

Leonard Meagher | 2016-10-18 12:45

Awesome, thanks! :slight_smile:

kubecz3k | 2016-10-18 13:04

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

Leonard Meagher | 2017-05-18 20:28

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…

Mario Mey | 2022-07-27 00:23