VR Expansion Plugin

Put up a list of recent commits and changes:
https://vreue4.com/4-26-patch-notes?section=hand-socket-comps-and-many-fixes

Most notable one being the addition of the hand socket component (detailed at links below)

https://vreue4.com/documentation?section=hand-socket-components

1 Like

Hey, thanks for working on .

I’m dealing with an issue where the VR camera keeps rubber-banding back to the origin. It’s reminiscent of the same rubber-banding you get with networked regular multiplayer where a collision is detected. Except, I’ve removed all collisions with both the VR pawn and the immediate environment (gravity set to 0). So it shouldn’t be stuck on anything.

The issue only exists on the client side. If I were to spawn in as VR on the host machine, it would operate fine. The host machine doesn’t see any of the client VRs rubber-banding. The VR pawn remains in place (with the rotational transform replicating fine).

So it -looks- like the translation transformation isn’t being sent to the server to me, but I don’t see a setting for . I’m not well versed with working in the UE4 source yet, but I see OffsetComponentToWorld = FTransform(CamRotOffset.Quaternion(), ->GetActorLocation(), ->GetActorScale3D()); captures the camera rotation and actor location, but I know the actor location and VR location aren’t consistent.

Should be the replicated camera’s location instead? If not, do you have any advice on how to track down?

Which base character are you using there? Generally with the std VRCharacter head only movement shouldn’t be causing any rollback unless it is hitting something, I don’t roll back “IRL” movement as its client authoritative, I only enforce world collisions.

The simple char is a bit different, which is why I am asking which base class you are using.

Have honestly never seen anything like what is going on there aside from some guy that had an entire level in a collidable volume and was climbing every time he hit a button.

Yeah it was simple character. I went back over things again yesterday and swapped to the VRCharacter as the base and horizontal movement works fine without the rubber-banding. Although the client VR head is locked along a horizontal plane so all vertical movement is lost.

Looking through the code I see some ConstrainLocationToPlane usage that might be the culprit, but also I still have gravity at 0, and collisions disabled so it might think it’s in permanent freefall which could affect things. is probably an issue with me on my end.

What engine version are you on? The replication on the simple char was broken for a week when 4.26 first came out, but should be good in current releases.

4.26.2. The project is year long, and there isn’t much in there still, so I wasn’t too afraid of staying up to date.

I’ll double check that I didn’t revert the simple char fix, but it should be good.

No harm in making sure though.

Is there an easy way to modify the VRBaseCharacter to change the spawned GrippableMotionController class to a different class inheriting from GrippableMotionController without modifying LeftMotionControllerComponentName/LeftMotionControllerComponentName?

The reason is that I’ve written a lot of code to handle hand tracking and controller switching that I am separating out of my character class into a new blueprint that extends GrippableMotionController.

You can literally deconstruct them and add your custom ones, the character doesn’t “require” the controllers.

If you did it in c++ it would be very direct as you could just replace the core class in the object constructor.

Thread was deleted for a bit for some reason, as well as many of my posts within it, is back up now

Hi , sorry to bother again :slight_smile:

I’m having weird collision effect when using the plugin on swords ( is on Quest2, but on PC happens the same thing albeit a bit less pronnounced). It’s like if I swing fast enough the weapon “pre-collides” with the object at a distance from where the real collider is, the controller gets “stuck” in the air as if there was something preventing movement, and then collides again where the real collider of the table is. If I move the weapon slowly it doesn’t happen.

Big objects like the mace don’t have effect, but maybe it’s because they move a bit slower because of the damping.

Have you seen before? Any idea why is happening?

I’m on UE4.25.3 with substepping enabled (async = false, delta time 0.016, substeps = 6)

Thanks so much for your help. (the first and last time I hit the table does the precollision effect)

That looks like CCD bugging out, when it can’t entirely prevent tunneling it can freeze like that “stuck” in penetration (assuming you aren’t stabbing by accident that is), also a physx issue AFAIK, unknown if it will happen in chaos still as I still can’t run good tests against chaos until its working properly).

Handling the mass and setting the constraint coefficient on the grip settings (to 1 normally and adjusting stiffness to account for it) can remove that. Also making sure that the edge on the blade isn’t super thin.

I also have a setting to increase CCD steps in the project settings that I added, I normally suggest that people avoid using that as its possible to work around these issues by better balancing the physics settings on the object itself but in a few cases people have increased that to help.

Thank you very much , I didn’t know about the CCD Steps setting, will give it a try although I’m targeting Quest and I’m not sure if I can take any additional performance hit :slight_smile:

Will play with the constraint on the grip too and hopefully it will go away with it.

Thanks again for your help!

both repos have a new branch for UE5 PreRelease up, its pretty much just a modified copy of the 4.26-Chaos branch with some fixes to compile on UE5.

6 Likes

Thank.You.So.Much!

You amaze me with your attitude and effort towards project.
I was wondering if there is a branch for ue5 and now I just saw that you updated it a minute ago.

I really hope that I can somewhen and somehow give back to you the value of what you give out to me and the community.

Thank you so much!

1 Like

Hi ,

I’ve recently upgraded my project from 4.24.3 to 4.26.2 and I’ve found that some of my grippables no longer work. I’ve had a look at the migration docs, but I’m not seeing anything I think could be the issue.

In 4.24.3 I could have a normal Actor with a Grippable Static Mesh as root and that in turn could have a child Grippable Static Mesh which could be gripped and moved independently of the parent. What appears to be happening since upgrading is these grips are dropped immediately after the grip happens, as they are firing the Drop event.

I’ve tried with a Grippable Static Mesh Actor, adding a child Grippable Static Mesh, the parent actor is now gripped as expected, but in case the child component is dropped as soon as it’s gripped.

All grips are going through Grip Object By Interface, I check for hand overlap of components before actors when gripping, so components take proprity.

Is there anything obvious I might be doing wrong composing these objects as described?
Am I missing something between 4.24 and 4.26 about how child grips are handled?

Thanks for any help!

You missed some of the conversion steps, to prep for UE5 I made the choice to hard nuke an interface flag that was double creating functions. Some instance of an interface is still referencing the objects version of the function instead of the interfaces.

Its generally helpful to do a global BP search for the migration notes mentioned functions.

Creating a new level not in the template help:
Plugin installed fine and working, I’m able to create sliders with ease etc. (Within the template) a new level within the template I just add the vrplayerstart and it all works, BUT if I start a new project, and new level with the plugin enabled, when I add the vrplayerstart like in the template it doesn’t work? What am I missing?

Sorry for the newbie question but is there a detailed guide on getting to run on a new project? Do I need to copy the template gamemode as well and assets?

I’m loving the slider blueprints and have no issues with the functionality the plugin offers, but I’m not able to get the player pawn working like in the template.

the player controller in the template handles spawning the pawn to one of the vr player starts, it also checks if the player is in VR or not and spawns a FPS testing pawn or the VR pawn based on that.

You can move all of logic out of the player controller or change it in general, but that would be why you are seeing differences, your new project doesn’t have the same gamemode/player controller as the template.

Hi! Love your plugin, just wanted to know what the plan was for UE5?

Will be migrated across?

Cheers,