VR Expansion Plugin

Hey… I’m back lmao.

Could you clarify what method you’d use to keep the capsule from ticking to stop it from adjusting to player real-world movement temporarily? I’ve fumbled through the functions but didn’t find anything that would help me out. Is there something UE native I should be looking for? This is of course in reference to allowing a head lean independent of capsule movement. I will follow up with a post if I figure it out. Thank you again

Got it! VRRootReference->SetComponentTickEnabled(false);

Sometimes ya gotta just tap through every single function in the UE API hahaha. Let me know if you want me to remove posts like this, but otherwise I’ll leave them up for others to see

At my wit’s end setting up climbing…Is there anything obvious I’m missing? (I know it’s my fault, not the plugin, just going crazy trying to implement this in C++ using the BP tutorials Raven provided on YouTube). The present issue is that I’m flying into the f***ing stratosphere as soon as I grip a climbable object. It works trigger-wise, but the movement is calibrated completely wrong somehow. I’m ending up miles away outside the world bounds instantly.

Here’s my code after I line trace for a potential climbable object, bold at the important parts:

if (HitResult.GetComponent()->ComponentHasTag(ClimbableObjectTagName))
AActor* HitActor = HitResult.GetActor();

bRHIsClimbing = true;

ClimbingController = RightMotionController;

RHClimbingGrip = HitResult.GetComponent();


FVector ClimbGripLocation = RHClimbingGrip->GetComponentTransform().InverseTransformPosition(RightMotionController->GetComponentLocation());

FVector OtherNightmarishThing = (RHClimbingGrip->GetComponentTransform().InverseTransformPosition(ClimbGripLocation));
MovementToDo = -(RightMotionController->GetComponentLocation() - OtherNightmarishThing);

Then in BP, pulling out from the Event UpdateClimbingMovement node, I have it run Add Custom Replicated Movement and the input for that is my MovementToDo vector seen above in C++ (it’s BlueprintReadWrite, I couldn’t find a way to override UpdateClimbingMovement from inside C++). Hope there’s something quick and obvious I’m missing, thanks for the help as usual.

You are relating a relative position on the object to a world space position of the motion controller at the end there. "OtherNightmarishThing should be created with ClimbingGrip->TransformPosition, not InverseTransformPosition, its already been inversed in the step above, you are trying to make a location that is already relative, relative again.

As for the override, you override

    virtual void UpdateClimbingMovement_Implementation(float DeltaTime){} // Do nothing by default

in a c++ subclass.

Fixed that, gracias. Now I’m just frozen in place (HMD-tracked movement still works but my other locomotion method is frozen, implying it IS registering I’m in climbing mode) but nothing is happening climb-wise. I’ll go over the tutorial again in the mean time.

This is really exciting, But will the samples always be in the old ‘floating hands’ method? I won’t even buy a VR game with floating hands, SO THAT MAKES THIS BOTH SO EXCITING AND SO EXASPERATING,. ,.I have this hope, because I have heard mentions of this being (or becoming?) Full Body IK compatible and that will be reflected in the samples eventually (presumably?) This ‘hope’ has kept me has made me come back over and over, hundreds of times, for years, always waiting and hoping for that one thing,./ Then, every time opening the file and getting so depressed. I am a cancer survivor, I am in recovery, I am already abut as depressed as a human can be and still live (high functioning depression) I have spent actual weeks in bed after opening a VR Expansion Sample Project and seeing Floating Hands again,.

I hope someday they help us Artists to enter the Future of VR with an IK Body in the sample project. I know it is possible, I have done it myself, in limitted fashion from a UE4 Book I bought,.   but I am an Artist and am a 'reverse engineer' learner.  (I am OFTEN insulted and denigrated for being so, but it is it is a perfectly valid way to learn, it is just not the usual way)

With tools like this, I can use or work with anything I can SEE and understand. Learning by rote from a list of rules and such?? ,. never gets me EVEN 1% OF THE WAY there. Not like the instant understanding that can come the way I have learned, to learn,…

I think i’ve requested this about once a year for as far back as it was mentioned, but PLEASE PLEASE IF IT IS REALLY POSSIBLE, PUT AN IK BODY IN THE SAMPLE PROJECT (OR A SAMPLE PROJECT!), my game has been nearly complete for nearly a year while I wait for some IK body solution. I have zero budget and am disabled and stuck in lockdown I have no option to simply ‘buy’ BIK (which was sponsored by EPIC and should be free…).

IF ANYONE CAN HELP, i WILL GIVE CREDIT IN MY GAME. I have found an ‘ok’ solution in the VR Cookbook book,. but … I would just rather not release than release with just an ‘ok’ locomotion scheme you know?

I’m not just some young trainee, I HAVE THOUSANDS OF SUBSCRIBERS, ( ) I have credits on my IMDB page, from 20 years working in Hollywood on Film TV and Games. I have worked at Warner Digital, Praxis Filmworks, ACTIVISION, I have even, over the last year, secured promises from most of my fellow VR Youtubers, to play and review my game. Please help if you can, I so want to move onto my next 2 titles,.

Rob (‘Woody’)

There are plenty of full body IK plugins in the marketplace… As well as a full body IK solver in 4.26 (though its not that well suited to VR), if as you say budget is an issue there are a lot of bare bones IK tutorials on very basic full body IK setup using stock engine nodes out there, and all of them should work with this plugin just fine (or your project)
I can’t put third party plugins in my example content and I don’t feel that the engines stock IK offerings are good enough for decently high quality VR IK without compromising in some way.

