Skip to content
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

[OpenXR] Black screen in Unity when using SteamVR with multiple tracked devices (worked fine before with just OpenVR) #114

Open
ROBYER1 opened this issue Jan 31, 2022 · 0 comments

Comments

@ROBYER1
Copy link

ROBYER1 commented Jan 31, 2022

  1. What happened

When using OpenXR with SteamVR as the default system OpenXR runtime and using multiple SteamVR supported devices together e.g. Vive Cosmos and Vive Trackers/Oculus Quest and Vive Trackers, the play mode/headset view will be black with SteamVR reporting
' CEF Local Resource Load Error: http://localhost:27062/app/image?app_key=system.generated.unity.exe&version=1.21.6 -> 404 (Not Found)'

See a video of this happening here, it is blocking me from working on a tool for using Vive trackers in OpenXR. I stress that this worked fine for me before I moved to using OpenXR, using OpenVR for this works totally fine but I want to support OpenXR for Vive trackers in Unity for my tool!
https://www.youtube.com/watch?v=3hVtffm324s

My Unity forum post about this is here:
https://forum.unity.com/threads/openxr-and-openvr-together.1113136/#post-7853883

I have reported this to Unity with Case: 1399332 and Steam Support with Ticket: HT-KB3B-G3TJ-RNNH but Steam support sent me here.

  1. How can we reproduce it using the example you attached

Download this repro project:
https://drive.google.com/file/d/1Qv0bpq4ZdZoCQU5A7edSoBQeCrl3CYe_/view?usp=sharing

  1. Install Unity 2021.2.8f1
  2. Install SteamVR Beta 1.21.6
  3. Set up your Oculus Quest 2 via Oculus Link or Vive Cosmos (without SteamVR tracking faceplate)
  4. Set up at least 1 SteamVR base station and Vive tracker

Now to set up multiple drivers with SteamVR, this is a supported feature of SteamVR
Below steps you can follow this video if it helps, it is a popular setup for steamVR games that use Unity like VRChat where people use multiple steamvr supported devices in the same play space as kit is interchangeable
https://www.youtube.com/watch?v=JnX8NK-lsPY

  1. Install OpenVR space calibration - https://github.com/pushrax/OpenVR-SpaceCalibrator/releases

  2. Go to your steam installation e.g. C:\Program Files\Steam\steamapps\common\SteamVR\resources\settings

  3. Open default.vrsettings with notepad or VS Code to edit

  4. Change 'requireHmd' value from true to false

  5. Change activateMultipleDrivers from false to true

  6. Save the file

  7. Open SteamVR with your tracker and headset of choice switched on + the steamVR base station

  8. Goto SteamVR settings - Startup/Shutdown - Choose startup overlay apps - enable Space Calibrator

  9. Goto SteamVR settings - Advanced settings - show

  10. Goto SteamVR settings - set steamvr as Current OpenXR runtime if it isn't already.

  11. Open OpenVR Space Calibrator through the steamVR overlays menu (SteamVR menu - third dot on the bottom right from the right, looks like a compass)

  12. Select reference space - your headset controller you are holding and choose the vive tracker in the target space.

  13. Choose calibration speed - slow and click start calibration to calibrate the play spaces then hold the tracker and controller together while drawing an infinity symbol with your hand in your play space to help calibration.

  14. Verify the tracker and controllers line up in the same play space, if not try calibration again or refer to this clip of the video: https://youtu.be/JnX8NK-lsPY?t=308

(We are nearly there!)
You can watch my repro video of this here https://www.youtube.com/watch?v=3hVtffm324s
19. To repro now, turn on SteamVR, turn off the vive tracker and base station, just keep your headset on or ready
20 Open the project in Unity 2021.2.8f1
21. Verify in Project settings - XR Plug-In Management that OpenXR is the default target
22. Verify in Project settings - XR Plug-In Management - OpenXR - Play Mode OpenXR Runtime set to System Default
23. Also verify in Project settings - XR Plug-In Management - OpenXR that Oculus Touch Controller Profile and HTC Vive Tracker profile is in the list if you are using Oculus, if you are using Cosmos (make sure it is without the steamvr tracking faceplate add-on), you can add the Vive Cosmos controller profile but it will cause an error with SteamVR as SteamVR OpenXR doesn't support the Cosmos controller profile yet somehow so leave that off but make sure HTC Vive Tracker Profile is in the list
24. Open Scenes - Controller sample, with just your headset on click play and verify the scene opens SteamVR for OpenXR and works fine for at least the headset tracking, Vive Cosmos as mentioned the controllers will not track either way (I will report that as a separate bug).
25. Now, keep the scene running and switch on the SteamVR base station and Vive Tracker, wait for them to connect. If you open the steamVR overlay you should see the tracker show up while connected.
26. Now the scene view should go black, open SteamVR - Developer - WebConsole to see logs for this reporting this error 'CEF Local Resource Load Error: http://localhost:27062/app/image?app_key=system.generated.unity.exe&version=1.21.6 -> 404 (Not Found)'
27. If you stop play mode and try again the view will be black and nothing tracks, this will continue until you close SteamVR + Unity and just with only the headset on (no base station or trackers on) and repeat from step 19 of this repro.
Refer to this repro video to see it at this timestamp exactly as soon as the vive tracker connects it all goes black
https://youtu.be/3hVtffm324s?t=37

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant