Up to date

This page is up to date for Godot 4.3. If you still find outdated information, please open an issue.

XRPose

Inherits: RefCounted < Object

This object contains all data related to a pose on a tracked object.

Description

XR runtimes often identify multiple locations on devices such as controllers that are spatially tracked.

Orientation, location, linear velocity and angular velocity are all provided for each pose by the XR runtime. This object contains this state of a pose.

Tutorials

Properties

Vector3

angular_velocity

Vector3(0, 0, 0)

bool

has_tracking_data

false

Vector3

linear_velocity

Vector3(0, 0, 0)

StringName

name

&""

TrackingConfidence

tracking_confidence

0

Transform3D

transform

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

Methods

Transform3D

get_adjusted_transform() const


Enumerations

enum TrackingConfidence: 🔗

TrackingConfidence XR_TRACKING_CONFIDENCE_NONE = 0

No tracking information is available for this pose.

TrackingConfidence XR_TRACKING_CONFIDENCE_LOW = 1

Tracking information may be inaccurate or estimated. For example, with inside out tracking this would indicate a controller may be (partially) obscured.

TrackingConfidence XR_TRACKING_CONFIDENCE_HIGH = 2

Tracking information is considered accurate and up to date.


Property Descriptions

Vector3 angular_velocity = Vector3(0, 0, 0) 🔗

  • void set_angular_velocity(value: Vector3)

  • Vector3 get_angular_velocity()

The angular velocity for this pose.


bool has_tracking_data = false 🔗

  • void set_has_tracking_data(value: bool)

  • bool get_has_tracking_data()

If true our tracking data is up to date. If false we're no longer receiving new tracking data and our state is whatever that last valid state was.


Vector3 linear_velocity = Vector3(0, 0, 0) 🔗

  • void set_linear_velocity(value: Vector3)

  • Vector3 get_linear_velocity()

The linear velocity of this pose.


StringName name = &"" 🔗

The name of this pose. Pose names are often driven by an action map setup by the user. Godot does suggest a number of pose names that it expects XRInterfaces to implement:

  • root defines a root location, often used for tracked objects that do not have further nodes.

  • aim defines the tip of a controller with the orientation pointing outwards, for example: add your raycasts to this.

  • grip defines the location where the user grips the controller

  • skeleton defines the root location a hand mesh should be placed when using hand tracking and the animated skeleton supplied by the XR runtime.


TrackingConfidence tracking_confidence = 0 🔗

The tracking confidence for this pose, provides insight on how accurate the spatial positioning of this record is.


Transform3D transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

The transform containing the original and transform as reported by the XR runtime.


Method Descriptions

Transform3D get_adjusted_transform() const 🔗

Returns the transform with world scale and our reference frame applied. This is the transform used to position XRNode3D objects.