XRHandTracker

继承: XRPositionalTracker < XRTracker < RefCounted < Object

A tracked hand in XR.

描述

A hand tracking system will create an instance of this object and add it to the XRServer. This tracking system will then obtain skeleton data, convert it to the Godot Humanoid hand skeleton and store this data on the XRHandTracker object.

Use XRHandModifier3D to animate a hand mesh using hand tracking data.

属性

方法


枚举

enum HandTrackingSource:

HandTrackingSource HAND_TRACKING_SOURCE_UNKNOWN = 0

The source of hand tracking data is unknown.

HandTrackingSource HAND_TRACKING_SOURCE_UNOBSTRUCTED = 1

The source of hand tracking data is unobstructed, meaning that an accurate method of hand tracking is used. These include optical hand tracking, data gloves, etc.

HandTrackingSource HAND_TRACKING_SOURCE_CONTROLLER = 2

The source of hand tracking data is a controller, meaning that joint positions are inferred from controller inputs.

HandTrackingSource HAND_TRACKING_SOURCE_NOT_TRACKED = 3

No hand tracking data is tracked, this either means the hand is obscured, the controller is turned off, or tracking is not supported for the current input type.

HandTrackingSource HAND_TRACKING_SOURCE_MAX = 4

Represents the size of the HandTrackingSource enum.


enum HandJoint:

HandJoint HAND_JOINT_PALM = 0

Palm joint.

HandJoint HAND_JOINT_WRIST = 1

Wrist joint.

HandJoint HAND_JOINT_THUMB_METACARPAL = 2

Thumb metacarpal joint.

HandJoint HAND_JOINT_THUMB_PHALANX_PROXIMAL = 3

Thumb phalanx proximal joint.

HandJoint HAND_JOINT_THUMB_PHALANX_DISTAL = 4

Thumb phalanx distal joint.

HandJoint HAND_JOINT_THUMB_TIP = 5

Thumb tip joint.

HandJoint HAND_JOINT_INDEX_FINGER_METACARPAL = 6

Index finger metacarpal joint.

HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_PROXIMAL = 7

Index finger phalanx proximal joint.

HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_INTERMEDIATE = 8

Index finger phalanx intermediate joint.

HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_DISTAL = 9

Index finger phalanx distal joint.

HandJoint HAND_JOINT_INDEX_FINGER_TIP = 10

Index finger tip joint.

HandJoint HAND_JOINT_MIDDLE_FINGER_METACARPAL = 11

Middle finger metacarpal joint.

HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_PROXIMAL = 12

Middle finger phalanx proximal joint.

HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_INTERMEDIATE = 13

Middle finger phalanx intermediate joint.

HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_DISTAL = 14

Middle finger phalanx distal joint.

HandJoint HAND_JOINT_MIDDLE_FINGER_TIP = 15

Middle finger tip joint.

HandJoint HAND_JOINT_RING_FINGER_METACARPAL = 16

Ring finger metacarpal joint.

HandJoint HAND_JOINT_RING_FINGER_PHALANX_PROXIMAL = 17

Ring finger phalanx proximal joint.

HandJoint HAND_JOINT_RING_FINGER_PHALANX_INTERMEDIATE = 18

Ring finger phalanx intermediate joint.

HandJoint HAND_JOINT_RING_FINGER_PHALANX_DISTAL = 19

Ring finger phalanx distal joint.

HandJoint HAND_JOINT_RING_FINGER_TIP = 20

Ring finger tip joint.

HandJoint HAND_JOINT_PINKY_FINGER_METACARPAL = 21

Pinky finger metacarpal joint.

HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_PROXIMAL = 22

Pinky finger phalanx proximal joint.

HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_INTERMEDIATE = 23

Pinky finger phalanx intermediate joint.

HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_DISTAL = 24

Pinky finger phalanx distal joint.

HandJoint HAND_JOINT_PINKY_FINGER_TIP = 25

Pinky finger tip joint.

HandJoint HAND_JOINT_MAX = 26

Represents the size of the HandJoint enum.


flags HandJointFlags:

HandJointFlags HAND_JOINT_FLAG_ORIENTATION_VALID = 1

The hand joint's orientation data is valid.

HandJointFlags HAND_JOINT_FLAG_ORIENTATION_TRACKED = 2

The hand joint's orientation is actively tracked. May not be set if tracking has been temporarily lost.

HandJointFlags HAND_JOINT_FLAG_POSITION_VALID = 4

The hand joint's position data is valid.

HandJointFlags HAND_JOINT_FLAG_POSITION_TRACKED = 8

The hand joint's position is actively tracked. May not be set if tracking has been temporarily lost.

HandJointFlags HAND_JOINT_FLAG_LINEAR_VELOCITY_VALID = 16

The hand joint's linear velocity data is valid.

HandJointFlags HAND_JOINT_FLAG_ANGULAR_VELOCITY_VALID = 32

The hand joint's angular velocity data is valid.


属性说明

HandTrackingSource hand_tracking_source = 0

The source of the hand tracking data.


bool has_tracking_data = false

  • void set_has_tracking_data ( value: bool )
  • bool get_has_tracking_data ( )

If true, the hand tracking data is valid.


方法说明

Vector3 get_hand_joint_angular_velocity ( joint: HandJoint ) const1

Returns the angular velocity for the given hand joint.


HandJointFlags get_hand_joint_flags ( joint: HandJoint ) const1

Returns flags about the validity of the tracking data for the given hand joint (see HandJointFlags).


Vector3 get_hand_joint_linear_velocity ( joint: HandJoint ) const1

Returns the linear velocity for the given hand joint.


float get_hand_joint_radius ( joint: HandJoint ) const1

Returns the radius of the given hand joint.


Transform3D get_hand_joint_transform ( joint: HandJoint ) const1

Returns the transform for the given hand joint.


void set_hand_joint_angular_velocity ( joint: HandJoint, angular_velocity: Vector3 )

Sets the angular velocity for the given hand joint.


void set_hand_joint_flags ( joint: HandJoint, flags: HandJointFlags )

Sets flags about the validity of the tracking data for the given hand joint.


void set_hand_joint_linear_velocity ( joint: HandJoint, linear_velocity: Vector3 )

Sets the linear velocity for the given hand joint.


void set_hand_joint_radius ( joint: HandJoint, radius: float )

Sets the radius of the given hand joint.


void set_hand_joint_transform ( joint: HandJoint, transform: Transform3D )

Sets the transform for the given hand joint.

2

本方法通常需要用户覆盖才能生效。

1

本方法无副作用,不会修改该实例的任何成员变量。

3

本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。

4

本方法用于构造某个类型。

5

调用本方法无需实例,可直接使用类名进行调用。

6

本方法描述的是使用本类型作为左操作数的有效运算符。

7

这个值是由下列位标志构成位掩码的整数。

8

无返回值。