I never mentioned full body IK would be included in the example, I did some experimenting off of a research paper I had found to translate it to UE4 and it was lacking in some areas that I personally find important. IK is not my strong suite and I don’t want to be stuck supporting a full implementation in a state that I am not happy with personally when there is plenty of other work that I am more comfortable with to be done. I was talking to someone else at the time and sharing the translation and he has some work up that is based off of it (and then modified to his personal needs), its available publicly here: GitHub - JonasMolgaard/UBIKSolver: Upper Body IK is an implementation inspired by Mathias Parger's Master thesis.

If I return to that paper and try and solve its issues eventually than I would also release that work. As is, the “floating physical hands” is actually harder to pull off, more aligned with my interests, and a better example in the template, which is why it is included.

Are you applying the offset with AddCustomMovement?

In c++ I can’t seem to be able to include anything related to the OpenVRExpansionPlugin anywhere. It just says ‘No such file or directory’ when clearly even the pre-processor acknowledges the include. The VRExpansionPlugin includes just fine. This is driving me insane, can anyone help?

#include <OpenVRExpansionPlugin/Public/SteamVRKeyboardComponent.h>

Edit: Found the bug, in the .uproject file, under Modules:AdditionalDependencies I was missing OpenVRExpansionPlugin. Adding it resolved my errors.

Hay Mordentral, I’ve packaged my game (it has VR expansion plugin and the Advanced session in the project) in Dedicated server form.
I can connect to the dedicated server through open IP, no problem,
but when I search with advanced search (its set to Dedicated server only) it doesn’t find the dedicated server.
Steam is up and running on both machines with different users (on the dedicated server machine and on the client machine) and its on the same country on both machines.
do i need to add a command in the dedicated server so that it starts steam connection or something like that?

Steam doesn’t have to be running on the dedicated server, it needs steam authentication enabled on it and to be specifically compiled as a dedicated server. Also you need to make sure you have the correct ports open for queries, there is no NAT Punchthrough with dedicated servers like with clients over steam.

Hello mate, can you please provide instructions on how to use Custom Animations on grabed objects?

There are a bunch of ways to handle it, generally most people will create a “pose component” on their object that can be queried via direct iteration or an interface that stores the request pose for each grip location on the object. Then if using the grasping hands you would just set the custom pose with that (with blend). I don’t have hand poses to work with that are freely available and every game is going to require something a little different so there is no baked in example in the example template for it.

I just managed to get a decent full body IK working in VR with this tutorial, The source is on his github, you’ll need it but it’s good to do the tutorial to understand what’s going on for tweaking. Integrated the open input, it’s working with the index controllers and finger animations as well. You need to switch a couple of classes, VR Character as your base pawn etc, but it’s all pretty transparent. No reason it can’t be combined with UBIK I suppose.

Ok so I think that I have all of that setup but still the dedicated server is not appearing in the server list on steam-view-servers-Internet and clients cant connect.

Here’s what I did:
-I compiled a server build and a client Build using a Source Build of 4.25 from GitHub.
-I made a Virtual Machine on google with a static IP and 7777 port open , also disabled all firewalls on it (I can easily connects to the Dedicated server on the VM using Open “IP number”, so the ports are for sure open), and started the Dedicated Build on it with -log.

But I cant connect to it with the client build from my pc using steam (open IP works perfectly), and the dedicated server is missing from the server list on steam.

I’m adding a link with Print screens from the:
-Game Instance Blueprint , where I create advanced session.
-A Menu Widget, where I find the sessions.
-DefaultEngine.ini, Where I Defined the Steam Online Sub System Properties.
-Editor.Target.cs where I Enabled bUsesSteam = True;
-Target.cs where I added Definition for the steam game (I used “spacewar” and id 480 for testing).
-Server.Target.cs where I added Definition for the steam game (I used “spacewar” and id 480 for testing).
-The open Port list on the Google Virtual Machine , where I have set the 7777 port to be open.…fL?usp=sharing

Am I missing (or writing wrong) a Definition or a node or a line of code somewhere??
As usual I am very grateful for your plugin and your Help!

Check your log for if its running in lan mode or throwing connection errors, I don’t use dedicated servers too often and the AS plugin doesn’t actually have anything to do with how one gets hosted either so this isn’t the best place to ask.

You do likely want to enable steam networking for auth when you get your own AppID, though it “should” work without it (haven’t explicitly tested a dedicated server without it since it was added).

Ok thanks, But could you please go through the Print Screens I added to the original message (…fL?usp=sharing) to see if maybe I made an error somewhere there, before I go on to steam and Epic support ticket hell? Please?

Also Here’s the log file of the dedicated server, I don’t see any errors and don’t think its running in LAN (

I couldn’t get it to work either, steam dedicated servers are hell to work with. I had to install SteamCMD on my VM and set GameServerQueryPort to 27015 in defaultEngine.ini, servers then showed up in the server browser. My problem is the game servers are starting on port 27015, even if I specify in command line which port to use.
However, this has nothing to do with the VR Expansion plugin, so it’s a bit off-topic here :stuck_out_tongue:

I’ve got it to work!!
So it was a blocked port.
on the VM where the dedicated server is located you need to open 2 ports-
7777 and 27015 on both TCP and UDP
also you need to Enable and set the DMZ on the VM to the Machines IP address.
​​​​​​​Then Open all the Firewalls and network blocks on the VM.

This should be a sticky. There are so many things about this that fill the functionality of VR pawns and more. I thought Epic had the VR stuff nailed but very soon realized there is allot more to the eye, and allot of stuff is missing and requires allot of work, that has been solved cleanly and comprehensively in this plugin. Epic take note allot of us are not programmers this helps us immensely to get our content in VR.