Plugin

I’m a student working on a virtual reality assignment in a team of 3 that uses Razor Hydra and Unreal Engine 4.3.1.

We’re having some troubles with shipping our project out. We mostly did our project in Blueprints only, but we wanted to try and ship the project, so that it can be played on a different computer with no Unreal Engine 4 installed. In case, it’s our podium computer in our Immersive Human-Computer Interaction classroom located in another department of our campus, where the technical specs is lower than our department’s lab computers.

Note that we are not expert in programming.

We’re using Unreal Engine 4.3.1 with Razor Hydra v0.6.3. We cannot use the latest Unreal Engine 4.5.1 and up, as well as the newer Razor Hydra plugin due to compatibility issues with the lab computers. I have no explanation and no log messages, but the Unreal Engine 4.5.1 crashes upon loading a brand new project with Razor Hydra 0.7.4 plugin.

I looked up the Wiki on setting up the Razor Hydra plugin, as mentioned. I don’t understand the Shipping Build Instructions, so I have some questions:

The first instruction just says, “As of UE4.3, your project needs code.” **What code is this, and where can I see code, like an example code not from the live tutorial video? **

The wiki isn’t really helpful at all, the live tutorial helped a bit, but it’s not clear. I wished to update it myself so that it becomes relevant for people like me who are new to Unreal Engine 4 C++ programming. We just need an example code to look over, so that we can at least start scratching the surface. We have not made a single progress when it comes to shipping and packaging a project with Razor Hydra plugin, and it’s frustrating to see that there aren’t any additional information that can be found because of the lacking example code, other than the live tutorial.

I’m having red lines here and there in the editor, so I think I need to come back after I cleared off my mind for a bit.

How ironic is this.

You don’t need any code at all.

What I did was I created a brand new “Code First Person C++” project. And then copy/paste our blueprint UASSET files from our old project to the newly created project, and start packaging it. And that is it. There is no code needed to type in Visual Studio 2013.

UPDATE #1:

Going to verify if Shipping is working or not. I’m getting the Address = 0x0 error, so it means that I didn’t put the DLL in the correct folder location.

UPDATE #2:

Placed/copied the 32-bit and 64-bit DLL in all subfolders throughout the WindowsNoEditor folder, but it’s still showing Address = 0x0 error. I don’t see any log files. Where is that located? Maybe it’s because I don’t have the code set up?

UPDATE #3:

Okay, so the code that is required is basically an empty default-generated code of any class object from Unreal Engine 4. Literally. It just needs to somehow link PDB files with Unreal Engine 4 in order to correctly start the game after the game has been shipped and packaged.

And I just now realized the Wiki is outdated… If only that warning is more obvious.

I’ve read on here many times about the HydraPlayerController bp setup and when I open my COMPONENTS section of the newly created controller blueprint, it crashes the engine 100% of the time. I can create a brand new project, both 4.5.1 as well 4.6 have been tested… and the latest version of the Hydra plugin (0.7.4) and copy both the binaries & plugins folders to the project directory… All help is greatly appreciated.

[=walldiv;190477]
I’ve read on here many times about the HydraPlayerController bp setup and when I open my COMPONENTS section of the newly created controller blueprint, it crashes the engine 100% of the time. I can create a brand new project, both 4.5.1 as well 4.6 have been tested… and the latest version of the Hydra plugin (0.7.4) and copy both the binaries & plugins folders to the project directory… All help is greatly appreciated.


[/]

Gave a check and you were right, something I changed earlier has caused to crash. Pushed an update 0.7.6 with the fix. In general I recommend using the Hydra Component + Hydra Interface setup introduced in 0.7 rather than the convenience player controller/actor but your use case will now work properly. Thanks for catching the bug!

[=asperatology;190424]

I’m a student working on a virtual reality assignment in a team of 3 that uses Razor Hydra and Unreal Engine 4.3.1.

