VR Expansion Plugin

Compiled and tried the latest 4.14.1, and no luck :(. Strange…

I think the minimal steps to reproduce it is to create a blueprint with a variable holding a VR_Character. That seems to mess up when saving, reloading the editor, and opening that BP.

Why are you trying to make a VRCharacter a child actor? Child actors are still pretty buggy and characters are fairly complex.

I’m not making it a child actor. I have a blueprint that represents a hand, and that hand holds a reference to its owner (the character).

I can’t get to build on 3.14 for the life of me. I keep getting these errors:


Severity	Code	Description	Project	File	Line	Suppression State
Error	C2039	'setRigidDynamicFlag': is not a member of 'physx::PxRigidDynamic'	MyProject	C:\Users\sealfoss\Documents\Unreal Projects\MyProject\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\GripMotionControllerComponent.cpp	1311	

And


Severity	Code	Description	Project	File	Line	Suppression State
Error	C2039	'__this': is not a member of 'physx::PxRigidDynamic'	MyProject	C:\Users\sealfoss\Documents\Unreal Projects\MyProject\Plugins\VRExpansionPlugin\Source\VRExpansionPlugin\Private\GripMotionControllerComponent.cpp	1311

Yeah I changed the code for 4.14, you either need to upgrade to a newer copy or look on the repository under that function, I set it to use a different method that isn’t depreciated in 4.14.

In other news, I am going to start in on the multiplayer stuff tomorrow.

I hashed out a working alternative “simple” character now that doesn’t do all of the hackish things that my default one does. It doesn’t work as fluidity as the default one and doesn’t support multiplayer quite yet but its functional (need to copy paste some replication code from my default and multiplayer would work with it). Not entirely sure that the simple char will ever support the capsule offset due to how such things work but maybe some day i’ll find a viable method for that.

I see the simple character being an emergency backup for if the default has issues ever, since I’ve touched 90% of the movement code and broken some engine standards with the default character I’ve had it on the back of my mind for awhile that I need a viable alternative just in case.

plugin is great! I’m integrating it into my project right now, and I’m finding that when I parent the Vive_PawnCharacter to an object, the Vive_PawnCharacter ignores the rotation of that object, so I slide around and always face the same direction.

Is there a way to avoid and make the Vive_PawnCharacter stay completely parented to an object to move/rotate it around?

I don’t think I understand what you mean. Upgrade to a newer copy of the plugin? I downloaded it today, and it still won’t compile. I’m going through the source file for the gripmotioncontrollercomponent, to see if there’s something I can do manually. I’m sorry, I’m pretty new to the cpp api.

Edit: nevermind, I figured it out :slight_smile:

Pawns by default have “Use Controller Rotation Yaw” enabled which will throw out the actors rotation and use the controllers rotation instead for yaw, disabling that should cause it to rotate with it, however the problem is that the player cameras don’t work with pawn rotation currently, its not really a issue with my plugin, you would have to turn off the bLockToHMD boolean (which removes the late view updates for the camera) in order to have it work like you want, and that would require manually setting the cameras location then each tick.

I assume there is going to be a fix eventually, its probably possible for me to fix in my plugin but I really shouldn’t have to.

I tried to install it to a clean 4.14 project but it says the plugin is compatible.
A dialogue saying “the VRExpPluginExample.dll was built with a different version” appears when I tried to open the template project.
When I press rebuild them it fails.
Am I the only one experiencing the problem?

In editor rebuilds don’t really work with plugins, you’ll need to use visual studio.

Thanks for your reply. Sorry for being a noob. But how do you rebuild the plugin with visual studio? What do I do after I open the visual studio from the project editor?

Go to the top menu and select build, or right click on your project name over on the right and select build. Eventually either the plugin may be provided with all binaries pre-built and won’t be required anymore, but I change things too often at the moment for that.

When I rebuilt solution in visual studio, error comes up:

Error C1083 Cannot open include file: ‘corecrt.h’: No such file or directory VRExpPluginExample H:\Program Files (x86)\Microsoft Visual Studio\VC\INCLUDE\crtdefs.h 10
Error C1083 Cannot open include file: ‘corecrt.h’: No such file or directory VRExpPluginExample H:\Program Files (x86)\Microsoft Visual Studio\VC\INCLUDE\crtdefs.h 10
Error C1083 Cannot open include file: ‘corecrt.h’: No such file or directory VRExpPluginExample H:\Program Files (x86)\Microsoft Visual Studio\VC\INCLUDE\crtdefs.h 10
Error C1083 Cannot open include file: ‘corecrt.h’: No such file or directory VRExpPluginExample H:\Program Files (x86)\Microsoft Visual Studio\VC\INCLUDE\crtdefs.h 10
Error C1083 Cannot open include file: ‘corecrt.h’: No such file or directory VRExpPluginExample H:\Program Files (x86)\Microsoft Visual Studio\VC\INCLUDE\crtdefs.h 10
Error Failed to produce item: H:\OpenVRtemplate\Plugins\VRExpansionPlugin\Binaries\Win64\UE4Editor-VRExpansionPlugin-1939.dll VRExpPluginExample H:\OpenVRtemplate\Intermediate\ProjectFiles\ERROR 1
Error MSB3075 The command ““C:\Program Files (x86)\Epic Games\4.13\Engine\Build\BatchFiles\Build.bat” VRExpPluginExampleEditor Win64 Development “H:\OpenVRtemplate\VRExpPluginExample.uproject” -waitmutex” exited with code 5. Please verify that you have sufficient rights to run command. VRExpPluginExample C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.MakeFile.Targets 41

Thanks for letting me know. I’ll do some more tests here and see if I can find a solution. I’ll also ask on UDN and see if Epic can give me some tips.

You need to fully follow the installation instructions for visual studio for the engine, you are missing some required headers.

Ok, I lied, I ended up finishing the replication for the new character today and then testing that multiplayer was still stable in my test bed. Found a few bugs over the past few days that had to do with ripping out one of my grip types and fixed some missing checks in the default character for floors when falling.

However right before finishing I did compile a version of the template itself and ran it multiplayer and most of the things already work. Think I am pretty good to start digging into polishing it now, the simple character is essentially done, the only thing it is missing from the default is that it doesn’t support a capsule offset at the moment, other than that it should be a more stable version.

Hey / guys,

I just wanted to say I started to use plugin yesterday in 4.14 and so far it’s super good, extremely motivating to have such a solid physical VR base.

I think plugin has great potential, although it would be great if there was some instructions how to upgrade once a project is based on the “VRExpPluginExample.uproject” solution.

I will post pictures and a link once i have something more to show.

Big thanks!!

Upgrade to a new plugin version? Or to a new engine version? I would suggest keeping the template as a separate project entirely that you can pull blueprints and objects from to use outside of it. Kind of like the “content packages” that ue4 has except not automated. I will be adding thing to it often enough that trying to keep something working and get the updates at the same time would likely slow you down more than help you.

For engine versions, it should currently just upgrade, I have been trying to support the current / preview versions as it goes and when the preview goes live support the older version until the next preview if possible. 4.12 was an exception as the code base changes from it to 4.13 were too dramatic. I anticipate the plugin in its updated state losing 4.13 support and locking a branch for it when 4.15 comes out, the enum changes coming down the pipeline are not compatible.

**Also, to anyone else: (going to post in the OP as well)
**
I would like to note by the way that everything currently in the template is an example of what I think is best practices (though still needing a little polish as I made it over three days), not everyone is going to need the same set up and not everyone is going to need a full VRcharacter. Custom pawns that just use the motion controllers and camera / parent relative component would be useful to people that don’t want gravity / collision. The entire plugin itself isn’t so much a complete package as one (or for the character/grips, several) example(s) of how to achieve VR capabilities in UE4…like a big public research endeavor on my part. Some things I know I would have done slightly differently if I were to go back and start over (gripping code out of the motion controllers and into a custom component that has its own late update referencing the controllers for example).

I have not changed some things that I know could be slightly better if refactored as there are projects released on steam already that use it and I don’t want to break compatibility beyond repair for them.

The new SimpleVRCharacter is a more sane method of creating a VR colliding character, when I made the original one I wanted every possible feature I could think of and I broke a bunch of “soft rules” to make it happen. The new one does none of that, so while slightly less feature complete it is more in line with standard procedure for the engine.

Thanks for the reply.

Upgrade to a new plugin version.

And what i meant to say was that it’s a little bit confusing if you are using the template what exactly is the plugin and what is the template, for example say that i would start playing around with building a something inside the template level, can i break the functionality of the plugin? is part of the plugin based on logic in level?

If I add another level (inside the template project), what do i need to do to get the same functionality as in the demo level? (as in, you can have a pair of controllers, you can lift and release objects, etc). Maybe a youtube video how to setup new levels would be really good.

Big thanks again,

The plugin is code based, the character and controller components/actors are from it. Anything you do within the engine itself shouldn’t have an effect on it. New levels have no special setup aside from I have a custom game mode checking for if the client has a HMD.