SUNROCK: SteamVR Knuckles Support for UE4

LATEST UPDATE : Releasing alpha version of Knuckles Support for UE4

SUN ROCK (early release alpha)

UE4 LIVELINK & INPUT SYSTEM PLUGIN FOR STEAMVR KNUCKLES
Includes a Livelink Plugin for SteamVR’s new Knuckles Streaming Hand Skeletal Data System and a hook to the new Action Binding System to UE4’s native Event System.

Download the project at GitHub: https://github.com/1runeberg/SunRock

Please post in this thread for support and any questions.

NOTE A: If you are using a custom 4.21 Build (i.e. from Source rather than from the Launcher), use the following instructions to ensure the Binary plugins here work for your Source Built Engine (ignore if you are using the 4.21 Preview from the Epic Launcher):

  1. Go to ‘Plugins > KnucklesLiveLink > Binaries > Win64’
  2. Edit the ‘UE4Editor.modules’ file.
  3. Change the BuildID to match your UE4 editor BuildID and it’ll load (find this by looking in ‘Engine > Binaries > Win64 > UE4Editor.modules’)

Workaround courtesy of: Steam Community :: ItsNotMeTrustMe
Forum Post: Steam Community :: Error

NOTE B: To reset Action Manifest for UE4Editor to defaults:

  1. Go to “Program Files (x86)\Steam\config\steamvr.settings”
  2. In there, will have a section called “system.generated.ue4editor.exe”
  3. Delete this section to restore defaults

Courtesy of: Steam Community :: Error
Forum Post: Steam Community :: Error

PREVIEW VIDEO

==============================================
ARCHIVED ORIGINAL POST FROM 08-04-2018, 11:33 PM
==============================================

So been working on some prototype EV2 Knuckles courtesy of Valve.

Here’s current progress:

To date, official engine support is in the works, so linking directly to Steam’s C++ api and feeding direct bone transform values to a custom animation blueprint.

