Valve's SteamVR Input Plugin

Does this happen with the sample project? Try disabling other plugins that may be using SteamVR Input (e.g. OpenInput) or iother VR plugins such as the Oculus plugin.

Hi, I posted a reply on this as well in your post on the SteamVR forum.

Yes I already tried both thanks, which is what got the buttons working. But still no tracking. I gave up and created my own system to handle different controllers, but I might try again when I get time.

Hi David,

Thanks for the feedback.

With the Marketplace version, you shouldn’t need to recompile the plugin, so yes, you can keep to a BP-only project.

Key benefits of the new input system are flexibility of defining controls with a variety of controllers & configurations, end-user (players) freedom to customize & share action/controller mappings as well as alignment to upcoming OpenXR standards. We are in close collaboration with Epic Games on this with their OpenXR plugin (beta in 4.22).

You do not normally need to generate the binding files more than once and normally gets auto-generated for you (on re-start) if the Engine side action mappings are in-place properly. The Action Manifest, generally you need to regenerate this only if you add any new actions. The Controller Bindings, once generated, you can edit via the SteamVR Controller Dashboard, this allows in-place editing.

Combinations of button presses are already supported, and are called “Chords”. You just need an action mapped to a SteamVR Generic-None Key, and then in the SteamVR dashboard, specify the controller key combinations you want. (currently only in the GitHub version)

We do realize that there is indeed a bit of learning curve with the new system, but once a VR dev understand all the underpinning concepts, we hope they’ll find that there’s a lot of power & flexibilty here that developers normally had to code for. As concepts are from the upcoming OpenXR standard, this also positions them as a XR developer in the future as more and more platforms embrace the standard in the upcoming years.

I hope that helps.

Hey guys,

I’m trying to get the index tracking to work and I’m having the same issue as other users here. I’m loading the editor from the SteamVRInputPlugin from github and they seem to work correctly in editor via VR Preview. I get full finger tracking, gripping and teleporting. When I launch the game by right clicking on the .uproject file, the hands are offset from what I see in the VR Preview mode in editor and have no animation at all. They track correctly and I can grip and teleport but there doesn’t seem to be any finger tracking. I’ve also tried building a win64 shipping executable with no luck. Any help would be greatly appreciated.

Thanks,
Tony.

Specs:
Unreal: 4.22.3
Map: SteamVRHands_SampleMap
SteamVR Input Plugin: 1.0 SDK 1.4.18
SteamVR: 1.0
All other VR plugins disabled

I found the solution for those of you still not finding tracking.

On the construction script of the BP_MotionController in the STEAMVR PLUGIN folder (ie not the VR template), you’ll see that this plugin uses a DEPRECATED node “Set Hand” enumerator

In the official UE4 Template, this has been updated to “Motion Source” instead, and if you don’t have SteamVR plugin installed, the Left/Right works perfectly.

With SteamVR Plugin installed, the “Motion Source” list does not include “Left” or “Right” and none of the other values seem to track.

With SteamVR Plugin installed, go back to your VR Template BP_MotionController Construction script and change the “Motion Source” back to deprecated “Set Hand” enumerator.

Presto!

Hopefully you guys can fix this up to work right once Epic fully deprecates the Hand enum currently working in the plugin.

Does this plugin support showing the controller in hand out of the box? I had a look around and it seems that in a previous version of this implementation had this functionality.

See here to see what I mean:

Also, is there a workflow in place for setting custom poses for grabbing differently shaped virtual objects? Maybe I overlooked it, but I didn’t find it in the wiki.

Hi,

Re: Controller visualization

Yes, the plugin has a custom animation node where you can set the Motion Range - either to output a pose with motion controller or without:


The controller visualization itself can be activated, as you would normally in UE4:


**Re: Custom poses **

If you meant, automatically figuring out an appropriate grab pose regardless of object grabbed, no there’s no built-in support for that.

Unreal however has a rich set of animation tools that can make generating poses easy from within the engine.

You can either record a pose or animation easily for use in blending using just the built-in tools in Unreal. I showed one way of doing this in a community video I made recently at around 15:34:

Hope that helps.

Cheers,
Rune

Thanks, Rune, for the quick reply. I got it to work!

Hi Rune,

There’s no built-in setup for a pinch gesture, right?

https://giphy.com/gifs/hpEpXagbqdvNp5SEZ8/html5

I’m currently doing this with the Noitom Hi5 gloves, and I would like to know if something like that is already integrated, or coding is needed.

For Index controllers, there is a “Pinch-Grab” special action. We’ve incorporated a pose for pinching in the sample content as well to demonstrate this (bow and arrow)

Coo, thanks for the info, I completely missed that :slight_smile:

Just out of curiousity: Is there any information on the roadmap? What kind of features are lined up for upcoming versions?

Hello @RuneBerg !

I just updated our project to use the SteamVR Input, and it all works fine for me on Index.
But my colleague is having the same problem as @anti_zer0 , the controllers aren’t visible at all (on vive). If he package the game the controllers become visible, but it appears that the actions doesn’t work since you can’t pick anything up etc.
Also when I opened up the controller bindings on his computer (via SteamVR dashboard) the mapping looks completely different than the default ones I set in the config.

It’s the same issue with the sample map and on a new project (with vive). Oculus and Index appears to work.

I am thankful for any help I can get, since the game is now broken :slight_smile:

Hi… Can you have a look at your colleague’s %APPDATA% directory, check for the name of the project (packaged build) and delete any previous configs/input.ini there inf any?

[USER=“3336098”]Valve Corp[/USER]

Does IVRSystem::GetStringTrackedDeviceProperty(…, ETrackedDeviceProperty::Prop_ModelNumber_String, …) return names of controllers equal to default_bindings/controller_type in json manifest file? It seems that I can’t correctly detect when using Oculus Touch.

Hi @YuriNK - That call returns the modelnumber provided by the driver so it may not strictly match the controller_type in all cases. A quick way to check what this text is, is from the steamvr system report.

I hope that helps!

Thank you. The problem is, I have no Oculus Touch to check.



Model String Property - Controller ID's

oculus rift s
oculus rift cv1
VIVE Controller MV
VIVE Controller Pro MV
knuckles

Keep in mind that I have ran into the model strings being formatted differently on different computers, you would want to search for relevant unique substrings.

Thank you, mordentral! Unfortunately, I used search for “oculus” from the beginning, so it seems that issue is somewhere else in my project.