VR Expansion Plugin

They are very different, the plugin uses a custom gripping system instead of attachment. If you want to use the standard controllers for drawers and the like then check out Mitches tutorials in forum section. Otherwise you would have to implement some of the gripping code that the template character uses.

I’ve found what I needed, thank you very very much for your support!

Best wishes

Andrea

Pushed a new commit to both the plugin and the template

Plugin Changes



**12/07/2016**
Added new grip type, Custom Grip, it does not perform any movement logic and sends an interface
event called TickGrip every tick with the motion controllers delta since last frame.

TickGrip can be enabled for ALL grip types as a boolean in the motion controller component if so wished but leave it off otherwise, interface calls have a slight perf hit.

Fixed a couple minor bugs

Change main tick function into a switch statement

Moved interface checks before all logic in tick and set booleans to prevent having to check
for the interface multiple times.

Deleted a ton of commented code in the motion controller that isn't going to be used
in the future.


Template Changes



**12/07/2016**
Fixed potion actor issue in stand alone where it wasn't welding the stopper correctly.

Fixed fps char not setting boolean to grip without motion controllers and assigned them hand enums.

Updated to latest plugin version with multiple bug fixes and the Custom grip type.


might be incredibly cheeky but any chance you could add a climbing mode to the template if you have the time. Even with the help you gave me its way above what I can do in Unreal and unless I can see the BP I have no hope of getting it to work. If you don’t have the time thats cool. You’re doing incredibly work for the VR community and I’m sure you have a list of priorities you need to get through that will benifit the community as a whole.

That’d be incredibly awesome to see.

Ya I think loads of people would love a climbing system.

I was able to migrate over my room scale setup to work with the new SimpleVRCharacter. Everything worked without a hitch even the replication, which is much faster than my old blueprint replication setup so thanks a million.
I have one question though. Are you doing something to reset world origin, or tracking orgin inside SimpleVRCharacter?

I noticed that after migrating to the simpleVRCharacter class my hmd location in game is reset to the playerstart location. My setup is a fairly strict vive roomscale setup where i interact with physical objects in the room so my playerstart is always at 0,0,0, but then i just position the character to where the hmd is via a similar setup to your parent relative attachment.

I noticed I was getting the error “VRExpansion Library couldn’t get tracked Devices” so I delayed the “stereo on” command until after the character class returns valid, and the hmd is positioned correctly as it originally was before the character class change.

Of course there’s still the chance it’s something with my setup, but thought I’d just ask if there’s any reset happening first before digging around more.

If there is some reset happening, also wondering if it can be made optional. Even with my current workaround for a launched game, if I use ‘VRPreview’ I get the same reset of my playspace to my HMD location since there’s no way to tell that to wait until after character class has loaded before running the “stereo on”.

plugin works brilliantly with my Vive, but now I have Touch controllers and it just crashes when I run a packaged game with the Touch on. Switching back to Vive allows it to run.

I don’t know if makes any difference, but the game starts with non-VR menus and then enables the HMD once you’ve connected to a game. It’s when I try to use the VR pawn that it crashes.

SimpleVRCharacter moves the actor with the headset’s offset so yes that character will change the location of the tracked space, with the SimpleVRCharacter the HMD is pretty much always at 0,0 XY (visually) and the controllers are offset to account for it. Using the “GetOrientationAndPosition” node will still return the HMDs real world location in the tracking space, but for game play since the tracking space moves with it you would have to change the actors location to that offset at begin play.

So you would either want to account for that and move the actor itself in game based on the HMD location, or use the VRCharacter instead which just has the collision follow the HMD instead.

In UE4 your tracked space is centered on the actor holding the HMD/Controllers.

I would need a log of the crash, the plugin doesn’t do anything specific to the vive but I don’t have touch or any oculus hmd past DK2 to test with. If you are using the oculus VR runtime for it and not SteamVR then you’ll have to disable the procedural controller generation code in the player character as it is Open/SteamVR exclusive. It would also be helpful to know if it crashes with a epic template pawn and the oculus touch currently in a packaged game.

Pushed new commit to ease development time


Added GetIsInVRPreviewOrGame blueprint node, returns true if the world is the
in editor VRPreview or is a non editor build. Otherwise returns false (normal editor previews
/ play in editor).

Also added it to the template where it checks for if there is an active HMD. mean that if you are in an editor build and you launch the vrpreview it will spawn the VRPawn, if you run in any other editor mode it will use the FPSPawn instead. For packaged games it always returns true so it will allow the VR Pawn.

may be a dumb question, but will the VRExpansionPlugin work in Unreal Engine on a MAC? When I try installing (following instructions) and opening up the project, it says it cannot open the plugin and closes Unreal Engine all together. I have to remove the plugin to open the project back up. When I looked in the Binaries of the plugin I noticed it only had Win32 and Win64 in it.

You would have to compile it for mac yourself as I do not own one, but SteamVR itself isn’t listed as compatible with OS’s outside of windows anyway so you would have to use a compatible framework (unsure of oculus runtime).

Just pushed a minor update to fix FPS pawns with the new node, also the newest SteamVR update that came out an hour ago flipped the mesh data for the controllers for some stupid reason, I temp rotated the procedural mesh components to correct for the offset but I don’t know if they will revert that change in the future or not…

If they don’t I will do it in the generation function instead eventually.

Here is the crash dump. I’ve disconnected the Steam controller detection and it still crashes.

The base template works, I’ve clearly broken something. I’ll have to go through it again. Thanks anyway.

My Base template, or Epics?

Also the crash dump is showing that it is getting an empty Matrix and trying to InverseFast it, I have only seen that from the VR system when room setup isn’t performed (IE: switching between beta and std SteamVR branches) and it gives an empty matrix for the HMD.

Yours. I’m using standing only for both setups, I’ll try setting up room bounds and see if that helps. Thanks.

Does have a dominant hand option?

If not, it’d be cool to add a “primary” and “secondary” hand configuration that allows the user to switch in options.

? Neither hand currently has functionality in the demo template over the other one. They both do the exact same things. If you need hand specific mechanics that would be something YOU would add as a game option.

I have been having heaps of fun learning from fantastic template. I have come across one thing that I can’t solve. I am sorry if it is extremely obvious:

I am trying to use the GrippableBox component to allow the user to pull back the Slide on a firearm - just like in your Gun template example.
In my case I want the GrippableBox to be limited in the Y axis, only able to translate in the -Y direction.

It seems every time I put a negative value in the Linear Translation, the Gripable box will only ‘snap’ to that location, it wont smoothly move with the hand. And it will only happen if I move the motion controller in the opposite direction to what I want to.

In my example
-The GrippableBox initial linear translation for Y is 7 (local space)
-I want it to end at -1 (local space)
-I enter a Linear Translation of -8.

As a result, if I move the motionController in the positive Y direction, the grippableBox will Snap to the desired location. When i move the hand out of the way, it snaps back to the initial value.

Do the GrippableBox limits only work in positive values or have I missed something?