Jump to content

[Solved] Open Beta not starting in OpenXR when Ultraleap Gemini software is installed with OpenXR support enabled


Waxi

Recommended Posts

Issue description

When attempting to start DCS Open Beta 2.8.6.41066 with the --force_enable_VR --force_OpenXR command line options of the DCS.exe, DCS starts in 2D mode and not in VR mode. This happens for both the single threaded and multithreaded versions of DCS. Furthermore, the issue occurs no matter if Windows Mixed Reality or Steam VR are used as OpenXR runtime.

Skimming through the dcs.log file (see attachment), I noticed the following error related to OpenXR:

2023-06-13 09:39:09.356 ERROR   VISUALIZER (Main): OpenXR exception: XrResult failure [XR_ERROR_FILE_ACCESS_ERROR]
    Origin: xrCreateInstance(&createInfo, &instance)
    Source: Projects\Visualizer\Source\OpenXR\openxr_program.cpp:299
2023-06-13 09:39:09.357 INFO    VISUALIZER (Main): LAUNCH IN VR ed_FakeVR: ed_FakeVR
2023-06-13 09:39:09.358 INFO    VISUALIZER (Main): render thread initialization...

It seems that DCS cannot access the OpenXR library file in the file system.

Other OpenXR applications like the demo included with OpenXR Tools for Windows Mixed Reality work fine.

When not using the --force_OpenXR command line option with the single threaded version of DCS.exe, DCS starts in VR.

The system runs a fresh, clean and fully updated installation of Windows 11 Pro and the latest drivers for the installed NVIDIA RTX 3080 Ti with a HP Reverb G2 WMR headset. An Ultraleap Leap Motion Controller and the corresponding Ultraleap Gemini hand tracking software installed.

 

Solution that worked for me:

The Ultraleap Gemini hand tracking software includes an OpenXR plugin. DCS also supports the Ultraleap Leap Motion Controller and includes the corresponding library but seems to come with an outdated and/or conflicting version.

So, this is how I could fix the issue:

Copy this file:

C:\Program Files\Ultraleap\OpenXR\LeapC.dll

To the following folders and overwrite the existing LeapC.dll files there:

C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin
C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin-mt

After this, I could successfully launch DCS in OpenXR VR mode.

dcs.log


Edited by Waxi
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

  • Waxi changed the title to Open Beta not starting in OpenXR - VISUALIZER (Main): OpenXR exception: XrResult failure [XR_ERROR_FILE_ACCESS_ERROR]

It seems that I have found a solution. I have an Ultraleap Leap Motion Controller and the corresponding Ultraleap Gemini hand tracking software installed. This software includes an OpenXR plugin. DCS also supports the Leap Motion Controller and includes the corresponding library but seems to come with an outdated and/or conflicting version.

So here is what worked for me:

Copy this file:

C:\Program Files\Ultraleap\OpenXR\LeapC.dll

To the following folders and overwrite the existing LeapC.dll files there:

C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin
C:\Program Files\Eagle Dynamics\DCS World OpenBeta\bin-mt

After this, I could successfully launch DCS in OpenXR VR mode.

34 minutes ago, Flappie said:

Hi. Have you read mbucchia's guide here?

Thank you for the hint. I will check it out.


Edited by Waxi
Link to comment
Share on other sites

  • Waxi changed the title to [Solved] Open Beta not starting in OpenXR when Ultraleap Gemini software is installed with OpenXR support enabled
  • 2 weeks later...
  • 4 months later...
  • 2 months later...

Any Pimax Crystal with hand tracking users?

The hands sits too high, so I have tried to change api_layer_config.json, but my changes are not being accepted. I know the file is being read because I’ve tried to change the log level to debug and it’s writing to the log file. 
I’m suspecting maybe the config is being overridden by DCSs position values, but not sure what is going on. 
Any suggestions?

Link to comment
Share on other sites

18 minutes ago, AZDane said:

Any Pimax Crystal with hand tracking users?