We’re having some troubles with shipping our project out. We mostly did our project in Blueprints only, but we wanted to try and ship the project, so that it can be played on a different computer with no Unreal Engine 4 installed. In case, it’s our podium computer in our Immersive Human-Computer Interaction classroom located in another department of our campus, where the technical specs is lower than our department’s lab computers.

Note that we are not expert in programming.

We’re using Unreal Engine 4.3.1 with Razor Hydra v0.6.3. We cannot use the latest Unreal Engine 4.5.1 and up, as well as the newer Razor Hydra plugin due to compatibility issues with the lab computers. I have no explanation and no log messages, but the Unreal Engine 4.5.1 crashes upon loading a brand new project with Razor Hydra 0.7.4 plugin.

I looked up the Wiki on setting up the Razor Hydra plugin, as mentioned. I don’t understand the Shipping Build Instructions, so I have some questions:

The first instruction just says, “As of UE4.3, your project needs code.” What code is this, and where can I see code, like an example code not from the live tutorial video?

The wiki isn’t really helpful at all, the live tutorial helped a bit, but it’s not clear. I wished to update it myself so that it becomes relevant for people like me who are new to Unreal Engine 4 C++ programming. We just need an example code to look over, so that we can at least start scratching the surface. We have not made a single progress when it comes to shipping and packaging a project with Razor Hydra plugin, and it’s frustrating to see that there aren’t any additional information that can be found because of the lacking example code, other than the live tutorial.

I’m having red lines here and there in the editor, so I think I need to come back after I cleared off my mind for a bit.

How ironic is this.

You don’t need any code at all.

What I did was I created a brand new “Code First Person C++” project. And then copy/paste our blueprint UASSET files from our old project to the newly created project, and start packaging it. And that is it. There is no code needed to type in Visual Studio 2013.

UPDATE #1:

Going to verify if Shipping is working or not. I’m getting the Address = 0x0 error, so it means that I didn’t put the DLL in the correct folder location.

UPDATE #2:

Placed/copied the 32-bit and 64-bit DLL in all subfolders throughout the WindowsNoEditor folder, but it’s still showing Address = 0x0 error. I don’t see any log files. Where is that located? Maybe it’s because I don’t have the code set up?

UPDATE #3:

Okay, so the code that is required is basically an empty default-generated code of any class object from Unreal Engine 4. Literally. It just needs to somehow link PDB files with Unreal Engine 4 in order to correctly start the game after the game has been shipped and packaged.

And I just now realized the Wiki is outdated… If only that warning is more obvious.
[/]

The video was from when the plugin was initially released (0.5) and a fair number of things mentioned there are now outdated, back then shipping wasn’t supported, that only came in v0.6.3.

I do apologize for the outdated wiki, unfortunately I am just one person doing for no financial gain so I do not have the resources to keep two separate sets of documentation up to date. I have cleaned it up and forwarded links to the github repository. Please refer to that readme for all detailed instructions as only that location is guaranteed to be up to date.

I understand you’re using 0.6.3 which is the first version that contained the shipping instructions. Just following those instructions should work. Specifically, the code part has been expanded to explain in more detail

Projects require code for shipping in order to include the plugin, add an empty class and compile your project module. You simply do File->Add Code to Project and it can be anything so I usually just pick None->Create Class and then it will ask you to open visual studio where you just hit compile (Build solution). If you haven’t added code before follow the unreal engineprogramming Quick Start guide. Essentially it boils down to downloading the free Visual Studio Community and changing a few small configs.

The code requirement for plugins is currently an engine limitation because shipping/packaging causes the plugin DLL to collapse into a single executable, so in order for your game to recognize the plugin in a packaged form it needs the plugin code to be included in the build which is done by adding a simple empty class.

For the newer plugin (0.7.4) problem, it is possible you experienced the same issue as walldiv, where an incorrect null check caused the plugin to crash if you used the HydraPlayerController. has now been fixed in 0.7.6 which is also updated to UE4.6.

I recommend using the 0.7 Component + Interface system moving forward as it gives you the maximum flexibility.

[=Mrob76u;189427]
Thanks . Your work on input plugins is really great. Especially of the VR developers out there like myself. We owe you a lot of drinks :slight_smile:

On a side note I’m also a backer of the new STEM system from Sixence, The vitualizer and the full body capture suit from Perception Neuron. Does anyone else here have any of these devices on order as well?
[/]

Cheers Mrob76u, I won’t turn down a beer if you’re ever in the UK :). Personally backed a full Sixense STEM and PrioVR systems, so maybe those will get some plugins when I get them (if the companies haven’t already made plugins of their own)! Also pushed the 4.6 update, it’s available at the usual location.

Update to 0.7.6
-HydraPlayerController will no longer cause a crash when used in project.

0.7.5
-contains all compile fixes and prebuilt binary for UE4.6

Thanks

Thanks . Awesome work as always. Also you may be in luck with the beers one day as I live just outside :slight_smile:

Hey , I got everything set up so far using the newer method you mentioned with drawing the debug box about using the “is Left Hand” verification method. I’m currently using the first person template and ran into some issues with that so far (I’m at work right now so I’ll have to include some screenshots when I get home later). I wanted to ask really quickly though about those “is Left/Right Hand” nodes are ever false once being called after the Hydra Moved event? I was trying to setup the IK hands and was trying to pass the values of position and orientation from the hydra controller blueprint using it like this: Event Hydra moved -> Is Left hand [TRUE: left hand set position and orientation] -> [FALSE] Is Right Hand -> [TRUE: right hand set position and orientation]. For some reason after having it set like this, the values recording are only the right hand and the left hand when moved does nothing to the character (which is broken all in itself anyways as the hands aren’t moving like they should). Like I said, I’ll post some screenshots when I get home and I’ll also try migrating everything over to the third person template instead to see if that works any better.

It seems as though the plugin is not BACKWARDS compatible? I got an error opening my 4.5 project with the newest .dll for the 4.6 editor version. Just an FYI… i dont mind anyways i’d rather stick with the latest version than be held a version or 2 behind :slight_smile:

Thanks !

[=Mrob76u;190624]
Thanks . Awesome work as always. Also you may be in luck with the beers one day as I live just outside :slight_smile:
[/]

Great, will have to happen! :cool:

[=cleerusher123;191233]
Hey , I got everything set up so far using the newer method you mentioned with drawing the debug box about using the “is Left Hand” verification method. I’m currently using the first person template and ran into some issues with that so far (I’m at work right now so I’ll have to include some screenshots when I get home later). I wanted to ask really quickly though about those “is Left/Right Hand” nodes are ever false once being called after the Hydra Moved event? I was trying to setup the IK hands and was trying to pass the values of position and orientation from the hydra controller blueprint using it like this: Event Hydra moved -> Is Left hand [TRUE: left hand set position and orientation] -> [FALSE] Is Right Hand -> [TRUE: right hand set position and orientation]. For some reason after having it set like this, the values recording are only the right hand and the left hand when moved does nothing to the character (which is broken all in itself anyways as the hands aren’t moving like they should). Like I said, I’ll post some screenshots when I get home and I’ll also try migrating everything over to the third person template instead to see if that works any better.
[/]

The nodes determine hand possession based on where you last docked your hydra in order to support controller misplacement. It is entirely possible to have two left hands/etc. It will work as expected if your hydras have been docked on either side before calling that function. You should also be able to switch on the “handPossession” property on your HydraSingleController which will give you the possible enums and you can use those to branch left/right.

[=walldiv;192097]
It seems as though the plugin is not BACKWARDS compatible? I got an error opening my 4.5 project with the newest .dll for the 4.6 editor version. Just an FYI… i dont mind anyways i’d rather stick with the latest version than be held a version or 2 behind :slight_smile:

