VR Expansion Plugin

Thanks for the answer.

How does the VR Expansion Plugin manage Physics Settings?
If I use a CCD with a large weight of Object Collision and a Mesh Component, I get the result I want, but I feel that the frame is delayed when I use the CCD.
Do you have something better idea?

CCD shouldn’t have any effect on “delay”, its just running collision in substeps. Its more likely that your “weight” being higher is dragging on the constraint. Also I don’t use the physics handle component, I duplicated its setup with several changes and baked it directly into my grip controllers.

I can’t for the life of me figure out how you managed to make the capsule follow the HMD. I researched for ages and they all pointed to yet I don’t see which specific set of functions do that.

Its in the VRRootCapsule C++ source, I am overriding the physics thread update and the local rendering to move the capsule. The actual “location” is the same so it took re-writing most of the character class to use the offset location. Its likely not “the” best method, but it was a challenge and I really liked have free reign over where I place the capsule relative to the head without clunky second actors or other methods. It also lets “feet level” be actor zero, which makes a lot of sense when handling things in VR.

Back in earlier engine versions there was an AlternateLocation function on scene components thta would have made it simplistic…sad thats gone now.

I was wondering what is the best Full Body IK solution to use with VR Expansion. Do you have any examples of how would work with your solution?

Any help with would be great.

I know that multiple people are using Ikinema and the new Full Body IK by AnimIK on the marketplace, I assume that others are using Yurik’s as well but I don’t know much about it. A lot of users used to use BIK but its pretty much gone now. I am not the best one to ask about though as I can’t package any IK solutions into the template or the plugin and haven’t played with the marketplace offerings much. I don’t think you will find something on the level of quality as Unity’s FinalIK though for less than an exorbitant fee.

As for setup, generally you set the parent relative component to “floor mode” and attach the mesh and run the IK logic. Some of the setups have built in rotation detection so you would likely also want to set the ParentRelativeAttachment to IgnoreParentRotation to let the IK handle it itself.

I have some backend stuff going with some people about possible IK things, but I wouldn’t wait around, its not something I can dedicate myself towards as its pretty much an entire project in itself to maintain a good IK plugin and I am not sure how serious they are about maintaining it if I helped out initially.

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 .

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 and I’m sorry for the late reply.

I was able to get working by doing the check on the authority side and making sure the inputs were only being applied to the server’s pawn. 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 !
Thanks for the great Plugin. I used it in VR Flush and solved quite a few problems for me.

Question:
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 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 , 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 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.