Skip to content

Add hand tracking toggle to OpenXR settings - #2288

Merged
JulianGro merged 3 commits into
overte-org:masterfrom
ada-tv:xr/ht-setting
Sep 17, 2026
Merged

JulianGro merged 3 commits into
overte-org:masterfrom
ada-tv:xr/ht-setting

Conversation

@ada-tv

@ada-tv ada-tv commented May 21, 2026

Copy link
Copy Markdown
Collaborator

Also actually implements the setting loading/saving functions so the settings will persist and there's a stub for saving tracker calibration offsets that'll be useful later once we support something that can keep track of the tracker roles

Fixes #2285

@ada-tv ada-tv added needs CR This pull request needs to be code reviewed needs QA This pull request needs to be tested Controls / Interaction Issues relating to the user input, controls, touch, or other direct interaction OpenXR An issue related to OpenXR support. user experience Making the game easier and more fun to use, or changing unexpected and confusing behavior labels May 21, 2026
@JulianGro

JulianGro commented Sep 2, 2026

Copy link
Copy Markdown
Member

CodeChecker complains about unused parameter 'ownership'. Is that a false positive (or something we should ignore)?
That probably came from #2072 and the nightly CodeChecker update not having run yet.

Testing worked fine. We probably shouldn't be throwing an error when having hand tracking disabled and hand tracking being used though. On my Quest 1, it automatically switched to hand tracking when I put my controllers down.
Putting controllers down, picking them back up, putting them down again:

[09/02 16:26:32] [CRITICAL] [openxr.context] XR_ERROR_PATH_INVALID: Failed to get interaction profile path.
XR_ERROR_PATH_INVALID: xrPathToString(path == XR_NULL_PATH)
[Previous message was repeated 1 times]
[09/02 16:26:54] [INFO] [openxr.context] Controller 0: Interaction profile changed to '/interaction_profiles/oculus/touch_controller'
[09/02 16:26:54] [INFO] [openxr.context] Controller 1: Interaction profile changed to '/interaction_profiles/oculus/touch_controller'
XR_ERROR_PATH_INVALID: xrPathToString(path == XR_NULL_PATH)
[09/02 16:27:07] [CRITICAL] [openxr.context] XR_ERROR_PATH_INVALID: Failed to get interaction profile path.
XR_ERROR_PATH_INVALID: xrPathToString(path == XR_NULL_PATH)

One complaint I have is that the checkbox doesn't really look like a checkbox, but like a buggy RadioButton.
Bildschirmfoto vom 2026-09-02 16-46-50
I tried removing the radius, height, and width properties, but testing will take a while because I have to recompile libnode.

@JulianGro JulianGro left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As always, GitHub isn't rendering the suggestions properly on my end, so chances are something isn't right there. The suggestion is to remove the boxRadiuss.

Comment thread interface/resources/qml/hifi/tablet/OpenXrConfiguration.qml
Comment thread interface/resources/qml/hifi/tablet/OpenXrConfiguration.qml Outdated
Also actually implements the setting loading/saving functions so the
settings will persist and there's a stub for saving tracker calibration
offsets that'll be useful later once we support something that can keep
track of the tracker position roles
@JulianGro

JulianGro commented Sep 10, 2026

Copy link
Copy Markdown
Member

Tested on Quest 2 with WiVRn and Valve Index with SteamVR.
On the Quest 2 it gets a little confusing, because the Quest's hand tracking will emulate controller inputs when hand tracking is disabled in Overte.
I haven't retested the Quest 1 yet, but my guess is that the Quest 1 doesn't emulate a controller if hand tracking is disabled.
I tested it on the Quest 2 as well now. The log messages are clean there too now:

[09/17 14:23:35] [INFO] [openxr.context] Controller 0 was disconnected
[09/17 14:23:35] [INFO] [openxr.context] Controller 1 was disconnected
(…)
[09/17 14:23:46] [INFO] [openxr.context] Controller 0: Interaction profile changed to '/interaction_profiles/oculus/touch_controller'
[09/17 14:23:46] [INFO] [openxr.context] Controller 1: Interaction profile changed to '/interaction_profiles/oculus/touch_controller'
(…)
[09/17 14:23:51] [INFO] [openxr.context] Controller 0 was disconnected
[09/17 14:23:51] [INFO] [openxr.context] Controller 1 was disconnected
[09/17 14:24:06] [INFO] [openxr.context] Controller 0: Interaction profile changed to '/interaction_profiles/oculus/touch_controller'
[09/17 14:24:06] [INFO] [openxr.context] Controller 1: Interaction profile changed to '/interaction_profiles/oculus/touch_controller'

@JulianGro JulianGro added QA approved This pull request has been successfully tested and removed needs QA This pull request needs to be tested labels Sep 10, 2026
@JulianGro
JulianGro merged commit f0d074f into overte-org:master Sep 17, 2026
7 of 8 checks passed
@JulianGro JulianGro added CR approved This pull request has been successfully code reviewed and removed needs CR This pull request needs to be code reviewed labels Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Controls / Interaction Issues relating to the user input, controls, touch, or other direct interaction CR approved This pull request has been successfully code reviewed OpenXR An issue related to OpenXR support. QA approved This pull request has been successfully tested user experience Making the game easier and more fun to use, or changing unexpected and confusing behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OpenXr : add a setting to toggle the last 3 fingers tracking of Valve Index

2 participants