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.
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.
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
Will play with the constraint on the grip too and hopefully it will go away with it.
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.
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?
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.