VR Expansion Plugin

Thanks for the info. I did find an open source IK solution but have not look at how to use it with VR Expansion. GitHub - hacoo/rtik: Comprehensive inverse kinematics system for Unreal Engine 4. I do have the plugin from Yuri (VR IK Body) but it’s been a challenge to get it to work properly with VR Expansion plugin. It’s mainly because his documentation is totally lacking and the videos are really hard to understand. But maybe your information about changing those settings in the VR Character might be part of my issue with this.

But if someone has a tutorial or example of a plugin and VR Expansion working together I would really appreciate the help.

Pushed another commit to both repositories, I figured that as long as I was requiring some re-factoring of how people connect to IsHeld, that I might as well finish it out fully with where I wanted it to be.

Patch notes here: 4.22 Patch Notes – VR Expansion Plugin

Thank you for all your help mordentral and I’m sorry for the late reply.

I was able to get this working by doing the check on the authority side and making sure the inputs were only being applied to the server’s pawn. This works with two players, but needs more testing for multiple players.

… I really need to convince them to merge those to an array of structs or something with the finger ID…that is just a bad format to work with

Is the vive pawn character being rotated with X+ forward important to anything in the code? looking to change it to Y+ to be more compatible with other stuff.

? The engine is X+ in general, the character itself doesn’t care which way it is rotated but if you are talking about mesh facing (which is Y+ because…maya things) you are better off rotating the mesh inverse 90 degrees since rotating the character itself will also rotate the mesh if it is it’s child.

Hi Mordentral!
Thanks for the great Plugin. I used it in VR Flush and solved quite a few problems for me.

The LateUpdate feature is cool, but I have the problem in my current project that a fluid shader I made (uses AbsoluteWorldPosition and ObjectPosition nodes) is too slow and lags behind when an actor with that material is grabbed. The only way I managed to solve this was to turn off Late Updates when grabbing. Is there a better way? Can I get the material to update as fast as the motion controller does?

I have also had a similar problem where a BP containing a SceneCaptureComponent2D seems to force LateUpdate to off when the actor is grabbed.


No not really, late update is Epics solution for the render thread and game thread being a full frame offset from each other (render thread presents a frame after the game thread ran). So they shift late updated objects by the transform difference (delta) between the game thread controller transform and render thread controller transform (they re-sample it).

For a material to update based on the difference it would need a shader param that gets that delta difference, and for a scene capture to do it, it would need to have its view shifted by that delta.

Hi mordentral, as almost everyone says - thanks for the great plugin!

I’ve been playing around with it for a week or so and just come across something I can’t figure out. When I try and package my current project i get a cook error:

UATHelper: Packaging (Windows (64-bit)):   LogInit: Display: LogPython: Error: Struct 'Transform_NetQuantize' is marked as 'HasNativeMake' but the function 'VRExpansionPlugin.VRExpansionPluginFunctionLibrary.MakeTransform_NetQuantize' could not be found.
UATHelper: Packaging (Windows (64-bit)):   LogInit: Display: LogPython: Error: Struct 'Transform_NetQuantize' is marked as 'HasNativeBreak' but the function 'VRExpansionPlugin.VRExpansionPluginFunctionLibrary.BreakTransform_NetQuantize' could not be found.
UATHelper: Packaging (Windows (64-bit)): ERROR: Cook failed.
PackagingResults: Error: Unknown Cook Failure

When I was just playing around with the example map I was able to package fine and even in the current project I had previously been able to package but just tried today and this is happening. Not sure what I’ve done. Checked the source and the missing function it references is there in the source. Any ideas?

Alright. Thanks for the response :slight_smile:

Are you nativizing it? I don’t see a reason why it would be throwing that otherwise, the functions are there.

I don’t believe so? In project settings: Blueprint Nativization Method: Disabled

Then delete all intermediate folders, regenerate project files, and try again.

Unfortunately I had already tried that but just in case did it again and still get same error. I also went through config files of example project to see if there was anything different, only thing I could find was that I was building on development configuration whereas the example is shipping. Tried on shipping and still no luck however.

:frowning: I’ve tried rebuilding everything, redownloading all plugin files and anything else I can think of but getting same error. There are quite a number of other warnings during cooking but none of them seem likely for the failure, and they’re only warnings as opposed to the errors I quoted before. The only warnings I’m not too confident aren’t causing an issue are these:

UATHelper: Cooking (Windows):   LogOnline: Warning: STEAM: Steam API disabled!
UATHelper: Cooking (Windows):   LogOnline: Display: STEAM: OnlineSubsystemSteam::Shutdown()
PackagingResults: Warning: STEAM: Steam API disabled!

Thanks for responding so quickly btw and trying to help so far!

Yeah those are normal, they shut down steam during packaging.

Its interesting that its being thrown from LogPython though, are you using the Python Editor Script Plugin? Because it would be a conflict with something about how that works then.

Pushed a new commit to the repositories:

Added a new COM (center of mass) calculation / setting setup, this fixes some weird engine interactions with how
Epic intended that you set COM and welded attachments (it doesn't work correctly with welded children).

Patch notes here: [](

I had been using the python plugin for some stuff a while ago and forgot I had it enabled to be honest. That was indeed the culprit though! Disabled the plugin and packages ok now. Many thanks! :slight_smile:

Template got updated with the “AllowMultiGripping” interface boolean taken into account now.

Hello, would you mind if I ask you a question?
In single player mode, the player can click on the widget blueprints with ray, but if it is multiplayer, the ray will not work on the widget. Do you know why?