1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-14 13:41:12 +00:00

Expose OpenXR raw hand tracking data

This commit is contained in:
Bastiaan Olij
2023-06-09 14:19:53 +10:00
parent 8449592d92
commit 58df9bd8a4
6 changed files with 418 additions and 2 deletions

View File

@@ -161,8 +161,65 @@ public:
void on_pose_recentered();
void tracker_profile_changed(RID p_tracker, RID p_interaction_profile);
/** Hand tracking. */
enum Hand {
HAND_LEFT,
HAND_RIGHT,
HAND_MAX,
};
enum HandMotionRange {
HAND_MOTION_RANGE_UNOBSTRUCTED,
HAND_MOTION_RANGE_CONFORM_TO_CONTROLLER,
HAND_MOTION_RANGE_MAX
};
void set_motion_range(const Hand p_hand, const HandMotionRange p_motion_range);
HandMotionRange get_motion_range(const Hand p_hand) const;
enum HandJoints {
HAND_JOINT_PALM = 0,
HAND_JOINT_WRIST = 1,
HAND_JOINT_THUMB_METACARPAL = 2,
HAND_JOINT_THUMB_PROXIMAL = 3,
HAND_JOINT_THUMB_DISTAL = 4,
HAND_JOINT_THUMB_TIP = 5,
HAND_JOINT_INDEX_METACARPAL = 6,
HAND_JOINT_INDEX_PROXIMAL = 7,
HAND_JOINT_INDEX_INTERMEDIATE = 8,
HAND_JOINT_INDEX_DISTAL = 9,
HAND_JOINT_INDEX_TIP = 10,
HAND_JOINT_MIDDLE_METACARPAL = 11,
HAND_JOINT_MIDDLE_PROXIMAL = 12,
HAND_JOINT_MIDDLE_INTERMEDIATE = 13,
HAND_JOINT_MIDDLE_DISTAL = 14,
HAND_JOINT_MIDDLE_TIP = 15,
HAND_JOINT_RING_METACARPAL = 16,
HAND_JOINT_RING_PROXIMAL = 17,
HAND_JOINT_RING_INTERMEDIATE = 18,
HAND_JOINT_RING_DISTAL = 19,
HAND_JOINT_RING_TIP = 20,
HAND_JOINT_LITTLE_METACARPAL = 21,
HAND_JOINT_LITTLE_PROXIMAL = 22,
HAND_JOINT_LITTLE_INTERMEDIATE = 23,
HAND_JOINT_LITTLE_DISTAL = 24,
HAND_JOINT_LITTLE_TIP = 25,
HAND_JOINT_MAX = 26,
};
Quaternion get_hand_joint_rotation(Hand p_hand, HandJoints p_joint) const;
Vector3 get_hand_joint_position(Hand p_hand, HandJoints p_joint) const;
float get_hand_joint_radius(Hand p_hand, HandJoints p_joint) const;
Vector3 get_hand_joint_linear_velocity(Hand p_hand, HandJoints p_joint) const;
Vector3 get_hand_joint_angular_velocity(Hand p_hand, HandJoints p_joint) const;
OpenXRInterface();
~OpenXRInterface();
};
VARIANT_ENUM_CAST(OpenXRInterface::Hand)
VARIANT_ENUM_CAST(OpenXRInterface::HandMotionRange)
VARIANT_ENUM_CAST(OpenXRInterface::HandJoints)
#endif // OPENXR_INTERFACE_H