Thanks !
[/]

is correct, each plugin version is compiled for the most recent vanilla version of the unreal engine. I typically aim to update most of the plugins within a week of a new engine release (never previews). If you still use an older engine version, but you want to use a newer version of the plugin, you can recompile it for your engine version (there may be some code changes needed due to engine code changes). If you use a custom fork of the engine recompilation will be a necessary step.

Hey all! I don’t know what I’m doing wrong, I got the debug boxes that look fine when I move my hydras, and I’ve output my variables to show that I’m correctly taking input from my hydras… but when I use the following site as a guide on mapping the output of the hydra controllers to IK system of my hand joints, I get the following result. … and when I move the hydras up, the joints move left or right.

Again the debug boxes look to be perfectly matched. Help!

SITE USED AS TUT:

RESULT:
fdfa6946202096d258676edb3806e9bf1c9e52aa.jpeg

BLUEPRINTS:
AnimGraph: 1de668452b4fa2705b7daa3eea52ea93e4abeefa.jpeg
EventGraph: 8d234c4c5bf65fd39f6e6006627aaeeaabd22c34.jpeg

[=walldiv;192493]
Hey all! I don’t know what I’m doing wrong, I got the debug boxes that look fine when I move my hydras, and I’ve output my variables to show that I’m correctly taking input from my hydras… but when I use the following site as a guide on mapping the output of the hydra controllers to IK system of my hand joints, I get the following result. … and when I move the hydras up, the joints move left or right.

Again the debug boxes look to be perfectly matched. Help!

SITE USED AS TUT:

RESULT:

BLUEPRINTS:

[/]

Animation uses Y as forward, all of your positions and rotations need to accommodate by Yawing 90 degrees with respect to the component origin. In addition you need to be aware of the difference between component space, world space and the space where you ultimately chose to drive your animation. has been discussed in thread starting from about page 3.

The convenience rigged model is not yet ready for hydra and may be a few more weeks before it is ready, until then read and experiment away!

[=;193091]
Animation uses Y as forward, all of your positions and rotations need to accommodate by Yawing 90 degrees with respect to the component origin. In addition you need to be aware of the difference between component space, world space and the space where you ultimately chose to drive your animation. has been discussed in thread starting from about page 3.

The convenience rigged model is not yet ready for hydra and may be a few more weeks before it is ready, until then read and experiment away!
[/]

I was able to get workign (with some tweaking of a shoulder origin offset and flipping the x/y channels as you have discussed)… but the ORIENT is all off on just the left hand…

I"ve tried doing the orients in BONE space, as that seemed logical but i’ve tried all three. Simply put, my left hand only is rotated YAW -90 and even if i multiply/add to my yaw of the vector variable holding the left hand’s orientation data… it still will not come out in the editor looking right.

[=walldiv;193245]
I was able to get workign (with some tweaking of a shoulder origin offset and flipping the x/y channels as you have discussed)… but the ORIENT is all off on just the left hand…

I"ve tried doing the orients in BONE space, as that seemed logical but i’ve tried all three. Simply put, my left hand only is rotated YAW -90 and even if i multiply/add to my yaw of the vector variable holding the left hand’s orientation data… it still will not come out in the editor looking right.
[/]

If you’re using blueprint, try using combine rotators (C++ can swap axis and direction in quaternions ignoring W vector with impunity). uses quaternion math underneath (Combine(A,B) = Quat(B)*Quat(A)) and will behave as expected.

It takes a bit of mental visualization (I suggest using a physical object to help with visualization) but if you want to retarget the orientation input axis (e.g. pitch -> yaw, roll->pitch) you combine the fixed adjustment (e.g. P0,Y90,R0 swaps roll and pitch) as the second parameter.

If you just want to rotate the axis origin you use the adjustment as first parameter instead. will maintain your axis input-> output, but will rotate the ‘starting point’ for the orientation.

