VR Expansion Plugin

Its defaulted to steam at the moment, if it can’t load steam than null connections should work but you can go into the game config and change the default online platform to null instead of steam.

The gripping and movement and things should all work in multiplayer with the template, but the items with custom logic haven’t been worked over yet for multiplayer and I am not running any checks for if other players are holding objects yet.

How would you go about having the mesh hands from unreal 4.13+ template with the animations into this template? Also being able to set how far someone can teleport when in the teleport mode?

In the player there is a OnPossesed node path that downloads the controllers from steam, just unlink those nodes and the default template hands are there (I hide them for the controllers).

Teleport distance can be set in the TeleportController blueprint that is spawned in to control Epics teleportation system.

Edit You would want to adjust the collision spheres attached to each hand, their location defines the sphere trace for gripping, they are currently set up to feel most natural with controller models.

Hey Mordentral, have you thought about implementing a way to load a custom SteamVR skybox? It seems like this is the way to do it in C++:

Quoted from:

"I was just looking into this recently. You can do it in C++:


/** Override the skybox used in the compositor (e.g. for during level loads when the app can’t feed scene images fast enough)

  • Order is Front, Back, Left, Right, Top, Bottom. If only a single texture is passed, it is assumed in lat-long format.
    If two are passed, it is assumed a lat-long stereo pair. /
    virtual EVRCompositorError SetSkyboxOverride( VR_ARRAY_COUNT( unTextureCount ) const Texture_t *pTextures, uint32_t unTextureCount ) = 0;

/* Resets compositor skybox back to defaults. /
virtual void ClearSkyboxOverride() = 0;"

Edit: Thanks for implementing GrippableSkeletalMeshComponent.cpp!

I haven’t tested it yet but I am pretty sure that epic took care of that in 4.14.

I’ll be doing some additions and fixes tomorrow and starting to look into starting the multiplayer. Will be at reduced free time for a bit due to the holidays.

Hi again mordentral and others,

I am curious as to any recommendation on how to best toggle to a Seated Experience for a Vive UE4 project. I’d like to add an HMD offset which could be toggled so the game can be accessible to those who will play seated. The game I am working on has a long play time and is semi-open world, so I expect people to perhaps switch between sitting and standing. Any other ideas on how to make VR with the Vive more accessible would be nice as well.

Thank you,

Not sure if I’m overlooking something, but I installed the plugin and set up the VRCharacter, the way I have it set up is when you press up on the touchpad the character should start walking toward the forward vector of the controller, but when I give it input to walk, it moves like a cm then stops, any idea why?

Yeah I figured thats how you would do it for the default meshes of the hands but it does not play the animation while gripping. I think it’s due to using "MotionController (L) & (R) Trigger Nodes. Those override the default animation of epic’s template. I notice in the defaulted template if you use the MotionController (L) & (R) anywhere else it doesn’t play the animation.

Nevermind I don’t think I even see the animation code in there now. LOL. Oops

I’m taking one of the items off of my “Revisit this” list this holiday weekend and remaking the VRCharacter (or at least an alternative one). The current one is based around the VRRootComponent which I made specifically to slot into standard pawns. Since the VRCharacter isn’t a standard pawn then it is faaaaar more complicated than it needs to be for its functions, I intend to make a simple version that if stable enough will fully replace it. Due to how VRRootComponent works I had to re-write most of the character movement component to support it, the new version would take a mostly stock character movement component instead.

We’ll see how it pans out, but early testing feels pretty good, and if it works as I intend then upgrading the plugin to keep up with new engine versions would be 100x easier.

You either need to loop it on tick, or use an input event that is called every frame it is active. It sounds like you are firing it once.

Okay, I hooked it up to the tick and it works now, don’t know why I didn’t try that earlier.

I would suggest doing it like a normal character and using an input event instead so it can be rebound.

When you work on multiplayer stuff, are you going to work on basic necessities like proximity voice, and a server browser?

Server browser yes, proximity voice on the other hand not only isn’t a necessity but I have been asked about before for my networking plugin and I haven’t actually found a way for it to work through a plugin. The audio components for players are not publicly accessible and I haven’t been able to match them up to specific owners either as the identifiers are also not publicly available, I DO know how I would do it with an engine build however.

I may take another look at it again just in case.

Cool. I assume the server browser will include the ability to host games with certain parameters (like amount of players, mainly)?

and that’s a bummer with the proximity voice. I’m sure there’s a way around it?

Also, if I were to start working with your template/plugins, how easy is it to update/add new plugins? Relatively speaking of course. Is it as easy as plug and play?

Mordentral, thanks a ton for building this. It’s a great set of tools for getting started with VR. There is one little issue I am running into that others may have too:

If I make a blueprint that references a class from VR-Expansion-Plugin and then save the project, the next time I open the project and try to open that blueprint, the editor crashes.

This happened because I have a vr character that has a child actor blueprint for the hand. Here’s a related problem on answers, but I’m not sure if they are using your plugin. But I’m getting the same type of error:

Turning the plugin off lets me open the blueprints without crash…but obviously that’s not a good solution :slight_smile:

Looks like it has already been fixed and is slated for 4.14.1?

First off, thanks mordentral for making this plugin!

I have a bit of a problem though and I am hoping someone can help me out.

I am trying to make a multiplayer game and testing with two players. The player can possess a new spawned character and I am calling “Set Tracking Origin” and “Reset Orientation and Position” so that the VR camera is in the correct spot when possessed.

It works great for the Server player, but when I try to do it on the client it is the Server character that gets affected by those origin and orientation functions and not the client.

I have tried running the functions through a “Is locally controlled” branch but it still doesn’t work.

Any ideas? Really pulling my hair out on this one…


On possessed is only called on the server, you need to send an RPC to the client on possession and have them do it.

Thank you so much!! I tried everything but Run on Owning Client lol…

Works great! Thanks again for the help and all your work on the plugin!!