-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Add support for hand tracking microgestures #17255
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s). |
|
Snapshot stored with reference name: Test environment: To test a playground add it to the URL, for example: https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/17255/merge/index.html#WGZLGJ#4600 Links to test babylon tools with this snapshot: https://playground.babylonjs.com/?snapshot=refs/pull/17255/merge To test the snapshot in the playground with a playground ID add it after the snapshot query string: https://playground.babylonjs.com/?snapshot=refs/pull/17255/merge#BCU1XR#0 |
|
Devhost visualization test reporter: |
|
Visualization tests for WebGPU |
|
WebGL2 visualization test reporter: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice PR!
I tested the example playground and it works well.
The only question I have is how does the "menu" button get triggered and why isn't it handled in the example playground?
|
The "menu" button is activated by the left-hand pinch gesture. com.oculus.vrshell-20251009-095654-0.mp4Here the updated playground: https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/17255/merge/index.html#F41V6N#2277. |
This pull request adds a new section called "Microgestures" to the WebXR Hand Tracking Feature page. The implementation can be found in the following [PR](BabylonJS/Babylon.js#17255).
This pull request adds the support for hand tracking microgestures, a Meta OpenXR extension - compatible with Quest 2/Pro/3/3S - that adds five boolean inputs per hand (thumb tap + D-pad–like swipes).
WebXROculusHandControllerhas been created starting fromWebXRGenericHandControlleras base and mapping the input profile with theoculus-handprofile: https://github.com/immersive-web/webxr-input-profiles/pull/274/files.Behaviour
As today, all the input controller profiles are retrieved from the WebXR controller repository, unfortunately, the
oculus-handcontroller is missing. I made the PR immersive-web/webxr-input-profiles#278 to add it, but i don't know if/when it will be approved.As-is
Starting a WebXR session with a compatible Quest device,
xrController.inputSource.profilesis correctly populated withoculus-handprofile:All input controller profiles are retrieved from:
https://immersive-web.github.io/webxr-input-profiles/packages/viewer/dist/profiles/profilesList.json
(but
oclus-handis missing).Get
generic-handbecause it is the first available profile:https://immersive-web.github.io/webxr-input-profiles/packages/viewer/dist/profiles/generic-hand/profile.json
Map
generic-hand.To-be (after pull request is merged)
xrController.inputSource.profilesis correctly populated withoculus-handprofile:oculus-handprofile is retrieved from Babylon.js itself (local).Note
Forcing the input profile:
is not a valid option because in any case the
generic-handprofile will be retrieved.Test
Tested with Oculus Quest 3.
Playground (valid after PR build): https://playground.babylonjs.com/#F41V6N#2275.
Considerations
When the
oculus-handprofile will be added to online repository, it shouldn't introduce regressions because theoculus-handit will be retrieved and consumed automatically. Theoculus-handprofile is 1:1 mapping withgeneric-handprofile with the adding of specific swipe components (menu- only left hand,swipe-left,swipe-right,swipe-forward,swipe-backward,tap-thumb).Discussion
Forum link: https://forum.babylonjs.com/t/hand-tracking-microgestures/60860.