The hands sits too high, so I have tried to change api_layer_config.json, but my changes are not being accepted. I know the file is being read because I’ve tried to change the log level to debug and it’s writing to the log file. 
I’m suspecting maybe the config is being overridden by DCSs position values, but not sure what is going on. 
Any suggestions?

I have the same issue and have tried the same steps. I don't know if there is a technical limitation on the hand offset in DCS but it would be great if you could offset by up to -20 in the vertical direction rather than the current limit of -10.

IIt would be best to start a separate thread as this is in one marked as solved


Edited by hornblower793
Added last sentence

Windows 11 Home ¦ Z790 AORUS Elite AX motherboard ¦ i7-13700K ¦ 64GB Corsair Vengeance DDR5 memory @ 5600MHz ¦ Samsung 990 Pro 1TB SSD for OS, Samsung 980 Pro 2TB SSD for DCS ¦ MSI GeForce RTX 4090 Gaming X Trio 24GB ¦ Virpil WarBRD base with VFX grip, Thrustmaster A10c and F/A-18 grips ¦ VKB Gunfighter Mk4 and MCG Pro ¦ Thrustmaster Warthog Throttle ¦ VKB STECS Throttle ¦ Virpil TCS rotor base with Shark and AH-64D  grips ¦ MFG Crosswinds ¦ Total Controls Multi-Function Button Box ¦ Pimax Crystal

Link to comment
Share on other sites

15 hours ago, hornblower793 said:

I have the same issue and have tried the same steps. I don't know if there is a technical limitation on the hand offset in DCS but it would be great if you could offset by up to -20 in the vertical direction rather than the current limit of -10.

IIt would be best to start a separate thread as this is in one marked as solved

 

After a lot of testing I figured it out:

1. Had to download and install Gemini from here: https://leap2.ultraleap.com/gemini-downloads/
2. After activating Hand tracking in PimaxXR, initially VR wouldn't boot because there was a conflict with an older OpenXR dll in DCSs bin/bin-mt, so I had to copy LeapC.dll from C:\Program Files\Ultraleap\OpenXR into D:\Games\Eagle Dynamics\DCS World OpenBeta\bin-mt and D:\Games\Eagle Dynamics\DCS World OpenBeta\bin to make it work.
3. There are 2 places inside DCS where you can enable UltraLeap hand tracking. Either Special - UltraLeap - Enable or by going to tab VR - Drop down under Use Hand Controllers - UltraLeap. Both can't be enabled at the same time. The latter has a major advantage for two reasons
   1. It's possible to adjust UltraLeaps configuration so it matches the actual install of the handtracking module. The in-game sliders alone were not able to adjust the position of my hands to actually match my simpit. See below in 4. how to adjust the configs. The configs don't do anything if you use the Special  - UltraLeap option. You have to use the drop down under VR.
   2. Another drop down in the VR menu allows you to select "No Pointers" or "No Pointers or Touch". 
4. Details about changing the configuration file can be found here: https://docs.ultraleap.com/openxr/configuration/index.html make sure not to place the file in the wrong folder. The folder it needs to go into is a hidden folder “ProgramData\Ultraleap\OpenXR”. I found that the following settings work well for Pimax Crystal as a starting point:

{  
"log\_level": "warn",  
"pos": \[0.0, 0.0, -0.08\],  
"tilt\_angle": 25  
}

 

With those settings I am 0,0,0 inside DCS and my hands match up perfectly with my cockpit.


Edited by AZDane
Link to comment
Share on other sites

7 hours ago, AZDane said:

After a lot of testing I figured it out:

1. Had to download and install Gemini from here: https://leap2.ultraleap.com/gemini-downloads/
2. After activating Hand tracking in PimaxXR, initially VR wouldn't boot because there was a conflict with an older OpenXR dll in DCSs bin/bin-mt, so I had to copy LeapC.dll from C:\Program Files\Ultraleap\OpenXR into D:\Games\Eagle Dynamics\DCS World OpenBeta\bin-mt and D:\Games\Eagle Dynamics\DCS World OpenBeta\bin to make it work.
3. There are 2 places inside DCS where you can enable UltraLeap hand tracking. Either Special - UltraLeap - Enable or by going to tab VR - Drop down under Use Hand Controllers - UltraLeap. Both can't be enabled at the same time. The latter has a major advantage for two reasons
   1. It's possible to adjust UltraLeaps configuration so it matches the actual install of the handtracking module. The in-game sliders alone were not able to adjust the position of my hands to actually match my simpit. See below in 4. how to adjust the configs. The configs don't do anything if you use the Special  - UltraLeap option. You have to use the drop down under VR.
   2. Another drop down in the VR menu allows you to select "No Pointers" or "No Pointers or Touch". 
