VR Expansion Plugin

Thanks ,
I couldn’t get Set Can Affect Navigation Generation to work on the Grippable static mesh actors in the example template as it’s looking for a pawn object reference but I did find the ‘Can Ever Affect Navigation’ check box for the Static Mesh Component of the objects.

It’s been several years since I’ve worked with Unreal. (And first serious VR creation here)
I’ve forgot more than I realized, and I’m not getting any younger!

Even your most recent standalone build has that issue, try it out with the gunbase the hand just stays open

I’m not even sure that the demo was compiled when the hand sockets were in the plugin yet, I need to update that. Regardless, what engine version are you on? I asked that last post as the older 4.26 may still be bugged.

Edit I did recompile and place a new demo build out now that you reminded me

I’m on 4.26, the newest one you just uploaded standalone build still isn’t working. 2022 01 05 14 53 53 - YouTube

Ah its because I uploaded to the private demo, my bad, forgot the website linked to a different one.
I re-uploaded the same file to the public one now.

If you are on 4.26, are you on the precompiled binary or the repository version, the hand socket came out at the start of 4.27 so the precompiled binary is likely too old to have the last fix.

If you ARE using the precompiled binaries let me know, you can download the latest from the repo but I need to install 4.26 again at some point then and re-make those binaries.

I’m on a really old precompiled i’m sure, I’ll likely upgrade to 4.27 right away here I mostly just wanted to verify it was working first before I did. I got a chance to try that newer demo as well, and it worked awesomely so thanks for your time.

When a version is “locked” away because a newer one comes out I generally build the precompiled one last time and then sit it there. The repo branch for that engine version continues to receive improvements and bug fixes for as long as they cleanly merge in.

In case its likely worth re-compiling 4.26 one last time since that bug was fixed very shortly after the final binary and invalidates a component.

If you had the repo version of 4.26 it should function without issue.

i downloaded the locked 4.26, then rebuilt and the problem still persists for me. I’m in the process of moving over to 4.27, but even if I build a clean project with the 4.27 plugin it fails to build. both in launcher and manually. I also doubled checked, and deleted the intermediate to force it on the rebuild again but it comes up with the same errors on a fresh project.

Severity Code Description Project File Line Suppression State
Warning Warning: Plugin ‘VRExpansionPlugin’ does not list plugin ‘PhysXVehicles’ as a dependency, but module ‘VRExpansionPlugin’ depends on ‘PhysXVehicles’.

Did you download the 4.27-Chaos branch? You should have downloaded the master branch, the chaos branch is only for chaos.

As for 4.26 i’ll install 4.26 again tomorrow and see if that is a problem in the core, I haven’t had anyone else on 4.26 have issues with the packaged hands but i’ll double check.

edit I did double check on 4.26 and its also working correctly with latest 4.26-locked branch?

1 Like

Oh okay, that is prolly what I did yep. Thanks for the reply again.

Is there an easy way to make a rotation based lever (custom grip) that allows multiple grips?
I’ve tried creating a blueprint with Grippable Static Mesh Component as the parent class and setting the relative rotation manually, but Event Tick Grip only has one output for the gripping controller, so while the other hand still visibly grips the mesh, I can only get controller movement from one hand.

You would want to sample it in a timer or the objects tick instead in that case, grip tick is called from the handling controllers tick so that it is always post its movement.

You can also call IsHeld to get the list of holding controller and work off of that list. If is a stationary object though you would likely get better behavior using a physics constraint and just letting two physical grips apply their forces onto it.

In short though yes, its easily doable, the hard part is deciding HOW you want two hands influences to effect the rotation so that it feels decent.

Great advice, using a physics constraint works perfectly when setting the constraint damping to 0 to remove the jitter. Thanks for the quick response, the plugin is amazing!

You can have a damping > 0 if you set the projection limits to very low values and have the grip settings have a ForceCoefficient of 1.0f. That will prevent the grip constraints from getting stronger the farther away from where they want to be that they are (default constraint behavior in engine).

Good news, after finally getting around to updating to 4.27 it SOLVED my hands issues.
So quick recap for anyone searching in the future.
My issue was custom deltas on GUNBASE not conforming to the mesh in Unreal Engine 4.26, and the hand would stick wide open when running a standalone build of my game.
You can try updating to the LOCKED version of the PLUGIN of the version you’re currently using to see if that’ll fix it for you.
If doesn’t work for you, update to 4.27 and be sure to download the right branch for the Unreal engine you are using as the CHAOS and regular MASTER are different.
If when compiling, you’re getting errors requesting for CHAOS elements you have the wrong version for what you’re doing.
Thanks again, feels really awesome now.

Working on PS4 optimization, we noticed some weird behavior about grip scripts.
We massively use “gun tools” and “lerp to hand” grip scripts for almost all in-game objects.
Those scripts seem to trigger compare and dynamic rep routines every tick even if those objects are not gripped causing a huge waste of resources. Is replication even needed for GripLogicScripts property?

Hmm, in general no they don’t need to, however there are exceptions and they are meant to fully support replication. I cannot have an array that mixed replicated and unreplicated UObjects in engine so its either all or nothing.

That being said I don’t see why I couldn’t add a bool to universally not replicate scripts on a per grippable basis. That would allow people to turn it on when required and off when not. In your case you could likely leave it off for most (or all) of your objects. I have people making modular level editing tools that require the replication and some advanced logic scripts that require it as well.

What engine version are you working with? I would need to know how far back to port it to accommodate you, also if you have upgraded to a more recent engine version the global lerp to hand setup may be good for your uses.

thanks for your reply, we’re on 4.27, but no hurry: for now, I got rid of them overriding your ReplicateSubobjects with a Super::Super::ReplicateSubobject() call

Its live in current 4.27, test it out if you would.

bReplicateGripScripts is now part of the grippable classes, also its off by default as the built in scripts don’t require it.

Just wanted to note in here that in both repo’s the 5.0 branch is functional in the current preview 1.

However the 5.0 preview itself may have issues beyond that, it still needs full testing.

1 Like