2024-02-25 00:20:11 +00:00
<?xml version="1.0" encoding="UTF-8" ?>
2024-03-04 01:42:11 +00:00
<class name= "XRBodyModifier3D" inherits= "Node3D" experimental= "" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../class.xsd" >
2024-02-25 00:20:11 +00:00
<brief_description >
A node for driving body meshes from [XRBodyTracker] data.
</brief_description>
<description >
This node uses body tracking data from a [XRBodyTracker] to animate the skeleton of a body mesh.
2024-03-04 01:42:11 +00:00
This node positions itself at the [constant XRBodyTracker.JOINT_ROOT] position and scales itself to [member XRServer.world_scale]. Adding the body model as a child of this node will result in the model being positioned and scaled correctly for XR experiences.
The body tracking position-data is scaled by [member Skeleton3D.motion_scale] when applied to the skeleton, which can be used to adjust the tracked body to match the scale of the body model.
2024-02-25 00:20:11 +00:00
</description>
<tutorials >
<link title= "XR documentation index" > $DOCS_URL/tutorials/xr/index.html</link>
</tutorials>
<members >
<member name= "body_tracker" type= "StringName" setter= "set_body_tracker" getter= "get_body_tracker" default= "&"/user/body"" >
The name of the [XRBodyTracker] registered with [XRServer] to obtain the body tracking data from.
</member>
<member name= "body_update" type= "int" setter= "set_body_update" getter= "get_body_update" enum= "XRBodyModifier3D.BodyUpdate" is_bitfield= "true" default= "7" >
Specifies the body parts to update.
</member>
<member name= "bone_update" type= "int" setter= "set_bone_update" getter= "get_bone_update" enum= "XRBodyModifier3D.BoneUpdate" default= "0" >
Specifies the type of updates to perform on the bones.
</member>
<member name= "show_when_tracked" type= "bool" setter= "set_show_when_tracked" getter= "get_show_when_tracked" default= "true" >
If true then the nodes visibility is determined by whether tracking data is available.
</member>
<member name= "target" type= "NodePath" setter= "set_target" getter= "get_target" default= "NodePath("")" >
A [NodePath] to a [Skeleton3D] to animate.
</member>
</members>
<constants >
<constant name= "BODY_UPDATE_UPPER_BODY" value= "1" enum= "BodyUpdate" is_bitfield= "true" >
The skeleton's upper body joints are updated.
</constant>
<constant name= "BODY_UPDATE_LOWER_BODY" value= "2" enum= "BodyUpdate" is_bitfield= "true" >
The skeleton's lower body joints are updated.
</constant>
<constant name= "BODY_UPDATE_HANDS" value= "4" enum= "BodyUpdate" is_bitfield= "true" >
The skeleton's hand joints are updated.
</constant>
<constant name= "BONE_UPDATE_FULL" value= "0" enum= "BoneUpdate" >
The skeleton's bones are fully updated (both position and rotation) to match the tracked bones.
</constant>
<constant name= "BONE_UPDATE_ROTATION_ONLY" value= "1" enum= "BoneUpdate" >
The skeleton's bones are only rotated to align with the tracked bones, preserving bone length.
</constant>
<constant name= "BONE_UPDATE_MAX" value= "2" enum= "BoneUpdate" >
Represents the size of the [enum BoneUpdate] enum.
</constant>
</constants>
</class>