Hi. I'm curious why Skeleton3D member functions 'global_pose_to_local_pose' and 'local_pose_to_global_pose' were removed somewhere between the beta (circa Dec) and RC2. They seemed helpful for manipulating a bone in its own basis. Yet they must have been removed for a good reason. I'm definitely a novice and trying to better understand the Skeleton3D API which is still quite poorly documented.

My goal is to twist or bend a skeleton at the waist, following a directional input to some degree, in addition to an existing animation. My previous code looked like:

var trfm = myskel.get_bone_global_pose_no_override(spineMidBoneId)
trfm = myskel.global_pose_to_local_pose(spineMidBoneId, trfm)
trfm = trfm.rotated_local(Vector3.LEFT, -twistByRad)
trfm = myskel.local_pose_to_global_pose(spineMidBoneId, trfm)
myskel.set_bone_global_pose_override(spineMidBoneId, trfm, 1.0, true)

Franky, it was probably a mistake that I transformed to a local basis since this conflates bending and twisting in a skeletal basis. Yet, it was still a nice option to use either a local or global (skeletal) basis so I'm curious why those functions were removed.

As an aside, I am completely overriding the animation by setting the blending 1.0. What I really want is something additive. Is that a worthy request or is there an alternative approach that I should consider? All I can think of as an alternative is doubling the desired deviation and blending by 0.5.

  • Tomcat replied to this.
  • FuriousRabbit I'm curious why Skeleton3D member functions 'global_pose_to_local_pose' and 'local_pose_to_global_pose' were removed somewhere between the beta (circa Dec) and RC2.

    Apparently this is what it says here:

    Unfortunately, we also have to rollback one of the core animations features. After a lot of testing and consideration we’ve decided to postpone improvements to the inverse kinematics system until a future Godot 4.x release, removing the currently unstable SkeletonModificationStack3D. This decision allows us to better focus efforts of the Animation team on stabilizing other features.

    FuriousRabbit I'm curious why Skeleton3D member functions 'global_pose_to_local_pose' and 'local_pose_to_global_pose' were removed somewhere between the beta (circa Dec) and RC2.

    Apparently this is what it says here:

    Unfortunately, we also have to rollback one of the core animations features. After a lot of testing and consideration we’ve decided to postpone improvements to the inverse kinematics system until a future Godot 4.x release, removing the currently unstable SkeletonModificationStack3D. This decision allows us to better focus efforts of the Animation team on stabilizing other features.

    Thanks, Tomcat, for pointing me to the info. Although they refer to inverse kinematics, I would say even forward kinematics is lacking the clarity and polish I've become accustomed to with Godot. Perhaps both will be overhauled.