Will be including in my free opensource RunebergVR plugin (https://www.unrealengine.com/marketp…ponents-plugin) and also upcoming indie game side project LightweaVR.

Will post how-to vids in the Youtube channel soon. For those who have as well early access to the hardware or want to learn more how to work with the new SteamVR Input System in UE4.

Cheers.

Knuckles meets Livelink! I made the interface but still feels like black magic…

https://twitter.com/1runeberg/status…92436157661184

And here’s a preview of the skeletal data translation from Valve’s reference skeleton to the Stock UE4 hand skeleton:

Here’s the reference I made on both skeletons:

https://twitter.com/1runeberg/status…47749896757248

And finally here I field test the plugin with a vr door mechanic tutorial:

Released early alpha for those with EV2s & EV3s so you can try them in 4.21 while waiting for official support. See original post for details and link to a Github repo for the demo project and binaries. ENJOY!

Hi Hello,

After using your project, my other project on 4.21 is not able to use the inputs (trigger, trackpad, grip) for the normal vive controller.
Is there something that your project will affect?

Livelink works great btw!
Thanks.

Hi roiboiboi! Thanks, really enjoy Livelink as well.

For the inputs, could be SteamVR is getting confused between two UE Editor sessions, especially if you have both of them open at the same time.
​​​​​​

Check which bindings the Input Debugger is reporting when you’re using the wands… It should correctly use default Vive bindings.

If not, try a Steam and SteamVR restart in between sessions. Failing that, let me know and I can provide the default action files for all other controllers in the repo to ensure these are used as a fallback even if SteamVR doesn’t correctly register the session change.

Cheers.

There is a steam vr .manifest file that references the default actionmanifest for a program name. If it is loading from that on editor start then a custom actionmanifest will break input. The entry can be deleted from the .manifest file though to restore default legacy bindings.

Cheers @mordentral

SunRock now runs with the latest Preview 4 Release of 4.21, default bindings has also been added earlier - let me know if you continue to have problems @roiboiboi or if you’re continuing to have to reset the action manifest manually.

Also added instructions now on how to reset the manifest.

Cheers.

Hello, first thanks for this plugin ^^
I have EV3 and try to start new prototype, but when i try to make one Build (on shipping or dev)
I have one error :

Hi - As I’ve only released the binaries so far, please try putting the plugin as an Engine plugin (under Engine/Plugins where your UE4 is installed) and try another build.

I should also have another version by next week which is more suitable for builds (at the moment the plugin actively looks for/ works only with Knuckles, upcoming version does away with this requirement).

No sorry i have try everything and its not working.
But thanks, its good for first test.

Updated to 0.2 alpha:

Fixes:

  1. Remove Hard crash when SteamVR is not Detected

New Features:

  1. Runtime: Select Motion Range (With or Without Controller, Left, Right or Both)
  2. Rumtime: Select whether to receive Knuckles Skeletal Data, UE4 Skeletal Data, Both or neither
  3. Runtime: Check status of SteamVR

Tested against Shipping Build. For Builds you need to COPY the plugin to:

{YourProjectName}\Plugins\KnucklesLivelink (must be a subfolder of Plugins)

Any questions, let me know!

Hi, good job for the plugin ! ^^
i try to build too and i have the same error as V3ry.

For more details

UATHelper: Packaging (Windows (64-bit)): Running: E:\Program Files\Epic Games\UE_4.21\Engine\Binaries\DotNET\UnrealBuildTool.exe SunRock Win64 Development -Project=“F:\Unreal Projects\SunRock-master_Build\SunRock.uproject” “F:\Unreal Projects\SunRock-master_Build\SunRock.uproject” -NoUBTMakefiles -remoteini=“F:\Unreal Projects\SunRock-master_Build” -skipde
ploy -Manifest=“F:\Unreal Projects\SunRock-master_Build\Intermediate\Build\Manifest.xml” -NoHotReload -log="C:\Users*\AppData\Roaming\Unreal Engine\AutomationTool\Logs\E+Program+Files+Epic+Games+UE_4.21\UBT-SunRock-Win64-Development.txt"
UATHelper: Packaging (Windows (64-bit)): Using Visual Studio 2017 14.14.26428 toolchain (C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428) and Windows 10.0.16299.0 SDK (C:\Program Files (x86)\Windows Kits\10).
UATHelper: Packaging (Windows (64-bit)): ERROR: Could not find definition for module ‘KnucklesLiveLink’ (referenced via default plugins -> KnucklesLiveLink.uplugin)
UATHelper: Packaging (Windows (64-bit)): (see C:\Users*
*\AppData\Roaming\Unreal Engine\AutomationTool\Logs\E+Program+Files+Epic+Games+UE_4.21\UBT-SunRock-Win64-Development.txt for full exception trace)
PackagingResults: Error: Could not find definition for module ‘KnucklesLiveLink’ (referenced via default plugins -> KnucklesLiveLink.uplugin)

thanks

Same problem, i have try with shipping build, windows 32 or 64 bits.
With your package v2 without any change.
With the plugin added directly to the engine, same error.

Thanks for reporting @v3y!

I’m investigating this issue as I use a binary only build as well for personal project, could be something I neglected to post on GitHub.

Otherwise I’ll prioritize decoupling the plugin from a personal project so I can release the full source code which should allow you to include it as a normal Project Plugin.

Cheers,
Ron.

This has just gone beta and Source Code is now up:

Pls note CVar SteamVRInput.Enabled must be set back to its default 0 value to access the reimplementation, as I’m having my controller defer to the stock Engine SteamVRController if it finds that it’s enabled.

Hey Runeberg, first off thanks for the project! It’s great to have all this working without much hassle :slight_smile:

Could you elaborate on that last point? Everything was working perfectly before but now I’m not getting any input from either of the Knuckles controllers (though tracking is working). I played some VR games with the original Vive wands and I assume that caused the issue. I’ve tried resetting the action manifest and that didn’t fix the problem, however.

Hi @uw19

No prob! Are you referring to my last post? If you have enabled the Engine’s SteamVRInput implementation via the DefaultEngine.ini (https://twitter.com/1runeberg/status/1078413657564839936) or a custom build, this needs to be disabled (set back to the default 0 instead of 1).

Also, try resetting the steamvr.settings:

  1. Go to “Program Files (x86)\Steam\config\steamvr.settings”
  2. In there, will have a section called “system.generated.ue4editor.exe” (or variations of this)
  3. Delete this section (and any ue4 variations) to restore defaults

Let me know if you continue to have problems with this!

Cheers

!

That example in your Tweet was very helpful. Turns out the problem was with the new Steam Input Bindings. Somehow they had all gotten reset for the UE4 editor so nothing was assigned to any of the bindings. I was able to get input working again, although everything is very messed up so I’ll have to play around with it :slight_smile:

Thanks again!

EDIT: Looks like this is not as intuitive as I thought. Could you shed any light on where the Controller Input Bindings in SteamVR gets the input names? It seems to be very confused. Adding inputs to Project Settings -> Input in the Sunrock project doesn’t work. I got the new inputs to show up once, but now they’ve disappeared again and won’t return. It currently just shows an older version of the bindings. I know that there is an issue with using Controller Input Bindings with older versions of UE4.

For those interested – I think I figured out what I did wrong. You first add the inputs into your project settings in UE4. Make sure you have a valid binding for that input, it cannot be blank. Then I had to restart SteamVR and then they showed up into the input bindings. Seems to be working now!