Jump to content

[Bug] SteamVR/OpenXR Suggested Bindings not working for ViveTracker Menu button (Naming mismatch)


PascalOtto

Recommended Posts

Hi developers,

 

I have a problem with SteamVR/OpenXR suggestedBindings. For Vive-Controllers there is a mismatch between the input-name in SteamVR and the OpenXR-Specification. The menu button is named "menu" in openXR-Specification, but is named "application_menu" in SteamVr.
When I suggest

 `XrActionSuggestedBinding(MyAction, FOpenXRPath("/user/hand/left/input/menu/click")`

it works fine and steamVRs binding will look like this

              {
               "inputs" : {
                  "click" : {
                     "output" : "/actions/ue/in/vive_left_menu_click"
                  }
               },
               "mode" : "button",
               "parameters" : {
                  "force_input" : "click"
               },
               "path" : "/user/hand/left/input/application_menu"
              },


so somehow SteamVr seems to reinterpret "menu" as "application_menu" and it is working correct

But when I do the same for vive trackers it will not be translated to the correct path (I am using the pogo pins) `

XrActionSuggestedBinding(MyAction, FOpenXRPath("/user/vive_tracker_htcx/role/chest/input/menu/click")
            {
               "inputs" : {
                  "click" : {
                     "output" : "/actions/trackers/in/chest-menu"
                  }
               },
               "mode" : "button",
               "parameters" : {
                  "force_input" : "click"
               },
               "path" : "/user/chest/input/menu"
            },


The binding will not work for tracker menu pogo pin, unless you change it manually to "application_menu".

Do you think SteamVR developers forgot to make the name translation for the trackers and only did the controller?

I need to get the bindings to work without manual adjustments.

Edited by PascalOtto
Link to comment
Share on other sites

Not sure if it's related, but I face weird behavior as well. If I try to add multiple bindings to the same tracker role, it tries to add the first bindings for all actions.
For example, if I add the following:

Bindings.Add(XrActionSuggestedBinding{ Tracker.GripAction, GetPath(InInstance, Role + "/input/grip/pose") });
Bindings.Add(XrActionSuggestedBinding{ Tracker.TriggerAction, GetPath(InInstance, Role + "/input/trigger/click") });

The output of the bindings ends up with:

...
         "poses" : [
            {
               "output" : "/actions/ue4/in/vive-tracker-grip-tracker_shoulder_right",
               "path" : "/user/shoulder/right/pose/raw"
            },
            {
               "output" : "/actions/ue4/in/vive-tracker-grip-tracker_shoulder_right",
               "path" : "/user/shoulder/right/pose/raw"
            }
         ]
...

See the records are duplicated, and if I add three actions, there will be three identical records.

And if I change the order:

Bindings.Add(XrActionSuggestedBinding{ Tracker.TriggerAction, GetPath(InInstance, Role + "/input/trigger/click") });
Bindings.Add(XrActionSuggestedBinding{ Tracker.GripAction, GetPath(InInstance, Role + "/input/grip/pose") });

I get the following:

...
	"sources" : [
            {
               "inputs" : {
                  "click" : {
                     "output" : "/actions/ue4/inavive-tracker-trigger-tracker_shoulder_right"
                  }
               },
               "mode" : "button",
               "path" : "/user/shoulder/right/input/trigger"
            },
			{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/ue4/inavive-tracker-trigger-tracker_shoulder_right"
                  }
               },
               "mode" : "button",
               "path" : "/user/shoulder/right/input/trigger"
            }
         ]
...

I tried to add bindings to different profiles ("/interaction_profiles/khr/simple_controller", "/interaction_profiles/htc/vive_controller", "/interaction_profiles/htc/vive_tracker_htcx"), only "/interaction_profiles/htc/vive_tracker_htcx" has this issue.

Link to comment
Share on other sites

Hey Jerry, yeah I was able too replicate the problem you described. I had only tested with one action binding until now, but this is another big problem which needs to be fixed. I wonder if Vive or Steam devs did absolutely zero testing on the Vive tracker OpenXR extension!
Did you find a workaround to get the suggested bindings working, Jerry?

If this is a SteamVR problem and not fixable by Vive developers, what is the best way to get SteamVR developers attention? If any Vive devs are reading this, can you please help letting valve know about the problem?

Link to comment
Share on other sites

Hi Pascal, sorry I don't know if it's a Vive or SteamVR problem. We ended up making our tool to modify steamvr.vrsettings to use our custom bindings instead of adding suggested bindings from our games.

Yeah it'll be great if we can get Vive devs attention here...

Link to comment
Share on other sites

Hey Pascal, the new release fixes one of the issue of mine, it's now producing multiple entries instead of duplicates of the first one. However, the `application_menu` mapping is still broken for me. In their SteamVR 2.5 release, they said `Fix Vive tracker menu pogo pin not being mapped correctly for OpenXR apps.`. Are you seeing the same issue as well? Also, the `/input/grip/click` path is not working 😞 

image.thumb.png.89b12ef21ed497f6bf73af75cb007398.png

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
×
×
  • Create New...