Another thing to remember is that the combine rotators applies in a specific order (Roll, Yaw, Pitch) and you may have to inverse and adjustment (add 180 degrees) if you want to invert an axis influence (for axis retargeting).

Hey guys, I’ve run into the same difficulties that walldiv had earlier and was wondering if anyone has a solution yet for fixing the 3D templates arms? I’ve tried both IK two bone and FABRIK but the problem I’m running into so far is that when in bone space doing the translation, the hands seem to be moving in a very unique way (I’ll do my best to explain). I previously had setup the FABRIK nodes where I was using the hand as the Effector Transform Bone (Bone Space) and Copy Target Rotation as the Effector Rotation Source. For my Solver, I had set the Tip Bone to be the hand and the Root Bone to be the clavicle. The problem I was seeing was that the hand was seemingly moving on the plane and orientation of what I had set as the Root Bone (clavicle). So when moving the Hydras back on forth in either of the 3 vectors (right/left for X, forward/back for Y, up/down for Z) then would move in diagonals and curves in the editor when I pushed play. I’ve been breaking the vectors and doing some calculation stuff to troubleshoot but haven’t figured out how to get past part >.< any help would be greatly appreciated!

is the Anim Graph in the AnimBlueprint where I’ve mostly been troubleshooting (doing the calibrate hydras have been working just like they are supposed to, been printing out the position most of the time to make sure that it was working like it should in case someone wanted to know)

If someone has the proper settings for either IK or the FABRIK nodes to work correctly in doing the 1 to 1 positions for the hydras, you will win the internet! Thanks again for all the help , just a little bit further and I will release somewhere for someone to learn from :slight_smile:

Hey ! So I got the third person blueprint template working with the hydras for the most part with some minor tweaks for the hand rotations. I have it uploaded in a .zip on mega for you guys if anyone is interested in giving it a try and see how it works. It’s not polished by any means but at least it gives some people a place to start with and allows them to tweak it how they like.

Just unzip into your project folder where the rest of your unreal projects are and you should be able to start it right up after that. I’m not going to include any screenshots unless people come back with questions about certain things. I also have a UMG set up for tracking the shoulder midpoint position and left hydra position in real time so you could just delete that UMG folder altogether if you don’t want it.

How I have the shoulder midpoint calibration setup: Take the left hydra and place in front of your chest and your right hydra extended straight out in a T-pose. will allow people to scale the arms of the character later on (I didn’t include that since I haven’t had a need to do it just yet). One your hands are in the right position, press the left Hydra start button to calibrate and then start moving your hands! Let me know what you guys think as far as how I have things set up and if anyone has any better solutions.

[=cleerusher123;203618]
Hey ! So I got the third person blueprint template working with the hydras for the most part with some minor tweaks for the hand rotations. I have it uploaded in a .zip on mega for you guys if anyone is interested in giving it a try and see how it works. It’s not polished by any means but at least it gives some people a place to start with and allows them to tweak it how they like.


[/]

Oo is cool :)! Will have a proper look at later, but I was wondering why the download size is 780megs? seems quite large for a rigged character. It seems like you included the whole template with starter content! You should be able to extract just the uassets that belong to the character (use migrate?), which would shrink the zip substantially.

[=;203627]
Oo is cool :)! Will have a proper look at later, but I was wondering why the download size is 780megs? seems quite large for a rigged character. It seems like you included the whole template with starter content! You should be able to extract just the uassets that belong to the character (use migrate?), which would shrink the zip substantially.
[/]

I haven’t done that before but I will look it up to see how easy it is for people to download and import. I just figured to include the whole project to make it really easy for people to start it up and try it out. No need to fiddle with plugins or anything since that should all be good to go :slight_smile:

NOTE is the 4.5.1 engine version in case anyone asks :stuck_out_tongue:

