cmbruns / pyopenxr

Unofficial python bindings for OpenXR access to VR and AR devices
Apache License 2.0
103 stars 8 forks source link

Controller Tracking #75

Open stepjam opened 2 years ago

stepjam commented 2 years ago

Hi Christopher,

Thanks for your work on this repo!

I'm trying to track the handheld (vive) controllers. I see that you have an example of how to track the HMD here. When I inspect the views object. it only has 2 items (left and right eye). How am I able to include the controllers in this view?

Thanks in advance!

cmbruns commented 2 years ago

This is a good question I don't have a clear answer for. The hello_xr example in the pyopenxr_examples repo puts cubes on the controller positions, so the information is there. But it's somewhat confusing.

We should aim to eventually have a super simple example like track_hmd.py that shows the controller positions. Doing this properly would likely involve path strings like "/user/hand/left".

cmbruns commented 2 years ago

Update: There is now a track_controller.py example at https://github.com/cmbruns/pyopenxr_examples/tree/main/xr_examples that should work with today's release.

stepjam commented 2 years ago

Amazing! I'll try it out today. Thanks!

stepjam commented 2 years ago

@cmbruns orientation seems to be working, but the position stays constant (x=0.2, y=1.3. z=0.5). Does this happen on your end?

cmbruns commented 2 years ago

@stepjam Thanks for trying this out. I don't have time to investigate this right this minute. Maybe tonight or tomorrow. In the meantime, what's your system? Mine is [Windows,Linux]/SteamVR/HtcViveClassic/OpenGL.

stepjam commented 2 years ago

Thanks! My system is Linux/Monado/HTCViveClassic/Vulkan

cmbruns commented 2 years ago

@stepjam Vive wand position tracking is working for me on Windows at least. I suspect the position tracking trouble you experienced is related to Monado. The hardware support table at https://monado.freedesktop.org/#supported-hardware includes the following:

Device Rotation Position Distortion Correction Additional Notes
OSVR HDK 1.x, 2.x Yes No No Requires workaround on AMD GPUs1. Firmware fix available2
HTC Vive Yes LH 1.0: No Yes Supported by OpenHMD, Monado “vive”, or Monado “survive”

Maybe you can experiment with OpenHMD, "vive", and "survive" (whatever those are). If you gain any wisdom that might be of use to others, please consider creating a new page in the wiki here https://github.com/cmbruns/pyopenxr/wiki

I'm glad you have the monado runtime working. Please try as many of the examples as you can, to help shake out any other troubles with the monado runtime. I have not yet succeeded in getting monado working here. Your help getting monado working well with pyopenxr would be much appreciated.