Unity OpenXR error: Failed to suggest bindings

Hi,
I am using Unity OpenXR Plugin 1.3.0
I added this interaction profiles:

Khronos Simple Controller Profile
Microsoft Motion Controller Profile
Oculus Touch Controller Profile
Valve Index Controller Profile```

We I start the game I'm getting this errors:

```Failed to suggest bindings for interaction profile '/interaction_profiles/htc/vive_controller' with result 'XR_ERROR_PATH_UNSUPPORTED'.
Failed to suggest bindings for interaction profile '/interaction_profiles/valve/index_controller' with result 'XR_ERROR_PATH_UNSUPPORTED'.```

What am I doing wrong? what am I missing?
Thanks.
1 Like

You’re doing nothing wrong, That’s expected behaviour. Basically it’s checking the hardware and going ā€œHey, this isn’t a Vive or Index controller!ā€

1 Like

But that’s an error, Is it okay to use a build with such errors?

I also don’t have hardware for Microsoft Motion Controller and Khronos Simple Controller…

When Unity Loads the OpenXR Controller Profiles, it asks the OpenXR API to connect to each loaded controller profile.

OpenXR, In Turn, is basically throwing the equivalent of a NullRef when trying to find that specific controller hardware and saying ā€œYo, that’s not connected!ā€

https://www.khronos.org/registry/OpenXR/specs/1.0/man/html/xrSuggestInteractionProfileBindings.html

This is an error you can safely forget, however, if you want to get rid of it, you COULD do some fancy stuff with the Input System to work out what headset is connected, and load the correct controller profile in using the Unity OpenXR plugin API…

If any other OpenXR experts would like to chip in here?

In that case, could it be that these errors are only fired in editor and not on build?

Technically this is a runtime bug as the runtimes are supposed to all support all of the core interaction profiles and both of those are core interaction profiles. All other interaction profiles are guarded by extensions so the runtime can tell the OpenXR plugin ahead of time that the interaction profile isnt supported and thus we wont send the bindings down for it. I assume you are running against the Oculus runtime which I believe is the only major runtime that does not support the entire core set of interaction profiles at this time.

That being said the error is harmless and you can ignore it, it just means that the bindings you send for those devices are being ignored by the runtime. It would only matter if those were the only interaction profiles you are sending, in that case you could get no input.

1 Like

The error doesn’t seem to be as harmless as suggested. I have it, and it’s stopped the input ā€œpointerPositionā€ ā€œ{RightHand}/pointerPositionā€ from reporting the correct positions, always returning (0,0,0). Removing the offending interaction profiles (valve index & htc vive), made the errors go away, and fixed those positions.

1 Like

That should not be the case, if it is then something else is going on. I will experiment here and see if I can reproduce the same thing.

What version of the input system are you using?

I tried the following configurations with the controller sample and in all cases both the grip and aim positions were tracking properly. If there is a setting or configuration that I missed please let me know. The way the devices and input system works in OpenXR only one device can be active at a time and providing data, so those other devices and bindings should be ignored. In the situation where you are getting invalid data can you also check the Input Debugger and see what devices are active ?

Unity 2023.3.24f1
OpenXR 1.3.1 / InputSystem 1.0.2 / InputSystem 1.2.0
OpenXR 1.3.0 / InputSystem 1.2.0
OpenXR 1.2.8 / InputSystem 1.2.0

7716877--967903--upload_2021-12-7_10-43-32.png

So now I can’t seem to be able to reproduce it.
My apologies.

No worries, if you see it again and get more info let me know.

This is super helpful, thanks!

@the_real_apoxol
I’m getting an identical and always persistent set of error in the latest 2021.2.7f1 using all of the latest OpenXR packages (OpenXR Plugin 1.3.1, XR Plugin Management 4.2.1, Interaction Toolkit 1.0.0-pre.8) when using Oculus as my OpenXR runtime as well. The error messages always appear at startup around frame 2:

The pointer rotation path is the one which is erroring for me as well. This is an issue for me as the default rotations for Oculus and OpenXR are not the same (OpenXR is 90 degrees rotated up as if it’s forward vector were pointing in it’s transform.up direction unless I use this specific path binding…).

Interaction Profiles Used

Full Error Log Dump

1 Like

The path unsupported errors are just from the Oculus runtime because it doesnt support those interaction profiles properly, but they should just be ignored.

As for the rotation the deviceRotation and devicePosition for the Oculus Loader do not match the deviceRotation and devicePosition for the OpenXR loader. This was a choice made by the Oculus runtime because OpenXR has two poses and the old Oculus loader only had one. The pointerPosition in OpenXR is a bit closer to the Oculus loader but still not 100% the same. What is the set up you are using here? Are you using the Oculus loader for Android and the OpenXR for windows?

1 Like

I’m currently stuck in HDRP land so I’ve only tested it on OpenXR for windows so far. Using the Oculus plugin with the new mapping doesn’t provide any rotation, which makes sense from what you said.

That’s good news! Do you know if they have any intention of fixing that? Every oculus developer who has correct controller rotations is currently stuck with have those error messages appearing all the time, and the errors are non-suppressible since they don’t happen in game developer controlled code. This seems like a bad design choice from Oculus, especially as it’s literally just a Euler rotation from being able to support everyone else’s [non-negotiable] standard of having two aim poses…

Do you know what the exact offset is? All OpenXR developers submitting to the oculus store are going to need to know that since they require the controllers to 100% match their real world size/position/rotation. I originally reported similar [but different] set of problematic offset March here: https://discussions.unity.com/t/820905 page-5 (These old photos were using the non-pointer strings and were inconsistent between different OpenXR plugin providers at the time…).

When I just now took a look the new rotation provided by the pointer string it looks like a 100% match. From the looks of it it’s still just the position which is still offset by about half of a controller’s bounding box. (Now just in the opposite direction as the link above.)

7789362--983499--Current Offset.jpg

I dont believe they intend to change it at all. The grip and aim positions are all correct by OpenXR standards. The issue is that controller model that is provided in the Oculus Integration package is not properly oriented to match their new grip and aim positions. Proper controller placement in OpenXR is tricky, especially because you dont actually know what controller is in the users hand, just which interaction profile is enabled which may not be the same.

1 Like

Ok that makes a lot of sense, everyone needs to do a small amount of fact checking and manually fixing for their particular variants of the controller’s models position is not a lot to ask for each controller model a dev wants in their game.

Knowing that my previously correct reference was wrong in a new context — is a lot easier to fix than having the underlying system be inconsistent.

Do you know if there is an intention to unify this at all? Since Oculus now runs on OpenXR Backend, why not have 2 poses, and make them match the OpenXR Standard regardless of which plugin is used? I don’t use the Oculus Integration package, so for me it’s not even about controller rendering. I just want consistency

Unity is pushing an extension called the Palm Pose that would help do this, outside of that I dont know of any but we can discuss it with the runtimes.

1 Like