XRHandTracker
继承: XRPositionalTracker
< XRTracker
< RefCounted
< Object
A tracked hand in XR.
描述
A hand tracking system will create an instance of this object and add it to the XRServer
. This tracking system will then obtain skeleton data, convert it to the Godot Humanoid hand skeleton and store this data on the XRHandTracker object.
Use XRHandModifier3D
to animate a hand mesh using hand tracking data.
属性
方法
Vector3 | get_hand_joint_angular_velocity ( joint: HandJoint ) const1 |
HandJointFlags | get_hand_joint_flags ( joint: HandJoint ) const1 |
Vector3 | get_hand_joint_linear_velocity ( joint: HandJoint ) const1 |
float | get_hand_joint_radius ( joint: HandJoint ) const1 |
Transform3D | get_hand_joint_transform ( joint: HandJoint ) const1 |
void | set_hand_joint_angular_velocity ( joint: HandJoint, angular_velocity: Vector3 ) |
void | set_hand_joint_flags ( joint: HandJoint, flags: 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
The source of hand tracking data is unknown.
HandTrackingSource HAND_TRACKING_SOURCE_UNOBSTRUCTED = 1
The source of hand tracking data is unobstructed, meaning that an accurate method of hand tracking is used. These include optical hand tracking, data gloves, etc.
HandTrackingSource HAND_TRACKING_SOURCE_CONTROLLER = 2
The source of hand tracking data is a controller, meaning that joint positions are inferred from controller inputs.
HandTrackingSource HAND_TRACKING_SOURCE_NOT_TRACKED = 3
No hand tracking data is tracked, this either means the hand is obscured, the controller is turned off, or tracking is not supported for the current input type.
HandTrackingSource HAND_TRACKING_SOURCE_MAX = 4
Represents the size of the HandTrackingSource enum.
enum HandJoint:
HandJoint HAND_JOINT_PALM = 0
Palm joint.
HandJoint HAND_JOINT_WRIST = 1
Wrist joint.
HandJoint HAND_JOINT_THUMB_METACARPAL = 2
Thumb metacarpal joint.
HandJoint HAND_JOINT_THUMB_PHALANX_PROXIMAL = 3
Thumb phalanx proximal joint.
HandJoint HAND_JOINT_THUMB_PHALANX_DISTAL = 4
Thumb phalanx distal joint.
HandJoint HAND_JOINT_THUMB_TIP = 5
Thumb tip joint.
HandJoint HAND_JOINT_INDEX_FINGER_METACARPAL = 6
Index finger metacarpal joint.
HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_PROXIMAL = 7
Index finger phalanx proximal joint.
HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_INTERMEDIATE = 8
Index finger phalanx intermediate joint.
HandJoint HAND_JOINT_INDEX_FINGER_PHALANX_DISTAL = 9
Index finger phalanx distal joint.
HandJoint HAND_JOINT_INDEX_FINGER_TIP = 10
Index finger tip joint.
HandJoint HAND_JOINT_MIDDLE_FINGER_METACARPAL = 11
Middle finger metacarpal joint.
HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_PROXIMAL = 12
Middle finger phalanx proximal joint.
HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_INTERMEDIATE = 13
Middle finger phalanx intermediate joint.
HandJoint HAND_JOINT_MIDDLE_FINGER_PHALANX_DISTAL = 14
Middle finger phalanx distal joint.
HandJoint HAND_JOINT_MIDDLE_FINGER_TIP = 15
Middle finger tip joint.
HandJoint HAND_JOINT_RING_FINGER_METACARPAL = 16
Ring finger metacarpal joint.
HandJoint HAND_JOINT_RING_FINGER_PHALANX_PROXIMAL = 17
Ring finger phalanx proximal joint.
HandJoint HAND_JOINT_RING_FINGER_PHALANX_INTERMEDIATE = 18
Ring finger phalanx intermediate joint.
HandJoint HAND_JOINT_RING_FINGER_PHALANX_DISTAL = 19
Ring finger phalanx distal joint.
HandJoint HAND_JOINT_RING_FINGER_TIP = 20
Ring finger tip joint.
HandJoint HAND_JOINT_PINKY_FINGER_METACARPAL = 21
Pinky finger metacarpal joint.
HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_PROXIMAL = 22
Pinky finger phalanx proximal joint.
HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_INTERMEDIATE = 23
Pinky finger phalanx intermediate joint.
HandJoint HAND_JOINT_PINKY_FINGER_PHALANX_DISTAL = 24
Pinky finger phalanx distal joint.
HandJoint HAND_JOINT_PINKY_FINGER_TIP = 25
Pinky finger tip joint.
HandJoint HAND_JOINT_MAX = 26
Represents the size of the HandJoint enum.
flags HandJointFlags:
HandJointFlags HAND_JOINT_FLAG_ORIENTATION_VALID = 1
The hand joint's orientation data is valid.
HandJointFlags HAND_JOINT_FLAG_ORIENTATION_TRACKED = 2
The hand joint's orientation is actively tracked. May not be set if tracking has been temporarily lost.
HandJointFlags HAND_JOINT_FLAG_POSITION_VALID = 4
The hand joint's position data is valid.
HandJointFlags HAND_JOINT_FLAG_POSITION_TRACKED = 8
The hand joint's position is actively tracked. May not be set if tracking has been temporarily lost.
HandJointFlags HAND_JOINT_FLAG_LINEAR_VELOCITY_VALID = 16
The hand joint's linear velocity data is valid.
HandJointFlags HAND_JOINT_FLAG_ANGULAR_VELOCITY_VALID = 32
The hand joint's angular velocity data is valid.
属性说明
HandTrackingSource hand_tracking_source = 0
void
set_hand_tracking_source ( value: HandTrackingSource )- HandTrackingSource get_hand_tracking_source ( )
The source of the hand tracking data.
bool
has_tracking_data = false
If true
, the hand tracking data is valid.
方法说明
Vector3
get_hand_joint_angular_velocity ( joint: HandJoint ) const1
Returns the angular velocity for the given hand joint.
HandJointFlags get_hand_joint_flags ( joint: HandJoint ) const1
Returns flags about the validity of the tracking data for the given hand joint (see HandJointFlags).
Vector3
get_hand_joint_linear_velocity ( joint: HandJoint ) const1
Returns the linear velocity for the given hand joint.
float
get_hand_joint_radius ( joint: HandJoint ) const1
Returns the radius of the given hand joint.
Transform3D
get_hand_joint_transform ( joint: HandJoint ) const1
Returns the transform for the given hand joint.
void
set_hand_joint_angular_velocity ( joint: HandJoint, angular_velocity: Vector3
)
Sets the angular velocity for the given hand joint.
void
set_hand_joint_flags ( joint: HandJoint, flags: HandJointFlags )
Sets flags about the validity of the tracking data for the given hand joint.
void
set_hand_joint_linear_velocity ( joint: HandJoint, linear_velocity: Vector3
)
Sets the linear velocity for the given hand joint.
void
set_hand_joint_radius ( joint: HandJoint, radius: float
)
Sets the radius of the given hand joint.
void
set_hand_joint_transform ( joint: HandJoint, transform: Transform3D
)
Sets the transform for the given hand joint.
本方法通常需要用户覆盖才能生效。
本方法无副作用,不会修改该实例的任何成员变量。
本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。
本方法用于构造某个类型。
调用本方法无需实例,可直接使用类名进行调用。
本方法描述的是使用本类型作为左操作数的有效运算符。
这个值是由下列位标志构成位掩码的整数。
无返回值。