Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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_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
🔗
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) 🔗
设置给定手部关节的变换。