VR Expansion Plugin

Its not using wrist orientation, it is using thumbpad orientation. RR had wrist orientation, not the default template (or at least not originally, it may now I haven’t looked at it in many versions).

You can switch it over to wrist based rotation yourself, its not hard, also I think there is a boolean that turns off the rotation entirely on the teleport controllers.

Its normal for the engine to “get stuck” on loading into a new version, it pre-generates the derived data cache to speed up future engine work, unless something is terribly broken you need to just wait it out on that first load.

As for your custom blueprint library, you can’t just copy paste nodes over, you need to include the correct modules that contain the referenced classes as well as include the headers for them.

Also the platform checks don’t hurt anything, they are pre-compile step removed if on the correct platform, the logging is also very little perf and lets you know when you have something incorrect, you should be doing the pointer validation REGARDLESS of if you are logging on fail or not, just to ensure stability.

Thanks, it was easier then I thought, since I just unplugged the Teleport destination rotation, as shown below:

Its doesn’t stuck on loading - it’s stuck when play. Engine completely dead after . You can’t kill process by task, only reboot, but after normal work.
Can you check compatibility with 4.20 (OpenVRExpansionPlugin , functions that I mentioned)?

For my library I’m tryed include all classes, but maybe didn’t make some #define or other cpp magic stuff (on the screens I gave - there is all code with one (I guess) linker error)

I have been looking at the VR expansion plugin example and its great, I see in your videos that there are hands, when I play the vr scene i get models of my vive motion controllers. I can see the hand models in the Content/VirtualReality/Mannequin/Character/Mesh

How would I switch to the hands from the vive motion controllers?

Also my main question, how hard would it be to make a full body IK, so that can see the 3rd person body and move the arms and hands around? Would it be a case of just changing the content in Content/VirtualReality/Mannequin/Character/Mesh to a 3rd person character?

Your build.cs is missing the openvr module entry is all.

The function library didn’t change between 4.19-4.21 and works fine.

There is a large red comment box in the main character with the steamVR specific nodes inside of it, disconnecting the timer that checks and loads the models will stop hiding the hands.

As for a full body IK, you will have to use a third party plugin to handle the IK itself, built in engine nodes are not good enough fidelity for the job. Then you just attach that mesh to the ParentRelativeComponent (and likely set the PRC to foot mode so it is at the floor).

I have an issue with my Skeletal Mesh assets when using GripableSkeletalMeshActor. When I grab the asset it either rotates away from where I grab and/or rotates and shifts away. I can seem to setup any of my assets to be picked up at the point the player is grabbing the skeletal mesh. Has anyone hit issue and know how to resolve it? Below is my current setup.

I have a collision interference with a bracelet on my left Hand.The bracelet was composed with several VRbutton.
the interference was coming from the capsule body of the vrcharacter .Decreasing the diameter was the solution for me.

Sounds like it is colliding with something on the hand or the players capsule itself.

You might think that but it’s not the case. I migrated the asset into the VR Expansion Example project but when I grab it is offset and rotated away from the hand. I can force it to be attached using GripComponent call with identity transform and set to relative but then I have other skeletal meshes that rotate 90 in X when they get gripped but are not offset. I actually looks like UE4 added a bunch of transforms that is somehow affecting the grip logic. When we reimport a cleaned up version of the skeletal mesh it starts working as expected.

BTW: Has anyone got a sample of how you would do penetration with a sword into an NPC or shield or table that has a physics grip?

mmm, sounds like the root bone was rotated badly, but I account for that when gripping it unless you are PerBoneGripping.

UE4 when you export adds extra root which was not removed when mesh updated in Maya. Re importing then causes kind of weird effect. Anyway, we know how to resolve now and have mesh cleanup to do.

Pushed 4.21 version live to the repo and uploaded the binary package, change logs are below.
Note that a lot of these changes were also ported back into older versions, I am just listing them all together for 4.21 as I didn’t write about them in here prior.

Plugin Changes


Set multiple variables to initialize due to 4.21 warnings, regardless of if they really needed to be or not....

Fixed multiple missing includes that UBT was hiding.

Updated openVR tracked device properties to openvr .16

Am now turning off physics simulation locally on all clients on Socketing operations to cover some edge cases / packet miss issues.

The attachment grip type now calls attach on all clients to cover some edge cases / packet miss issues.

Moved the NavMoveCompleted event into BaseMovementComponent so that SimpleCharacters can trigger it as well.

Added teleporting flag to the "Exit Seated Mode" event so that the pawn teleports physics bodies (can't throw things in the way around)

Seated mode now replicates and throws the OnSeatedModeChanged event to ALL players, not just the server and owning client.
 allows you to react to it locally on simulated proxies as well.

No longer using Epics TimeTick in phys_walking,  causes errors when the framerate gets really high (like when oculus rift is removed
and the rendering is paused).  actually appears to be a potential bug in general with the root motion addition that I was basing my
original implementation on.

Changed the gesture components material that you can set for spline drawing to be a material interface instead of a UMaterial *.
 way you can pass in material instances.

Added in a bool to ignore gesture scaling for specific gestures, Also the ability to save gestures without autoscaling them to the database.

Merged in a client authed movement mode fix that Epic added.

Fixed multiple replication issues with grip scripts and net relevancy, they should be solid now.

Removed dropping a grip if killing the motion controller and we are not the grip authority.

Added a flag to grip scripts that allows the user to notify the gripping controller that it should drop the object as soon as possible.
It is not safe to directly drop inside of a grip script due to some memory management that the engine is doing when passing back into
c++. 

Added bIsForTeleport to grip scripts GetWorldTransform variables, useful to know on the grip end.

Added BlueprintType to the base grip script class so that they can be directly referenced in BP.

Fixed multiple bugs in the new Interactible Settings grip script.

Template Changes


Changed the Gripping sphere trace to use HitLocation instead of ImpactLocation for the socket in range checks, while impact location is supposed to
fall back to hit location if it wasn't able to be validated, there was an instance with a specific user where that behavior
was not being shown (even though it works as intended for everyone else...). Since I don't know the engine level cause for 
inconsistancy and since the actual difference is only up to the radius of the trace sphere (generally very small) I moved to the 
other variable.

Thank you, I got the hands working now… That’s great… I’ll leave the full body for now…

I have been playing around with the GrappleGun and its great! I have been trying to set it up in the MovementMode to switch to it using the grip on the motion controller rather than by picking it up and dropping it… But I am haven no luck… Is a lot of work to achieve? Any help would be appreciated :slight_smile:

I’m not sure whether its the Engine acting different, or whether its something that changed in the plugin, but with UE 4.21, my VR character (child of the plugin’s VRCharacter) always seems to fall underground. The ground is pretty much on-level with my eyes. Same project works no problems on 4.20.3. Any suggestions where to start debugging?

No its pretty easy, you can throw pretty much the entire set of BPs in the grapple gun into the character inside of a function that you call on tick (when the movement mode is active) and it would just work.

Sounds like you are calling the rezero command they have for eye based VR?

What HMD are you using.

Very little changed in 4.21 both in engine and in the plugin itself where the character is concerned.