XRHandTracker

继承: XRPositionalTracker < XRTracker < RefCounted < Object

XR 中追踪的手。

描述

手部跟踪系统将创建该对象的实例并将其添加到 XRServer。然后,该跟踪系统将获取骨骼数据,将其转换为 Godot 人形手部骨骼,并将该数据存储在 XRHandTracker 对象上。

使用 XRHandModifier3D 通过手部跟踪数据动画化手部网格。

教程

属性

TrackerHand

hand

1 (overrides XRPositionalTracker)

HandTrackingSource

hand_tracking_source

0

bool

has_tracking_data

false

TrackerType

type

16 (overrides XRTracker)

方法

Vector3

get_hand_joint_angular_velocity(joint: HandJoint) const

BitField[HandJointFlags]

get_hand_joint_flags(joint: HandJoint) const

Vector3

get_hand_joint_linear_velocity(joint: HandJoint) const

float

get_hand_joint_radius(joint: HandJoint) const

Transform3D

get_hand_joint_transform(joint: HandJoint) const

void

set_hand_joint_angular_velocity(joint: HandJoint, angular_velocity: Vector3)

void

set_hand_joint_flags(joint: HandJoint, flags: BitField[HandJointFlags])

void

set_hand_joint_linear_velocity(joint: HandJoint, linear_velocity: Vector3)

void

set_hand_joint_radius(joint: HandJoint, radius: float)

void

set_hand_joint_transform(joint: HandJoint, transform: Transform3D)


枚举

enum HandTrackingSource: 🔗

HandTrackingSource HAND_TRACKING_SOURCE_UNKNOWN = 0

手部追踪数据的来源未知。

HandTrackingSource HAND_TRACKING_SOURCE_UNOBSTRUCTED = 1

手部追踪数据来源畅通,这意味着使用了准确的手部追踪方法。其中包括光学手部追踪、数据手套等。

HandTrackingSource HAND_TRACKING_SOURCE_CONTROLLER = 2

手部跟踪数据的来源是控制器,这意味着关节位置是根据控制器输入推断的。

HandTrackingSource HAND_TRACKING_SOURCE_MAX = 3

代表 HandTrackingSource 枚举的大小。


enum HandJoint: 🔗

HandJoint HAND_JOINT_PALM = 0

掌关节。

HandJoint HAND_JOINT_WRIST = 1

腕关节。

HandJoint HAND_JOINT_THUMB_METACARPAL = 2

掌骨拇指关节。

HandJoint HAND_JOINT_THUMB_PHALANX_PROXIMAL = 3

大拇指指骨近端关节。

HandJoint HAND_JOINT_THUMB_PHALANX_DISTAL = 4

大拇指指骨远端关节。

HandJoint HAND_JOINT_THUMB_TIP = 5

拇指尖端关节。

HandJoint HAND_JOINT_INDEX_FINGER_METACARPAL = 6

食指掌骨关节。

HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_PROXIMAL = 7

食指指骨近端关节。

HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_INTERMEDIATE = 8

食指指骨中间关节。

HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_DISTAL = 9

食指指骨远端关节。

HandJoint HAND_JOINT_INDEX_FINGER_TIP = 10

食指指尖关节。

HandJoint HAND_JOINT_MIDDLE_FINGER_METACARPAL = 11

中指掌骨关节。

HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_PROXIMAL = 12

中指指骨近端关节。

HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_INTERMEDIATE = 13

中指指骨中间关节。

HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_DISTAL = 14

中指指骨远端关节。

HandJoint HAND_JOINT_MIDDLE_FINGER_TIP = 15

中指指尖关节。

HandJoint HAND_JOINT_RING_FINGER_METACARPAL = 16

无名指掌骨关节。

HandJoint HAND_JOINT_RING_FINGER_PHALANX_PROXIMAL = 17

无名指指骨近端关节。

HandJoint HAND_JOINT_RING_FINGER_PHALANX_INTERMEDIATE = 18

无名指指骨中间关节。

HandJoint HAND_JOINT_RING_FINGER_PHALANX_DISTAL = 19

无名指指骨远端关节。

HandJoint HAND_JOINT_RING_FINGER_TIP = 20

无名指指尖关节。

HandJoint HAND_JOINT_PINKY_FINGER_METACARPAL = 21

小指掌骨关节。

HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_PROXIMAL = 22

小指指骨近端关节。

HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_INTERMEDIATE = 23

小指指骨中间关节。

HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_DISTAL = 24

小指指骨远端关节。

HandJoint HAND_JOINT_PINKY_FINGER_TIP = 25

小指指尖关节。

HandJoint HAND_JOINT_MAX = 26

代表 HandJoint 枚举的大小。


flags HandJointFlags: 🔗

HandJointFlags HAND_JOINT_FLAG_ORIENTATION_VALID = 1

手部关节的方向数据有效。

HandJointFlags HAND_JOINT_FLAG_ORIENTATION_TRACKED = 2

手部关节的方向是主动跟踪的。如果跟踪暂时丢失,则可能无法设置。

HandJointFlags HAND_JOINT_FLAG_POSITION_VALID = 4

手部关节的位置数据有效。

HandJointFlags HAND_JOINT_FLAG_POSITION_TRACKED = 8

手部关节的位置是主动跟踪的。如果跟踪暂时丢失,则可能无法设置。

HandJointFlags HAND_JOINT_FLAG_LINEAR_VELOCITY_VALID = 16

手部关节的线速度数据有效。

HandJointFlags HAND_JOINT_FLAG_ANGULAR_VELOCITY_VALID = 32

手部关节的角速度数据有效。


属性说明

HandTrackingSource hand_tracking_source = 0 🔗

手部追踪数据的来源。


bool has_tracking_data = false 🔗

  • void set_has_tracking_data(value: bool)

  • bool get_has_tracking_data()

如果为 true,则手部追踪数据有效。


方法说明

Vector3 get_hand_joint_angular_velocity(joint: HandJoint) const 🔗

返回给定手部关节的角速度。


BitField[HandJointFlags] get_hand_joint_flags(joint: HandJoint) const 🔗

返回有关给定手部关节的跟踪数据的有效性的标志(请参阅 HandJointFlags)。


Vector3 get_hand_joint_linear_velocity(joint: HandJoint) const 🔗

返回给定手部关节的线速度。


float get_hand_joint_radius(joint: HandJoint) const 🔗

返回给定手部关节的半径。


Transform3D get_hand_joint_transform(joint: HandJoint) const 🔗

返回给定手部关节的变换。


void set_hand_joint_angular_velocity(joint: HandJoint, angular_velocity: Vector3) 🔗

设置给定手部关节的角速度。


void set_hand_joint_flags(joint: HandJoint, flags: BitField[HandJointFlags]) 🔗

设置有关给定手部关节的跟踪数据的有效性的标志。


void set_hand_joint_linear_velocity(joint: HandJoint, linear_velocity: Vector3) 🔗

设置给定手部关节的线速度。


void set_hand_joint_radius(joint: HandJoint, radius: float) 🔗

设置给定手部关节的半径。


void set_hand_joint_transform(joint: HandJoint, transform: Transform3D) 🔗

设置给定手部关节的变换。