Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

XRBodyModifier3D

Experimental: This class may be changed or removed in future versions.

Inherits: SkeletonModifier3D < Node3D < Node < Object

A node for driving body meshes from XRBodyTracker data.

Description

This node uses body tracking data from a XRBodyTracker to animate the skeleton of a body mesh.

This node positions itself at the XRBodyTracker.JOINT_ROOT position and scales itself to 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 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.

Tutorials

Properties

StringName

body_tracker

&"/user/body"

BitField[BodyUpdate]

body_update

7

BoneUpdate

bone_update

0

bool

show_when_tracked

true


Enumerations

flags BodyUpdate:

BodyUpdate BODY_UPDATE_UPPER_BODY = 1

The skeleton's upper body joints are updated.

BodyUpdate BODY_UPDATE_LOWER_BODY = 2

The skeleton's lower body joints are updated.

BodyUpdate BODY_UPDATE_HANDS = 4

The skeleton's hand joints are updated.


enum BoneUpdate:

BoneUpdate BONE_UPDATE_FULL = 0

The skeleton's bones are fully updated (both position and rotation) to match the tracked bones.

BoneUpdate BONE_UPDATE_ROTATION_ONLY = 1

The skeleton's bones are only rotated to align with the tracked bones, preserving bone length.

BoneUpdate BONE_UPDATE_MAX = 2

Represents the size of the BoneUpdate enum.


Property Descriptions

StringName body_tracker = &"/user/body"

The name of the XRBodyTracker registered with XRServer to obtain the body tracking data from.


BitField[BodyUpdate] body_update = 7

Specifies the body parts to update.


BoneUpdate bone_update = 0

Specifies the type of updates to perform on the bones.


bool show_when_tracked = true

  • void set_show_when_tracked(value: bool)

  • bool get_show_when_tracked()

If true then the nodes visibility is determined by whether tracking data is available.


User-contributed notes

Please read the User-contributed notes policy before submitting a comment.