4. Details about changing the configuration file can be found here: https://docs.ultraleap.com/openxr/configuration/index.html make sure not to place the file in the wrong folder. The folder it needs to go into is a hidden folder “ProgramData\Ultraleap\OpenXR”. I found that the following settings work well for Pimax Crystal as a starting point:

{  
"log\_level": "warn",  
"pos": \[0.0, 0.0, -0.08\],  
"tilt\_angle": 25  
}

 

With those settings I am 0,0,0 inside DCS and my hands match up perfectly with my cockpit.

 

Thanks - I will give this a go

Windows 11 Home ¦ Z790 AORUS Elite AX motherboard ¦ i7-13700K ¦ 64GB Corsair Vengeance DDR5 memory @ 5600MHz ¦ Samsung 990 Pro 1TB SSD for OS, Samsung 980 Pro 2TB SSD for DCS ¦ MSI GeForce RTX 4090 Gaming X Trio 24GB ¦ Virpil WarBRD base with VFX grip, Thrustmaster A10c and F/A-18 grips ¦ VKB Gunfighter Mk4 and MCG Pro ¦ Thrustmaster Warthog Throttle ¦ VKB STECS Throttle ¦ Virpil TCS rotor base with Shark and AH-64D  grips ¦ MFG Crosswinds ¦ Total Controls Multi-Function Button Box ¦ Pimax Crystal

Link to comment
Share on other sites

On 2/8/2024 at 12:41 AM, hornblower793 said:

Thanks - I will give this a go

Play around with the angle part if your cockpit has a lot of depth like in the F16 the difference between the ICP and MFDs. 
I believe the 25 degree number was posted by Pimax, but for me to match up my MFDs to my fingers as well as ICP, it’s closer to 15. 
EDIT: I just measured the actual angle on the tracking module and it’s actually 15 degrees, so not sure where the 25 degrees come from
EDIT2: The Pimax Crystal mounting surface is not 90 degrees to the screen, so maybe there is where the missing 10 degrees are.


Edited by AZDane
Link to comment
Share on other sites

  • 2 months later...

Its been a few months since anybody posted here, but I'm trying to create create/edit the json file. To which I'm absolutely  clueless. Could anybody forward me the copy of the api_layer_config.json file, so i can drop it in my ultraleap/openxr folder. 

Many thanks

 

Link to comment
Share on other sites

On 4/26/2024 at 9:06 AM, Cop9885 said:

Its been a few months since anybody posted here, but I'm trying to create create/edit the json file. To which I'm absolutely  clueless. Could anybody forward me the copy of the api_layer_config.json file, so i can drop it in my ultraleap/openxr folder. 

Many thanks

 

Has to go into C:\ProgramData\Ultraleap\OpenXR
Pimax has confirmed that the angle is indeed 15 degrees. After measuring the various distances in Fusion 360, the following values works for me. Your values may need to be slightly different depending on how deep your eyes are set and if you use different foam padding. 

file name api_layer_config.json

{
  "log_level": "warn",
  "pos": [0.0, -0.06, -0.09],
  "tilt_angle": 15
}

 

Also, be aware that everytime you update DCS, you have to either copy LeapC.dll from C:\Program Files\Ultraleap\OpenXR into D:\Games\Eagle Dynamics\DCS World OpenBeta\bin-mt and D:\Games\Eagle Dynamics\DCS World OpenBeta\bin or DCS will not boot into OpenXR VR. Alternatively you can just delete the LeapC.dll everytime from the DCS folders.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...