Using override CallServerMove now instead of custom function
New grip type Beta InteractiveHybridGripWithPhysics (when not colliding grip makes the constraint stiffness 10x what the setting is so the object matches the hand more closely)
Moved some magic numbers up into const static variables in motion controller component
Some bWalkingCollisionOverride fixes, needed to manually check for walking movement mode to ensure
that it can't run during falling and the like. Removed checking for it in floor find function.
Fixed having actor grips stop simulation on ALL components during grip with physics only.
Should only stop simulating the root comp now.
Made the notify grip and notify drop functions slightly more performant (can be even better but low priority)
Added ability to set a grips Stiffness and Damping after grip.
*Edit 04/20/2017 Pushed another commit to the plugin (Trying to get small bugs and cleanup done before 4.16 so the locked 4.15 branch is as stable as possible).
Fixed server sided navigation, client side was overwriting it.
(Still think client side is way to go for VR).
Removed extra code in GripNotify function now that is has been cleaned up.
Added some explanation to the LocalOnly_Not_Replicated grip replication mode.
Both in comments in source and on the wiki.
I had tried using the parentRelativeAttachment before, and would love to use it, but the issue for me is that I need to drive the base body movement from the pelvis and not the head. Otherwise my IK looks funky because when I rotate my head the whole underlying animation is rotated.
I tried adding an extra parentRelativeAttachment component besides the inherited one, and attaching it beneath my pelvis tracker in hopes that it would use that as the parent, but it still seems tied to the HMD as the parent. Is there any way to make it accept any parent rather than just HMD? I think if I could have the pelvis tracker as parent it would work well for my body tracking setup.
Mmmm, forgot that with that many trackers that you would be using a pelvis tracker. The problem is that with a pelvis tracker I need to do the orientation math differently and it has to be based off of the initial position of the tracker (trackers aren’t attached facing up for the waist and aren’t at center of mass but rather at rear or front of body).
I was going to start working on that anyway because my capsule location needs to have the option to work off of a tracker for waist tracking. It will just take some calibration functions or properties to manage (tracker relative location / rotation around capsule, ect).
I should have something done weekend, had to get my trackers functional again.
Hello ! I have a question about VR Character. Would it be possible for users to set the VRCharacter to move the root as well?
If I am correct, when anything is attempting to get the world location/forward vector of the VRCharacter, it can’t just generically get the actor’s location, it needs to cast specifically to VRCharacterPawn and get the VRLocation/VRForwardVector.
If people want to avoid , is the only real option to use the VR Simple Character instead?
There would be no point to VRCharacter moving the root, it would be the same as SimpleVRCharacter then (and lose a couple of features like bWalkingCollisionOverride and the capsule head offset).
I will note that most VR setups in engine (including epics) have that same Actor location limitation that VRCharacter does, Simple character, while it solves that can’t use those two specific extra features.
Also the Simple character doesn’t rotate the actor anyway, you would still need to use the VRForwardVector.
Edit I may look into an optional camera to actor rotation for the simple character, however it will break some things like epics teleport system and their chaperone component.
Is there a way to disable the step up on feature? I love the climbing and grip systems but would like to disable stepping up on the stuff you are climbing and make the player do it the old fashioned way ;D
You mean like have to throw themselves up onto stuff?
Set the climbing step up height to 0.0f. That should make it impossible to actually be able to step up while climbing, that value is " height for step up" so at 0.0f you can never actually step up unless its a flat plane with you.
96.0f or so would let them step up from waist height on the other hand.
Awesome Plugin. I’ve watched all of your videos, huge fan, but I cant for the life of me figure out how to get it to work. I’ve downloaded the files and I’ve updated everything on my UE4.14. Anyone have a video tutorial about the download process?
Side Note: I’m a 3D designer that’s just starting in UE4 so my coding background is not as robust as many of the people on the forums; I’m thinking that’s why I’m having such a hard time just launching the project. A Video or Screenshots would be super helpful to get me started.
Awesome! Thanks for the video, and the update looks super helpful. Is that already released? Capsule movement off of pelvis would be amazing. Then I can remove my hacks altogether.
One thing I was wondering… I’m finding that with 5 trackers per player, plus controllers, it’s starting to be quite a bit to replicate, and I was wondering if it would be possible to add an option to the components to quantize the transforms for the trackers/controllers to reduce the replicated data. Before switching to your plugin, I was quantizing the transforms for replication and it made a pretty big impact, but even with that, I find your plugin replication (w/o quantizing) faster than the blueprint replication.
The plugin already quantizes the vectors and compresses the rotations to shorts prior to replication. However I did go in yesterday to clean it up a bit and set it up so the quantization level could be configurable instead of just whatever default I use. I have it defaulted to 100/2 decimals of accuracy and 10/1 should be enough for mm level accuracy. Technically with only replicating the relative pos within the tracked space I can also provide an extreme mode that reduces it even farther.
Also there is a replication speed setting on all of the plugin replicated objects that you can reduce below the default 100 htz (at 90 fps will trigger every frame) there is naive smoothing that you can turn on that will lerp in between updates at lower htz settings. The smoothing needs rate balancing and some additional checks but since you are working with so much data I guess now would be a good time to take a look at that again.
Thanks for the update and appreciate your hard work. Need a small help with opening drawers. Since i am not a blue print expert i am using your template and replacing the mesh in your blueprint class the achieve the same effect. but when i run in HTC as soon as i grab the drawer it updates to the previous position of the drawer. How can i change .
In the interaction settings for the drawer component you need to change the Initial location and min / location values. That is how the non physics drawers know when and where to start / stop movement.
If you changed the mesh and location it will have the wrong settings for those.
WalkingOverride on the table and handle how much depth you want before pushing them back out or however you want to deal with it.
Inset player collision on tables
Don’t run player collision at all on tables, there really isn’t a point to it, if you want to stand on them then the floor finding still works with the walking collision override.
Waist tracker…least useful method as it depends on additional hardware (but has best results obviously)
Tables aren’t exactly a “solvable” issue collision wise with HMD + Hands, a lot of people are letting freewalk though things like tables and then teleporting the player out if the overlap goes over a set distance (with warning), but that only works for leaning if the player chooses to lean, they are free to just walk into the object to the extent you set anyway, so at that point why even bother with the faked lean mechanic and not just turn off table collision with the player?
Just like all gamedev, VR is currently a series of hacks and tradeoffs to get what you want.
Thanks for the idea’s, yeah it’s all about finding the right way to fake the desired effect. I think I’ll just disable the collision for the player on the table.