VR Expansion Plugin

Just set that setting to short and use MovementAction_SnapTurn or a custom move action. I need to go in a optimize movement actions so they use the delayed movement processing (FScopedMovement) of the CMC but it works as is.

Its only snappy with bytes because its not enough precision for the pivot and offset to not be noticeable, FPS games don’t require that kind of precision.

Regardless its a 1 byte difference on repped movement and only happens when it changes, so during turning or smooth movement.

Just tried your plugin for the first time, very nice features. Realised that the physics drawer has no physics when interacting. Neither in the demo, nor in the template project. I fixed it in the VRGrip Interface of the component Drawer1 with checking “Simulate on drop”.

It has full physics when interacting, that is the point of it (it can be effected by things inside of it / blocking it from closing).

But no I left it simulating off on release on purpose. If you want it to retain momentum on release simulate on release is correct but you also likely want to set some damping up on it.

Ah ok, thanks for clarifying what is meant by physics here. Obviously, I didn’t check blocking it to realize the build it constraints.

Amazing plugin. Thanks to it I saved a lot of time.

All the features I want are implemented.

I’m not use to English. but google translator helped me share it.

it works, ty

Just curious if anyone has set up properly with a full character skeletal mesh. I’ve added a skeletal mesh to my pawn, and I have properly configured the arms and head to track to the motion controllers and the HMD, but I was wondering about setting the appropriate height for the character and keeping him at an appropriate offset to keep his feet on the ground. Has anyone done it with the VivePawn?

I’d appreciate any help in the right direction.

Had a feature request specifically around that recently that was added, the ParentRelativeComponent now has a toggled mode “bUseFeetLocation” which will place it at the floor under the hmd instead of at the HMD itself. should make it significantly easier to root the feet.

Does have a magic component that excludes 3d widgets from post processing?

There is a Stereo 3D Widget component that renders the widget in a stereo layer instead of in world…so technically yes?

However stereo layers are currently broken in engine with the openVR beta.

Big list of unannounced changes, been doing a lot of things that never amounted to enough to publish in here before.
These were all pushed to their repositories in the past two weeks.

General Plugin Changes (4.18-4.19)


Corrected imprecision issue with inverse transforming of the interactibles
I use the inverse of the grip transform to get the hands original location relative to
the object on grip for the interactible calculations. I was getting precision errors
when getting FTransform::Inverse if the interactible was unevenly scaled on any axis.
Converting to a FMatrix, then inversing, then back to FTransform removed  precision issue.
I am still uncertain why FTransform::Inverse was misbehaving in  situation.

Added some events to the SliderInteractible (OnHitEnd)

Started working on bEnforceSplineLinearity to keep a slider in line on a spline
(Unfinished needs work).

Added bLerpAlongSpline to slider to smooth out the movement.

Added grip prio to all interactibles

Fixed teleport move grip node (one of the variables was output instead of input)

Added Re-calculate lever angle function to lever

Also made the ResetLever function re-calculate the angle as well.

Set character default rotation replication values to shorts

Changed how controllers copy a replicated relative grip from a deep copy to a shallow one.
 is to avoid overriding important local only variables.

4.19 Only Plugin Changes


Blueprint cleanup with pure/callable node choices, some nodes were returning multiple variables making
it more likely that people would abuse them and multiple call them as pure, converted these to callable.

OpenVRExpansionLibrary added "GetOpenVRHmdType" node that breaks down to the specific headset
connected in OpenVR.  is due to the module reporting as SteamVR type always.
I will need to manually added headsets in here as new ones come out, its a shortcut service
for my users.

Greatly reduced the characters CPU load when updating to the physics thread, removed one ticked update
that I had caused and three that Epic had caused that were extra.

Moved the application of the Input data to the control rotation to the character movement component.
 is so that I can have correct rotations prior to moving the character. Typical engine behavior
is to have the rotation done in the player controller AFTER all movement is applied,  can cause
issues due to our offset movements.

Converted the OpenVRExpansionLibrary device oriented nodes entirely over to index's and added some
Getter nodes for type / specific devices.  brings my node library directly in line to being compatible
with epics one as well as clears room for vive pro and devices where trackers and the like are activated
out of normal order.

Changed bIgnoreSimulatingComponents to just
ignore PhysicsBody channel objects for the floor check so I could avoid
the multi sweep I was doing (slower) before. If you intend to use  functionality
instead of just removing collision then be aware that the objects need to be on the PhysicsBody
channel now.

4.19 Template Changes


Secondary grips moved to client side and pre-checked, also secondary checked before primary.

Many other BP changes and cleanups for the characters.

hello I try the plugin in 4.18, but the engine crashes very often when I change something to blueprint!

for example i add a flip flop node to vive character no matter where compile and engine crash!

Its because of an engine bug that they introduced when using a c++ character with a BP subclass that also has its own BP subclass.

Just deleting the FPSVive_PawnCharacter will fix it for you for now, or going into project settings and unticking “Use BP Compilation Manager”.

Its fixed in 4.19, likely won’t see the fix in 4.18 unless they release a standalong hotfix.

Finished some VRSlider additions the last two days.

How i can to reduce Movements Modes? i want only 2

Well you likely want to remove the cycling anyway, but you just set the enum to which one you want. You can rip out the nodes for the ones you don’t use to de-clutter the workspace as well.

Did a video about custom grips in the plugin, had a hard time making the second half of it easy to understand, may think about terminology and try and go over that part again at a later date, was all last minute.

I want the cycling but with only 2 modes! i remove all modes what i dont need from the enum but now if i click the grib after second mode say Maximum and not cycling.

Go to where it cycles and re-link the missing nodes on the enum then, you could have just done that to skip ones you didn’t want anyway.

The cycling isn’t really intended for games, its for testing them all in the template, generally movement mode cycling should be in a menu so you free up your grip buttons.

EDIT: So no clue how or why it worked, but I copied the .uproject file from my messed up project and replaced the .uproject file in my messed up backup and it loaded. So yeah, no clue why, but it works now.

So out of the blue, I started getting the following error when I attempt to start my project. I have no clue what would have caused , as my project was open, I saved, rebooted my PC, then started getting error.

At point, when I attempt to open the editor, no matter what option I choose, the project fails to launch and the editor crashes.

It references the Euro Lowpass filter every time.

I have backups of my project, however unfortunately, the most recent one also has error, and the previous one will set me back quite a lot of work.