2017-09-12 22:42:36 +02:00
<?xml version="1.0" encoding="UTF-8" ?>
2020-03-30 18:22:57 +02:00
<class name= "Skeleton3D" inherits= "Node3D" version= "4.0" >
2017-09-12 22:42:36 +02:00
<brief_description >
Skeleton for characters and animated objects.
</brief_description>
<description >
2020-03-30 18:22:57 +02:00
Skeleton3D provides a hierarchical interface for managing bones, including pose, rest and animation (see [Animation]). It can also use ragdoll physics.
2018-06-15 01:07:03 +02:00
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.
2017-09-12 22:42:36 +02:00
</description>
<tutorials >
2020-10-01 10:34:47 +02:00
<link title= "3D Inverse Kinematics Demo" > https://godotengine.org/asset-library/asset/523</link>
<link title= "Third Person Shooter Demo" > https://godotengine.org/asset-library/asset/678</link>
2017-09-12 22:42:36 +02:00
</tutorials>
<methods >
<method name= "add_bone" >
<return type= "void" >
</return>
<argument index= "0" name= "name" type= "String" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Adds a bone, with name [code]name[/code]. [method get_bone_count] will become the bone index.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "bind_child_node_to_bone" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "node" type= "Node" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
[i]Deprecated soon.[/i]
2017-09-12 22:42:36 +02:00
</description>
</method>
2020-05-26 20:17:11 +02:00
<method name= "bone_transform_to_world_transform" >
<return type= "Transform" >
</return>
<argument index= "0" name= "bone_transform" type= "Transform" >
</argument>
<description >
Takes the given bone pose/transform and converts it to a world transform, relative to the [Skeleton3D] node.
This is useful for using the bone transform in calculations with transforms from [Node3D]-based nodes.
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "clear_bones" >
<return type= "void" >
</return>
<description >
Clear all the bones in this skeleton.
</description>
</method>
2020-03-30 18:22:57 +02:00
<method name= "clear_bones_global_pose_override" >
<return type= "void" >
</return>
<description >
2020-05-26 20:17:11 +02:00
Removes the global pose override on all bones in the skeleton.
2020-03-30 18:22:57 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "find_bone" qualifiers= "const" >
<return type= "int" >
</return>
<argument index= "0" name= "name" type= "String" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Returns the bone index that matches [code]name[/code] as its name.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "get_bone_count" qualifiers= "const" >
<return type= "int" >
</return>
<description >
2019-05-24 04:15:43 +02:00
Returns the amount of bones in the skeleton.
2017-09-12 22:42:36 +02:00
</description>
</method>
2019-09-27 22:16:32 +02:00
<method name= "get_bone_custom_pose" qualifiers= "const" >
<return type= "Transform" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
Returns the custom pose of the specified bone. Custom pose is applied on top of the rest pose.
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "get_bone_global_pose" qualifiers= "const" >
<return type= "Transform" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2019-05-24 04:15:43 +02:00
Returns 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.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "get_bone_name" qualifiers= "const" >
<return type= "String" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Returns the name of the bone at index [code]index[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "get_bone_parent" qualifiers= "const" >
<return type= "int" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Returns the bone index which is the parent of the bone at [code]bone_idx[/code]. If -1, then bone has no parent.
[b]Note:[/b] The parent bone returned will always be less than [code]bone_idx[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "get_bone_pose" qualifiers= "const" >
<return type= "Transform" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2019-05-24 04:15:43 +02:00
Returns the pose transform of the specified bone. Pose is applied on top of the custom pose, which is applied on top the rest pose.
2017-09-12 22:42:36 +02:00
</description>
</method>
2020-06-04 10:07:56 +02:00
<method name= "get_bone_process_orders" >
<return type= "PackedInt32Array" >
</return>
<description >
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "get_bone_rest" qualifiers= "const" >
<return type= "Transform" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Returns the rest transform for a bone [code]bone_idx[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "get_bound_child_nodes_to_bone" qualifiers= "const" >
<return type= "Array" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
[i]Deprecated soon.[/i]
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "is_bone_rest_disabled" qualifiers= "const" >
<return type= "bool" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2020-05-26 20:17:11 +02:00
Returns whether the bone rest for the bone at [code]bone_idx[/code] is disabled.
2017-09-12 22:42:36 +02:00
</description>
</method>
2019-04-23 21:39:09 +02:00
<method name= "localize_rests" >
<return type= "void" >
</return>
<description >
2020-05-26 20:17:11 +02:00
Returns all bones in the skeleton to their rest poses.
2019-04-23 21:39:09 +02:00
</description>
</method>
2018-05-12 09:38:00 +02:00
<method name= "physical_bones_add_collision_exception" >
<return type= "void" >
</return>
<argument index= "0" name= "exception" type= "RID" >
</argument>
<description >
2020-05-26 20:17:11 +02:00
Adds a collision exception to the physical bone.
Works just like the [RigidBody3D] node.
2018-05-12 09:38:00 +02:00
</description>
</method>
<method name= "physical_bones_remove_collision_exception" >
<return type= "void" >
</return>
<argument index= "0" name= "exception" type= "RID" >
</argument>
<description >
2020-05-26 20:17:11 +02:00
Removes a collision exception to the physical bone.
Works just like the [RigidBody3D] node.
2018-05-12 09:38:00 +02:00
</description>
</method>
2018-05-28 14:53:15 +02:00
<method name= "physical_bones_start_simulation" >
2018-05-12 09:38:00 +02:00
<return type= "void" >
</return>
2020-04-24 17:43:10 +02:00
<argument index= "0" name= "bones" type= "StringName[]" default= "[ ]" >
2018-05-12 09:38:00 +02:00
</argument>
<description >
2020-05-26 20:17:11 +02:00
Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and reacting to the physics world.
Optionally, a list of bone names can be passed-in, allowing only the passed-in bones to be simulated.
2018-05-12 09:38:00 +02:00
</description>
</method>
2018-05-28 14:53:15 +02:00
<method name= "physical_bones_stop_simulation" >
<return type= "void" >
</return>
<description >
2020-05-26 20:17:11 +02:00
Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating.
2018-05-28 14:53:15 +02:00
</description>
</method>
2019-09-24 11:44:48 +02:00
<method name= "register_skin" >
<return type= "SkinReference" >
2017-09-12 22:42:36 +02:00
</return>
2019-09-24 11:44:48 +02:00
<argument index= "0" name= "skin" type= "Skin" >
2017-09-12 22:42:36 +02:00
</argument>
<description >
2020-05-26 20:17:11 +02:00
Binds the given Skin to the Skeleton.
2017-09-12 22:42:36 +02:00
</description>
</method>
2019-09-27 22:16:32 +02:00
<method name= "set_bone_custom_pose" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "custom_pose" type= "Transform" >
</argument>
<description >
2020-05-26 20:17:11 +02:00
Sets the custom pose transform, [code]custom_pose[/code], for the bone at [code]bone_idx[/code]. This pose is an addition to the bone rest pose.
[b]Note[/b]: The pose transform needs to be in bone space. Use [method world_transform_to_bone_transform] to convert a world transform, like one you can get from a [Node3D], to bone space.
2019-09-27 22:16:32 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "set_bone_disable_rest" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "disable" type= "bool" >
</argument>
<description >
2020-05-26 20:17:11 +02:00
Disables the rest pose for the bone at [code]bone_idx[/code] if [code]true[/code], enables the bone rest if [code]false[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
2019-09-24 11:44:48 +02:00
<method name= "set_bone_global_pose_override" >
2017-09-12 22:42:36 +02:00
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "pose" type= "Transform" >
</argument>
2019-09-24 11:44:48 +02:00
<argument index= "2" name= "amount" type= "float" >
2018-08-21 00:35:30 +02:00
</argument>
2019-09-24 11:44:48 +02:00
<argument index= "3" name= "persistent" type= "bool" default= "false" >
2018-08-21 00:35:30 +02:00
</argument>
<description >
2020-05-26 20:17:11 +02:00
Sets the global pose transform, [code]pose[/code], for the bone at [code]bone_idx[/code].
2020-07-16 18:54:15 +02:00
[code]amount[/code] is the interpolation strength that will be used when applying the pose, and [code]persistent[/code] determines if the applied pose will remain.
2020-05-26 20:17:11 +02:00
[b]Note[/b]: The pose transform needs to be in bone space. Use [method world_transform_to_bone_transform] to convert a world transform, like one you can get from a [Node3D], to bone space.
2018-08-21 00:35:30 +02:00
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "set_bone_parent" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "parent_idx" type= "int" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Sets the bone index [code]parent_idx[/code] as the parent of the bone at [code]bone_idx[/code]. If -1, then bone has no parent.
[b]Note:[/b] [code]parent_idx[/code] must be less than [code]bone_idx[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "set_bone_pose" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "pose" type= "Transform" >
</argument>
<description >
2020-07-22 18:21:29 +02:00
Sets the pose transform for bone [code]bone_idx[/code].
2020-05-26 20:17:11 +02:00
[b]Note[/b]: The pose transform needs to be in bone space. Use [method world_transform_to_bone_transform] to convert a world transform, like one you can get from a [Node3D], to bone space.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "set_bone_rest" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "rest" type= "Transform" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
Sets the rest transform for bone [code]bone_idx[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "unbind_child_node_from_bone" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<argument index= "1" name= "node" type= "Node" >
</argument>
<description >
2019-06-22 01:04:47 +02:00
[i]Deprecated soon.[/i]
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "unparent_bone_and_rest" >
<return type= "void" >
</return>
<argument index= "0" name= "bone_idx" type= "int" >
</argument>
<description >
2021-03-18 12:04:28 +01:00
Unparents the bone at [code]bone_idx[/code] and sets its rest position to that of its parent prior to being reset.
2020-05-26 20:17:11 +02:00
</description>
</method>
<method name= "world_transform_to_bone_transform" >
<return type= "Transform" >
</return>
<argument index= "0" name= "world_transform" type= "Transform" >
</argument>
<description >
Takes the given world transform, relative to the [Skeleton3D], and converts it to a bone pose/transform.
This is useful for using setting bone poses using transforms from [Node3D]-based nodes.
2017-09-12 22:42:36 +02:00
</description>
</method>
</methods>
2020-02-12 09:59:06 +01:00
<members >
<member name= "animate_physical_bones" type= "bool" setter= "set_animate_physical_bones" getter= "get_animate_physical_bones" default= "true" >
</member>
</members>
2020-06-04 10:07:56 +02:00
<signals >
<signal name= "pose_updated" >
<description >
</description>
</signal>
</signals>
2017-09-12 22:42:36 +02:00
<constants >
2017-11-24 23:16:30 +01:00
<constant name= "NOTIFICATION_UPDATE_SKELETON" value= "50" >
2017-09-12 22:42:36 +02:00
</constant>
</constants>
</class>