Jump to content

Troubles with Vive Handtracking using XRIT Rig: Tracked Hands are treated as Controllers


Recommended Posts

Problem: XRInputModalityManager (on the XRIT rig) cannot distinguish between Vive HandTracking and Vive Controllers; hands are deemed to be Controllers. Starting with either Hands or Controller, InputModalityManager raises a "Controller Started" event, and no amount of input switching causes any additional events to fire, including "Controller Exited".

What happens: Tracked hands are rendered and treated as Controllers by XRIT. Pinch acts as Trigger, but the model (and therefor the ray origin) appear to be anchored behind the wrist joint.
What I expect: Putting the controllers down should switch the input modality to Hands, wherein hands should render over tracked hand poses, and the Hand Interaction profile is used for interactions. Picking up the controllers should render controller models over tracked devices, and use the Controller Interaction profile for interactions.

My project prioritizes hardware flexibility over robustness, so I must find a solution to this using only OpenXR features and XRIT. The steps to replicate are as follows:

  1. Open a new Unity project in 2022.3+ using the 3D core template.
  2. Remove all packages, and import latest versions of the following:
    1. Universal Render Pipeline
    2. OpenXR plugin
    3. XR Plugin Management
    4. XR Interaction Toolkit (and Samples)
    5. XR Hands (and Samples)
    6. Vive OpenXR Plugin (com.htc.upm.vive.openxr)
  3. Switch build platform to Windows
  4. Fix all problems in Project Settings > XR Plugin Management > Project Validation
  5. Add HTC Vive Controller Profile & VIVE XR Hand Interaction to XR Plugin Management > OpenXR > Interaction Profiles
  6. Add VIVE XR Hand Tracking to XR Plugin Management > OpenXR > Feature Groups
  7. Open and Play Assets/Samples/XR Interaction Toolkit/2.5.3/Hands Interaction Demo/HandsDemoScene.unity
  8. Optional: Create a small script that logs a message to the console that can be targeted by the UnityEvents of InputModalityManager
  9. Observe the aforementioned issues

In order to test the scene on the XR Elite, I have allowed USB debugging, started VIVE Business Streaming, and am running SteamVR Home before hitting the play button.

I am hopeful that the answer is obvious and I'm missing something silly, as I have been developing with this device for all but 12 hours now. Nevertheless, this behavior has me pulling my hair out. Any information or resources to point me in the right direction is greatly appreciated.

Link to comment
Share on other sites

  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...