mirror of
https://github.com/mitch030504/Wiicompiled_VR_Frame.git
synced 2026-10-06 03:00:14 +02:00
Hand a put-down controller's side to the cameras
- Started with the controllers connected, a race stayed on them: Horizon OS switches all input between controllers and hands, and back to the controllers as soon as one lying on a table moves (a Quest 3 log went touch_controller, simple_controller, touch_controller within seconds). An app cannot disconnect the controllers. - With tracked hands on, the input now resumes XR_META_simultaneous_hands_and_controllers (Meta's multimodal), which overrides that switching: a controller not in a hand no longer owns it, so the cameras track that hand at once, and a held controller keeps working. Paused again when the option goes off; a refused resume is logged and not retried until the option is toggled. - A hand is bare when its squeeze action is inactive and it either drives khr/simple_controller or has camera-tracked joints, since a free hand under simultaneous tracking may get a profile our actions are not bound in. Docs: OPENXR.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
38b7f89d74
commit
1d7f2549bd
8 files changed
+112
-14
No files matched your search
@@ -161,6 +161,7 @@ private:
|
||||
// settings ask for them, and both hands located for `time`, their joints
|
||||
// in `seat` when it is valid.
|
||||
void LoadHandTracking();
|
||||
void UpdateSimultaneousHandsAndControllers(bool wanted);
|
||||
void UpdateHandTrackers();
|
||||
void DestroyHandTrackers();
|
||||
void LocateHands(XrTime time, const driving::SeatFrame& seat);
|
||||
@@ -225,6 +226,12 @@ private:
|
||||
PFN_xrLocateHandJointsEXT m_locate_hand_joints = nullptr;
|
||||
bool m_hand_data_source = false; // XR_EXT_hand_tracking_data_source
|
||||
bool m_hand_aim = false; // XR_FB_hand_tracking_aim
|
||||
// XR_META_simultaneous_hands_and_controllers: resumed while tracked hands
|
||||
// are on, so a controller put down gives its hand to the cameras at once.
|
||||
PFN_xrResumeSimultaneousHandsAndControllersTrackingMETA m_resume_simultaneous = nullptr;
|
||||
PFN_xrPauseSimultaneousHandsAndControllersTrackingMETA m_pause_simultaneous = nullptr;
|
||||
bool m_simultaneous = false;
|
||||
bool m_simultaneous_failed = false;
|
||||
XrHandTrackerEXT m_hand_trackers[kHands]{};
|
||||
bool m_hand_trackers_failed = false;
|
||||
bool m_logged_hand_restart = false;
|
||||
|
||||
Reference in new issue
Block a user