VR Expansion Plugin

Dear ,

one long time request (pardon if answered earlier) Can we make the preview resolution 1920 by 1080. Currently its a strip where as most of the other experiences are full screen.

thanks and regards
Jo

You mean the mirror mode? Epic added native support for that in 4.17 (and then improved it in 4.18 since Vive was buggy). Otherwise is requires ENGINE source changes in earlier versions to fix it, something I can’t access with a plugin without re-writing the separate VR plugins themselves.

Its an easy change in earlier versions in the source to fix, but you would have to compile the engine from source for that.

Awesome Plugin. I have been working on floating pawn movement with physics for a while, it took some work to get the parent changed from pawn to the VR character, but it was worth it. I am just using the pawn for collision and movement to make my current pawn much more solid in game. I have put you in credits, so be sure to check it out. I will PM you with a steam key when the new update will go live tomorrow on steam: Reficul VR on Steam with changing to system.

I just have two issues, which are probably linked to the same problem, I have spent hours on it and more hours looking through pages on thread.

I have everything working except AI - which looks at as spot 2 feet in front of me while attacking my current position (Using Behaviour trees, based on the detour-crowd AIcontroller (Parent) - if that is of any use. At the same spot 2 feet in front, when I add yaw input to my pawn, for 3drudder (using Add Controler Yaw Input) it is rotating 2 feet in front and throws my teleport - direction totally off. Is there any way to make central to where my camera is located?

The AI issue with looking and attacking 2 feet in front is fixed if I reparent to Simple Character. But VR character which has the customisations I need for my custom pawn. Any advice on would be really helpful.

I have a custom VRAIController in the plugin that you can set for the AI. All it does is override the

GetFocalPointOnActor
LineOfSightTo

functions so that they correctly target the offset HMD location, is much like what RR did for their AI. The detour controller overrides the base AI controller so that it can set a custom path following component, you would either need to copy my VRAIController code (the two functions over), or copy the detour AI and re-parent it to the VRAIController, either method would work.

Edit I don’t know how often the detour crowd controller is used, it may be worth overriding it as well in the plugin at some point. I added a note to my private trello about it.

Also for the teleport rotation you need to teleport around a Pivot (being the HMD). I have a shortcut node RotationAroundPivot in the VRExpansionfunctionlibrary that will do for you and provide an output rotation and new location. The template also shows how works.

Both of these things you ran into are because the VRCharacter retains the engines current default of the HMD being offset from the actors zero point. The simple character locks the camera movement to the characters movement, however that in itself limits some of the things it can do compared to the full VRCharacter.

Pushed new commit live


 
 Moved Grip type enum comments into the enum area so they show on hover  
     
 Added bIgnoreRotationFromParent to parent relative attachment, when true the  
 parent relative attachment no longer follows the parents rotation, only its position.  
 (SpaceHarry was using  for body meshes where he was IKing the rotation himself  
 in the animation graph.  
     
 (thanks to SpaceHarry for the original pull request that added both of these)  
     
 Overrode IsWithinEdgeTolerance and added VREdgeRejectDistance to the VRMovementComponent.  
  allows for stepping up easier without very slow movements getting in the way  
 and causing wall sliding. Default engine value is 0.15f, new default plugin value  
 is 0.01f (rounded min for HMD movement in network). If you encounter issues you may  
 want to raise it.  
     
 Changing bIgnoreHandRotation to reconstruct and resolve the controller  
 instead of requiring it be modified prior to passing to the server.  
     
 Changed GetControllerRelativeTransform to no longer take an input object for  
 checking bIgnoreHandRotation, it is no longer needed. Kept the node around anyway  
 because the default in engine nodes variables are named silly and confusing. 

Okay, I have been looking at the gun and the sockets and such. Is there a way to make much simpler? I really am thinking nothing more than a picked up object orients itself into your hand a specific way. Or that it removes the VR hand and becomes your hand in the right position. I can see how to add sockets to Actors, but I cannot see where to set that socket to the VR Hand controller. Any chance you could share a small blueprint example of a very basic setup?

Thank you again.

The template character that you are using does it automatically, it searches for sockets within a gripping range when you go to grip and if any match the prefix (default: VRGripP) it will snap to the closest one.

Setting the PrimarySlotRange in a grippable component/actor to the size of the mesh ensures that it will always use a socket.

You LITERALLY just have to add a socket that starts with VRGripP to a mesh that is grippable and it does it for you.

The reason the gun has multiple sockets is because it supports dual hand gripping and alternative orientation for touch controllers, you don’t need to worry about any of that right now.

Updated pre-compiled binaries to 4.18.1 and pushed a minor plugin commit that added the DetourAIController override to the plugin.

I just tried . I attached a socket with the name “VRGripP” to a pick up cube (the mesh part) but it does not snap to the socket. It still just grabs to any point on the mesh.

I also added the GrippableBox component inside of the Blueprint Editor and sized it to the size of the Mesh. I am able to pick up the mesh, but it does not lock to the socket.

Do it with a grippable static mesh component or actor instead using the mesh you are trying to use. The pick up cube actors in the template are only there to show how to manually implement the interface and they don’t do everything.

GrippableStaticMeshActors and GrippableStaticMeshComponents are full pre-fab classes.

I just don’t understand what I am doing wrong. I have created a GrippableStaticMeshActor -> and assigned the Mesh which has a socket named VRGripP on it

I have even tried turning that into a Blueprint Class to no avail.

I do not see a way to create a Socket for the GrippableStaticMeshActor by itself. I am assuming I wouldn’t anyways. I am assuming the socket belongs to the actual mesh (the graphical one).

I am sorry I do not see or understand it… :frowning:

#1: Change it to VRGripP1 - the VRGripP is a prefix, you can add numbers after it so that you can have multiple.

https://i.imgur.com/ZxVt7Jn.png

#2: You downscaled that model to 1/10th of its normal scale, since it is so large by default you likely aren’t hitting the range for its sockets (socket search range is in local space). There are two solutions for that.

Set highlighted value to a large enough number to cover the full size of your model (at least)

https://i.imgur.com/zjZKIgU.png

Or Override function and always return the transform you want or the transform of the socket that you want.

https://i.imgur.com/g9izS2h.png

The latter method can bypass the socket requirement entirely and you just supply a transform that you choose and return True for found one.

Spot on as usual! Thank you, works like a charm. I just resized a few of my meshes in the mesh editor and assigned the VRGripP1 like you mentioned and rotated my mesh… I then created a GrippableActor and assigned it. Perfect, perfect, perfect.

Thank you once again for helping me make game even better! :slight_smile:

so in 4.18 its not possible so far or can i do anything… i tried changing the resolution and it ruined the whole thing inside the headset

regards
Jo

Hi, I’m trying to stop navigation or teleport with “Get Player Pawn” without success.
Can anybody provide me a tip to do that ?
Thank you.:wink:

Anyone know why I might be getting ? Apologies in advance if doesn’t belong here.
OpenVRExpansionFunctionLibraryLog: Warning: Couldn’t Get Tracked Devices!!

There are some other, perhaps benign errors at the beginning of the error log:
LogWindows: Failed to load ‘aqProf.dll’ (GetLastError=126)
LogWindows: File ‘aqProf.dll’ does not exist
LogWindows: Failed to load ‘VtuneApi.dll’ (GetLastError=126)
LogWindows: File ‘VtuneApi.dll’ does not exist
LogWindows: Failed to load ‘VtuneApi32e.dll’ (GetLastError=126)
LogWindows: File ‘VtuneApi32e.dll’ does not exist

Last week I ran into an issue where my HMD’s bounding box was busted somehow, but it seemed I was able to fix it by doing the SteamVR Room Setup (Standing); thanks to 's tip.

Now, though, unlike last time where the player’s height was correct, fsr my character’s got no legs - it’s as if I’m spawning with the center of the root collision capsule at 0. And it crashes almost 100% of the time within a minute or so of play. I think issue reared its head after I added a whole bunch of lights to an indoor scene, the engine crashed and then I accidentally launched another, separate instance of the project after having chosen send and restart.

Vive sensor locations/rotations haven’t changed, and afaicr I didn’t mess with the player since it was last working. Tried running the steamvr calibration setup in room scale and standing (2 times each) with and without unreal launcher running in the background (never with a project open) yesterday using 4.18, and today using 4.18.1. But the problem persists.

All of my VR projects are having issue, so maybe it’s not related to the plugin? Maybe a Steam VR/UE4 issue? I tried killing UE4, uninstalling Steam VR, restarting the PC and reinstalling Steam VR (verifying the cache) and running the calibration, but that didn’t change anything either. (Also tried nuking the DerivedDataCache engine folder jffs.)

Huh? No its fine in anything post 4.17, 4.18 being one of those.

https://docs.unrealengine.com/latest…ectatorScreen/

StopAllMovement / StopNavigationMovement nodes.

As far as stopping teleport? Don’t really know how you expect to do that since it is instant? Do you mean cancel out of the teleport after the beam and end point are shown? That is up to you how you would want to do it, maybe switch teleport to be HOLD BUTTON + TRIGGER to actually teleport.

Yeah that isn’t plugin related, try running a VR game outside of UE4 like in Steam and see if your calibration is still wrong. Sounds like your HMD isn’t actually providing a valid location from OpenVR.

Hi mordental, I wasn’t clear enough so I’m joining a picture to show what I want to achieve.


I’m using your last Virtual Reality BP Game Template to try that.
when the pawn is overlapping I just want to disable the Teleport.
I’m not able to do that with the Get player Pawn.

The teleport system is just as copy of Epics (so people can understand it who are coming from the base template), which is run through blueprint and spawned in the character, VRBaseCharacter is a c++ base class and doesn’t have the teleport logic.

You can cast to the BlueprintCharacter instead and call SetTeleporterActive to false.

https://i.imgur.com/jngfuir.png

However that won’t entirely prevent teleporting being started, for that you would also want to add a boolean or something to the character like “bIsAllowedToTeleport” and tie it in to boolean check.

https://i.imgur.com/XajiSUW.png