Jump to content

[OpenXR] Vive Cosmos (no faceplate) + Vive Trackers in SteamVR while using OpenXR causes black screen on Cosmos in Unity


ROBYER1
 Share

Recommended Posts

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

How can we reproduce it:

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

5. Install OpenVR space calibration - https://github.com/pushrax/OpenVR-SpaceCalibrator/releases
6. Go to your steam installation e.g. C:\Program Files\Steam\steamapps\common\SteamVR\resources\settings
7. Open default.vrsettings with notepad or VS Code to edit
8. Change 'requireHmd' value from true to false
9. Change activateMultipleDrivers from false to true
10. Save the file
11. Open SteamVR with your tracker and headset of choice switched on + the steamVR base station
12. Goto SteamVR settings - Startup/Shutdown - Choose startup overlay apps - enable Space Calibrator
13. Goto SteamVR settings - Advanced settings - show
14. Goto SteamVR settings - set steamvr as Current OpenXR runtime if it isn't already.

15. Open OpenVR Space Calibrator through the steamVR overlays menu (SteamVR menu - third dot on the bottom right from the right, looks like a compass)
16. Select reference space - your headset controller you are holding and choose the vive tracker in the target space.
17. 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.
18. 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

Edited by ROBYER1
Link to comment
Share on other sites

A few things that stick out immediately:

1) It seems that there's a steamvr configuration issue based on "

' CEF Local Resource Load Error: http://localhost:27062/app/image?app_key=system.generated.unity.exe&version=1.21.6 -> 404 (Not Found)'"

- tons of threads around steamvr setup not working 27062 port vive and seem to be related to steamvr not working

2) The controller in the sample is an oculus controller.  There's a whole nest of issues there right now -- the mappings for that vendor would need to get added (why there were errors looking for cosmos controlelrs there) and more concerning is that the vendor uses a non-standard openxr loader, so I'm unsure what to expect when loading using the standard khronos openxr loader with that device.

To step back -- what is the goal here?

Link to comment
Share on other sites

@Alex_HTC the insight about the 27062 port not working is something I will investigate.

I tested this setup with an Oculus Quest + Vive trackers and separately with a Vive Cosmos (non steamvr tracking plate) + Vive trackers so please ignore anything about controllers this setup should work with a mix of SteamVR devices.

Basically I have this setup of an Oculus Quest 2 + Vive tracker play space synced working strictly with SteamVR through OpenVR in Unity game engine.

I saw that OpenXR supports Vive trackers now and the OpenVR plugin for Unity is abandoned now so I needed to update a tool I am working on that uses Vive trackers in Unity to use OpenXR plugin.

This is when I noticed this black screen issue which only happens with OpenXR not OpenVR.

My assumptions here are that OpenXR falls over in SteamVR when these combinations of devices are used when they worked perfectly fine together in OpenVR and I'm trying to figure out if the cause is Unity's OpenXR Plugin/SteamVR itself/OpenXR itself or all 3

Link to comment
Share on other sites

I can also confirm the same issue happens when using the SteamVR null driver instead of a headset and a Vive Tracker + Base Station just to test out the tracker. I'm at a loss at what else I can do other than get this issue raised through Unity and Steam Support who I have sent bug reports to both of

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...