OpenXR Meta Quest2 Controller Profile Missing

When using the OpenXR Interface in ParaView using OpenVR with the Meta Quest 2 headset, my controllers are rendered with an actual Quest 2 controller model and they are able to perform the supported range of motions such as those mentioned here.

However, when using OpenXR with the Meta Quest 2 headset, the controllers are rendered as green wedges and they are not able to perform most of the supported range of motions. They are only able to move the camera around, move the data, and open the context menu (by pressing the B button on the right controller).

My understanding is that the binding of these controls is affected by code inside VTK and not ParaView itself. I looked at the VTK GitHub repository and found that the module for OpenVR contains a JSON file called vtk_openvr_binding_oculus_touch.json. However, I found no similar file in the module for OpenXR.

To confirm that this is, in fact, causing the issues, I tried to compile VTK from the source, however, I ran into issues here. Therefore, I would like to request someone else to take a look at this.

Indeed, this is correct!

We would be happy to see this fixed though, I will try to help you with compiling VTK, but you may also want to compile ParaView as well.

@LucasGandel and @Thomas_Galland may have more to say about the right way to add the bindings.

Hi Mathieu, I’m wondering is there any news on this topic?

I managed to compile VTK (v9.3.0) with OpenXR and python API enabled, and added an customized action binding json for quest2, following the OpenXR specification here, see attachment. The rendering of scene (i.e. the camera of HMD) is working as expected.

However, I found that VTK failed to recognize the controller as a quest 2 controller. In fact, vtkOpenXRManager always consider the controller as “/interaction_profiles/khr/simple_controller” (seen by enabling debug in source code here). And the “khr/simple_controller” supports only few actions.

I’m using the Meta Quest Link for the OpenXR runtime, no idea why the controller is not correctly recognized. Is there anywhere I could force the runtime to set the controller profile?

vtk_openxr_binding_oculus_touch.json (1.9 KB)

vtk_openxr_actions.json (2.3 KB)

I’m afraid this issue (https://gitlab.kitware.com/vtk/vtk/-/issues/19037) have yet to be adressed.

Do not hesitate to contribute to it though!