Virtual Reality Oculus controller interaction behavior

With the help of several posts, I was able to operate the Slicer virtual reality module on my Oculus Quest2 device.
However, I would like to use rotation, zoom in/out, and two-handed gestures like the YouTube below.

However, as of now, I have only been able to implement the function to grab the model.
What should I do to implement functions such as zooming in, zooming out, and rotating the model?
I don’t know if I need to change it in the settings or code it.

I would really appreciate it if you could tell me how.

Not having an Oculus Quest, I can only tell you what I posted here

@LucasGandel @jcfr Do you know why Quest 2 interactions do not seem to work? Many users report the same thing. Thank you!

Sorry I missed your post on the thread, feel free to tag me for XR related questions.
I don’t think we have any action file implemented for the Quest2. Using OpenXR and the work-in-progress action file from this issue, I was successful moving an actor with the Quest2. Maybe a similar action file can be implemented for OpenVR


I think what the commenters mean is the two-handed gesture. (When people have just one thing in the scene and use that gesture they tend to think they manipulate the object but in reality they manipulate the physical to world transform)

What do you think would be best? Escape ahead and wait for the OpenXR implementation to be complete and robust (this raises the question of when of course), or try to fix Quest2 with OpenVR?

Sorry I read too fast. I now understand that multi-gesture is the problem.
I think fixing OpenVR should not be a huge effort as opposed to waiting for a robust implementation with OpenXR (which still does not support controller models for instance).
Regarding this specific problem, I’m not sure I can be of much help right now as the code path in SlicerVirtualReality and VTK are so different. For instance, in VTK, the pinch event is handled by changing the scale, but this same line is commented in SlicerVirtualReality (see here). Instead the interactor style seems to handle it in SlicerVirtualReality.

Anyway, my understanding is that the code above works (maybe unreliably?) with other controllers, but not at all for the Quest2, do you confirm?
I suspect that if the Quest have touch-buttons that fire events as soon as your finger/palm touches it, it could potentially not pass the condition here:

I won’t have access to a Quest2 before a few weeks, but it would be great to see if a simple VTK example is OK

Yes, basically that’s it.
For reference, about the unreliably, we have this ticket. It used to work 100%, now sometimes the gesture is not reconized.

I suspect that if the Quest have touch-buttons that fire events as soon as your finger/palm touches it

It’s great to have a theory, something to get started along. We do not plan to buy Quest 2 (also do not have any funded projects currently related to VR) so I cannot personally help in this effort. Just trying to make a problem visible that many people seem to have. Thanks a lot Lucas for the responses!

I gave this another systematic try.
Was able to call up a volume rendering with the Quest 2 in 5.4.3 and move the skeleton back and forth. with the right joystick.
Then I pressed the “b” Button on the left controller which brought me to a panel where I could select controller configurations, I did not use “Standard” but user-defined and found a VTK configuration panel, which I selected and also published again. With that I was able to grab the object and turn it apart from moving with the right joystick. .
I think this is all about what the program can do . The unreliability may be caused because you really have to grab short with the grab keys (not the trigger keys) to get hold of the object.
Good luck

Rotate: Grab and rotate your arms with controllers.
Push: Grab an push your arms.
Pull: Grab and pull your arms.
Right joystick: Move the world back and forth.