XRHandTracker

继承: XRPositionalTracker < XRTracker < RefCounted < Object

XR中的履带手。

描述

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

使用XRHandRevamp使用手部跟踪数据为手部网格制作动画。

属性

方法


枚举

enum HandTrackingSource: 🔗

HandTrackingSource HAND_TRACKING_SOURCE_UNKNOWN = 0

手部跟踪数据来源不明。

HandTrackingSource HAND_TRACKING_SOURCE_UNOBSTRUCTED = 1

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

HandTrackingSource HAND_TRACKING_SOURCE_CONTROLLER = 2

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

HandTrackingSource HAND_TRACKING_SOURCE_NOT_TRACKED = 3

没有跟踪手部跟踪数据,这意味着手部被遮挡、控制器关闭或当前输入类型不支持跟踪。

HandTrackingSource HAND_TRACKING_SOURCE_MAX = 4

表示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) 🔗

设置给定手关节的变换。