XRHandTracker¶
继承: XRPositionalTracker < XRTracker < RefCounted < Object
XR中的履带手。
描述¶
手部跟踪系统将创建此对象的实例并将其添加到XRServer。然后,此跟踪系统将获取骨架数据,将其转换为i3D人形手部骨架并将此数据存储在XRHandTracker对象上。
使用XRHandRevamp使用手部跟踪数据为手部网格制作动画。
属性¶
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) 🔗
设置给定手关节的变换。