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
Initial support for VR headsets #241
base: develop
Are you sure you want to change the base?
Conversation
…nslation coming from the headset.
24028df
to
4437cef
Compare
@pellet thanks for this. I am now back from pat leave and this is high up on my priority list. I first need to get my hands on a comp with a good enough graphics card for the quest screen sharing. Once I have that I will start testing this out and feed back here. |
4437cef
to
67d6278
Compare
@JohnGriffiths sounds great :) Let me know if you run into any issues with the testing and I will be happy to help out. If the changes to the rendering engine somehow break some old experiments I can leave the existing rendering code in place and separate the VR rendering code to only run with |
@pellet - getting the following error. Any thoughts? In [1]: from psychopy import visual
In [2]: blah = visual.Rift(monoscopic=True,headlocked=True)
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
Cell In[2], line 1
----> 1 blah = visual.Rift(monoscopic=True,headlocked=True)
File ~\miniconda3\envs\expy-vr\lib\site-packages\psychopy\contrib\lazy_import.py:118, in ScopeReplacer.__call__(self, *args, **kwargs)
116 def __call__(self, *args, **kwargs):
117 obj = object.__getattribute__(self, '_resolve')()
--> 118 return obj(*args, **kwargs)
File ~\miniconda3\envs\expy-vr\lib\site-packages\psychopy\visual\rift.py:316, in Rift.__init__(self, fovType, trackingOriginType, texelsPerPixel, headLocked, highQuality, monoscopic, samples, mirrorMode, mirrorRes, warnAppFrameDropped, autoUpdateInput, legacyOpenGL, *args, **kwargs)
312 raise RuntimeError("HMD service is not available or started, " +
313 "exiting.")
315 if not libovr.isHmdConnected():
--> 316 raise RuntimeError("Cannot find any connected HMD, check " +
317 "connections and try again.")
319 # create a VR session, do some initial configuration
320 initResult = libovr.initialize() # removed logging callback
RuntimeError: Cannot find any connected HMD, check connections and try again.
In [3]: |
...tracked this down a bit more... In [15]: import psychxr.drivers.libovr as libovr
In [16]: libovr.isHmdConnected()
Out[16]: False |
Yep I get this error when my headset isn't linked up and active(wearing it) |
The device now gets recognized if you do the in-VR setup. But that setup never seems to finish successfully. It gets stuck on a three-dot loading screen, a la If you ignore the continuing screen, it seems to get detected by >>> import psychxr.drivers.libovr as libovr
>>> libovr.isHmdConnected()
True Trying to run the experiment though, gets this error: Next steps:
|
This PR modifies the current rendering engine to allow support for using a head mounted display.
Here is a github issue explaining the change: Support for Oculus/Meta Quest VR.
PsychXR is utilized for seamlessly integrating HUD support into the existing codebase which depends on PsychoPy for presenting stimulus.
core.wait
calls had to be removed so that the render loop could continually update the display in relation to the current position and angle of the head.The new feature functionality can be tested by connecting a supported headset(eg oculus/quest) and running the N170 experiment with the parameter
use_vr=True
Backwards compatibility can be tested by running any experiment without any changes needed.