XRHandTracker
继承: XRPositionalTracker < XRTracker < RefCounted < Object
XR 中追踪的手。
描述
手部跟踪系统将创建该对象的实例并将其添加到 XRServer。然后,该跟踪系统将获取骨骼数据,将其转换为 Godot 人形手部骨骼,并将该数据存储在 XRHandTracker 对象上。
使用 XRHandModifier3D 通过手部跟踪数据动画化手部网格。
教程
属性
hand |
| |
| ||
| ||
type |
|
方法
get_hand_joint_angular_velocity(joint: HandJoint) const | |
BitField[HandJointFlags] | get_hand_joint_flags(joint: HandJoint) const |
get_hand_joint_linear_velocity(joint: HandJoint) const | |
get_hand_joint_radius(joint: HandJoint) const | |
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
🔗
void set_hand_tracking_source(value: HandTrackingSource)
HandTrackingSource get_hand_tracking_source()
手部追踪数据的来源。
bool has_tracking_data = false
🔗
如果为 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) 🔗
设置给定手部关节的变换。