Per 's suggestion, I did a migrate of the player and all associated assets for so that the file is much much smaller to download. From what it looks like, you’ll just need to download it and un-zip the files into your specified projects root folder or you can do an import from within ue4 and point it to the un-zipped file locations. Here is the download link for you guys when you get a to try it out. Let me know if you have any questions regarding how it’s structured and I’ll do my best to answer :slight_smile:

[=cleerusher123;204339]
Per 's suggestion, I did a migrate of the player and all associated assets for so that the file is much much smaller to download. From what it looks like, you’ll just need to download it and un-zip the files into your specified projects root folder or you can do an import from within ue4 and point it to the un-zipped file locations. Here is the download link for you guys when you get a to try it out. Let me know if you have any questions regarding how it’s structured and I’ll do my best to answer :slight_smile:

[/]

Had a look and I think it is a good starting point. Couple of points:

-The shrunk package is a much better size :slight_smile:
-Consider renaming and grouping all of the character content into a convenient folder name such as Content/TPHydra so you can drag and drop it and easily remove it if you need to (otherwise it mixes with your project content folders and removing cleanly becomes difficult). As it is you either replace the assets you have (e.g. third person template) or you need to rename things and go through fixing link errors in the blueprint, which isn’t ideal IMO.
-Love the use of UMG, something I should start doing as well, much cleaner debug.
-Your calibration is an interesting approach, might be better than T-pose in some instances as shoulder mid point is more easily controllable.
-Left hand orientation seems to be 45 degrees off
-For VR (not sure if is something you were aiming at) Calibration does not take into account your sitting/standing height, might want to have the oculus have a reset orientation call at that instance to sync them together.

Overall good job, depending on what you want to do with it, some fixes/adjustments could enhance it.

[=;204735]
Had a look and I think it is a good starting point. Couple of points:

-The shrunk package is a much better size :slight_smile:
-Consider renaming and grouping all of the character content into a convenient folder name such as Content/TPHydra so you can drag and drop it and easily remove it if you need to (otherwise it mixes with your project content folders and removing cleanly becomes difficult). As it is you either replace the assets you have (e.g. third person template) or you need to rename things and go through fixing link errors in the blueprint, which isn’t ideal IMO.
-Love the use of UMG, something I should start doing as well, much cleaner debug.
-Your calibration is an interesting approach, might be better than T-pose in some instances as shoulder mid point is more easily controllable.
-Left hand orientation seems to be 45 degrees off
-For VR (not sure if is something you were aiming at) Calibration does not take into account your sitting/standing height, might want to have the oculus have a reset orientation call at that instance to sync them together.

Overall good job, depending on what you want to do with it, some fixes/adjustments could enhance it.
[/]

Thank you for the input! I’ll look into doing some renaming later on once I finish getting the arm size calibration setup working. Been having a hard time getting socket locations in a good way during calibration. I mainly put up for people like me a couple of weeks ago that were having a hard time starting up and getting something working. way, they have at least a semi functioning template to go off of that they can tweak and alter and learn from :slight_smile:

I do plan on doing with the rift in mind, but I sold my dk1 to get the dk2 so I just have to wait till paycheck to finish the preorder since it ready to ship. I’m going to wait for that to come in before I do any minor tweaks to the hand placement/orientation but I wanted to get some of the major things done in the meantime (arm length calibration mainly).

Since I don’t have my rift right now, it’s hard to program the height of the character and such using those variables without being to actually test it lol. So it’ll have to wait till I get mine and then I’ll package it all up again and stick it on here for people as the template character to play around with.

Thanks again for the input like usual ! Yeah, the UMG setup helped a lot when I was debugging the hand placement and orientations comparable to the hydra positions. Made getting far a breeze once I got movement going lol!

Hey Guys

I was wondering if there’s anyway to reset orientation position? So that I can hit start and it zeros everything and if I move it from that position/orientation it’ll update values using that position as 0xyz/0pry.
Any ideas on would be great, thanks!