Skeleton for characters and animated objects.
    public class Skeleton : Spatial

Skeleton provides a hierarchical interface for managing bones, including pose, rest and animation (see Animation). Skeleton will support rag doll dynamics in the future.

The overall transform of a bone with respect to the skeleton is determined by the following hierarchical order: rest pose, custom pose and pose.

Note that “global pose” below refers to the overall transform of the bone with respect to skeleton, so it not the actual global/world transform of the bone.

Inheritance Chain

Static Fields

    public const Int32 NotificationUpdateSkeleton = 50


    public Skeleton()


    public bool BonesInWorldTransform { get; set; }


    public void AddBone(string name)

Add a bone, with name “name”. GetBoneCount() will become the bone index.

    public void BindChildNodeToBone(int boneIdx, Node node)

Deprecated soon.

    public void ClearBones()

Clear all the bones in this skeleton.

    public int FindBone(string name)

Return the bone index that matches “name” as its name.

    public int GetBoneCount()

Return the amount of bones in the skeleton.

    public Transform GetBoneCustomPose(int boneIdx)

Return the custom pose of the specified bone. Custom pose is applied on top of the rest pose.

    public Transform GetBoneGlobalPose(int boneIdx)

Return the overall transform of the specified bone, with respect to the skeleton. Being relative to the skeleton frame, this is not the actual “global” transform of the bone.

    public string GetBoneName(int boneIdx)

Return the name of the bone at index “index”.

    public int GetBoneParent(int boneIdx)

Return the bone index which is the parent of the bone at “bone_idx”. If -1, then bone has no parent. Note that the parent bone returned will always be less than “bone_idx”.

    public Transform GetBonePose(int boneIdx)

Return the pose transform of the specified bone. Pose is applied on top of the custom pose, which is applied on top the rest pose.

    public Transform GetBoneRest(int boneIdx)

Return the rest transform for a bone “bone_idx”.

    public Transform GetBoneTransform(int boneIdx)

Return the combination of custom pose and pose. The returned transform is in skeleton’s reference frame.

    public Godot.Collections.Array GetBoundChildNodesToBone(int boneIdx)

Deprecated soon.

    public bool IsBoneRestDisabled(int boneIdx)

    public bool IsUsingBonesInWorldTransform()

Getter for BonesInWorldTransform

    public void PhysicalBonesAddCollisionException(RID exception)

    public void PhysicalBonesRemoveCollisionException(RID exception)

    public void PhysicalBonesStartSimulation(Godot.Collections.Array bones = null)

    public void PhysicalBonesStopSimulation()

    public void SetBoneCustomPose(int boneIdx, Transform customPose)

    public void SetBoneDisableRest(int boneIdx, bool disable)

    public void SetBoneGlobalPose(int boneIdx, Transform pose)

    public void SetBoneIgnoreAnimation(int bone, bool ignore)

    public void SetBoneParent(int boneIdx, int parentIdx)

Set the bone index “parent_idx” as the parent of the bone at “bone_idx”. If -1, then bone has no parent. Note: “parent_idx” must be less than “bone_idx”.

    public void SetBonePose(int boneIdx, Transform pose)

Return the pose transform for bone “bone_idx”.

    public void SetBoneRest(int boneIdx, Transform rest)

Set the rest transform for bone “bone_idx”

    public void SetUseBonesInWorldTransform(bool enable)

Setter for BonesInWorldTransform

    public void UnbindChildNodeFromBone(int boneIdx, Node node)

Deprecated soon.

    public void UnparentBoneAndRest(int boneIdx)