Epic Native OpenXR with Oculus vendor extensions

Hello,

In a last ditch effort I’m creating this post in hope of finding an answer to my problem.

So we’re developing a game for the Meta Quest. Eventually also want to have support for other VR platforms, but for now we’re focusing our optimization efforts for the Meta Quest.

First things first, we’ve built what we have using the bare minimum when it comes to plugins as we want to try to solve as much as we can in house.

We’ve been using OpenXR plugin with EnhancedInput for handling the motion controllers and input events.

This has been going very well, up until we added the Oculus Integration into our project. We would eventually need this for performing entitlement check because of Meta’s VRCs but this also unlocks some hardware options such as setting the device refresh rate.

From my understanding it’s better to target OpenXR as this is an industry standard, moreover, this has been working flawlessly, and it just so happens to have slightly better rendering performance vs OVRPlugin. This is where the problems begin.

So, within the plugin settings I have set the XR API to target Epic Native OpenXR with Oculus vendor extensions. This allows us to use oculus integration, but the hardware should still be driven by OpenXR runtime. Problem is though, when we set this I get the following error when hooking my headset up to ADB.

Ensure condition failed: ((Result) >= 0) [File:./…/Plugins/Runtime/OpenXR/Source/OpenXRInput/Private/OpenXRInput.cpp] [Line: 134]
OpenXR call failed with result XR_ERROR_LOCALIZED_NAME_DUPLICATED
LogStats: FPlatformStackWalk::StackWalkAndDump - 0.080 s
LogOutputDevice: Error: === Handled ensure: ===
LogOutputDevice: Error:
LogOutputDevice: Error: Ensure condition failed: ((Result) >= 0) [File:./…/Plugins/Runtime/OpenXR/Source/OpenXRInput/Private/OpenXRInput.cpp] [Line: 134]
LogOutputDevice: Error: OpenXR call failed with result XR_ERROR_LOCALIZED_NAME_DUPLICATED

Now, I’ve gone through the trouble of finding what XR_ERROR_LOCALIZED_NAME_DUPLICATED even means. XrResult(3) (khronos.org)

From khronos’s documentation the explanation of this error is the following:
The localized name provided was a duplicate of an already-existing resource.


Now, another problem we have is if we choose to target Oculus OVRPlugin, it messes up the hands by completely changing their position and orientation.

I’ve made a specific input action mapping that only references Oculus Touch events, and made sure there’s no duplicate actions in it either.

Something else to note is before we implemented the MetaXR plugin, we didn’t need to have anything assigned to the OpenXR Input field (see the first screenshot). But after having the MetaXR plugin this was required to be filled in as if it was left empty would result in a different error being thrown in ADB.

Ultimately, my question is, what can I look into to resolve the XR_ERROR_LOCALIZED_NAME_DUPLICATED issue?

This problem does go away when we target Oculus OVRPlugin but the performance takes a hit from utilizing this. That and the hands get all messed up.

1 Like

I have the same problem on UE 5.3.2 + MetaXR 92.
I see that My VRTemplate Sample project works fine.
My Quest Touch controller is not tracked and don’t allow to input anything.

For me, I meet the XR_ERROR_LOCALIZED_NAME_DUPLICATED error on using OVRPlugin. I have never changed this property, I use always default ‘OVRPlugin + OpenXR backend’

i have the same issue when using htc on openxr.
when i set the input mapping context to Settings > OpenXR Input, then it crashes. otherwise it works well.
that IMC was working well on wave.

any ideas?