Steam VR Template

Steam VR Template 2.0

Instruction guide found in the onedrive

Demo video found at SteamVR Template 2.0 for HTC Vive and Oculus Rift - YouTube


So, what this is about?
This template consists of HTC Vive and Oculus Rift compatible pawns and settings, ready to drop in your game. In the main level, there is some objects to test the features of the pawn. So what you can do is choose the features you want, and build yourself/modify a pawn based on the functionalities you need.
Who dunnit?**
It’s a collaborative project curated by Mat at Proteus VR. Kudo to @ for the plugin, and @PenguinTD for UltraMan.
Which HMD works with the template?**
For now, the template is optimized for the HTC Vive and Oculus Rift. It will soon be also compatible with the Oculus Rift’ Touch controllers.
Which Unreal Engine 4 version works with the template?**
SteamVR Template 2.0 works with Unreal Engine version 4.12.5 and 13.0 official launchers
Choose the right version of the template.
A VR Template? There’s already one in UE4.13**
Try the Epic official VR template first. If it suits your needs, you’re all set. If not, you can give this template a try. Advantages of this template are:
· Compatible with 4.12.5 and 4.13.0 official releases
· Supplemental functions not found on basic 4.13 template
· Use with or without the VRExpansion plugin
A plugin? I don’t like plugins.**
Without the VRExpansion plugin, it’s still possible to select a no plugin pawn and export it in your project. However, it will have reduced functionalities. For the SteamVR Template 2.0, be sure to have the plugin installed and enabled. The features of the plugin are:
· VR Character Actor
· Grip Motion Controller
· Replicated VR Camera
· VR Root Component
· Parent Relative Attachment
· VR Function Expansion Library
You’ll find the latest plugin and all relevant infos at .
It is always possible to avoid the plugin by using the VRPawn, VRPawn_Teleport and VRPawn_Pickup
What can I do with the template?**
These are the main features:
· Basic Pawns and Character
ü Gamepad movement
ü Head mesh follow camera
ü Toggle base stations meshes (HTC Vive)
ü Oculus Rift user profile (Oculus Rift)
ü Access more VR functions (with the VRExpansion plugin)
ü Use a Character instead of a Pawn
ü Basic settings
ü Scalability settings
· Teleport pawns
ü Controllers as animated hands or Vive Controllers (HTC Vive)
ü Selectable controllers’ skins & opacity (HTC Vive)
ü Mapping of all buttons/trackpad on controllers (HTC Vive)
ü Force feedback when touching objects (HTC Vive)
ü Go/No go teleportation zones with camera fade out
ü “UltraMan” mode
ü Triggerable poles at the 4 chaperone corners (HTC Vive)
ü Teleport on navmesh and/or adjustable “safe” value to teleport on uneven surfaces
i. No locomotion
ii. Controller teleport and rotate playground with head position (HTC Vive)
iii. Controller teleport center of playground only (HTC Vive)
iv. HMD/gamepad teleport and rotate playground with head position
v. Controller movement
· Grab pawns
ü Grab objects with/without the VRExpansion plugin
ü 4 objects with skeletal sockets: the sword, the gun, the baton, the lightsaber; 1 object with mesh socket: the book; 1 object without sockets: the hat (with VRExpansion plugin) (HTC Vive)
ü Grab cubes (no plugin) (HTC Vive)
· Vehicle pawn
ü Embark/disembark, drive vehicle (HTC Vive)
· Platform pawn
ü Moving platform for testing purpose, by simple actor move (embark by triggering overlap volume or teleportation; disembark by teleportation) and sequencer (embark by pressing console button; disembark with controller input) (HTC Vive)
· Jedi pawn
ü Turn on/off lightsaber (HTC Vive)
How can I install it?**

Files can be found at Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.


  • Versions 1.9.2 - 1.12: https://.com/ProteusVR/SteamVR_Template
  • Version 2.0 for UE4.12.5: https://.com/ProteusVR/SteamVR_Template_2.0-UE4.12.5
  • Version 2.0 for UE4.13.0 and up: https://.com/ProteusVR/SteamVR_Template_2.0

Main infos found in the forum at Steam VR Template - XR Development - Epic Developer Community Forums

To install as a template, just unzip into the appropriate templates directory like C:\Program Files\Unreal Engine[Version]\Templates for launcher version or[ForkLocation]\UE4\Templates for source version. Launch a new project, and you’ll find it in the blueprint section.
To install as a project file, unzip in your usual projects folder. Then, delete the file SteamVR_x-x/Config/TemplateDefs.ini and you’re ready to go.
IMPORTANT: If you open it like a regular project without deleting the .ini file, you’ll get errors messages.
Ok, I opened it. How do I use it?**
First choose if you’ll use the VRExpansion plugin or not.
a. If you use it, assign the gamemode as VRGameMode_P
b. If you don’t use it, assign the gamemode as VRGameMode


Then, choose the pawn you need or want to test. Set it in the VRPlayerController_P or VRPLayerController under “Spawn actor from class”. In the upper function you select the actor you’ll control when using the Vive or Rift. In the lower function you’ll select the actor you control when no Rift or Vive is detected.


For the Vive/Rift actors, the choices are:
a. With the plugin:
i. VRPawn_P
ii. VRCharacter_P
iii. VRPawn_Teleport_P
iv. VRPawn_Pickup_P
v. VRPawn_Vehicle_P
vi. VRPawn_Platform_P
vii. VRPawn_Jedi_P

b. Without the plugin
i. VR_Pawn
ii. VR_Teleport
iii. VR_Pickup

c. No Rift/Vive lower function
i. No_HMD_Character
Why can’t I simply select the pawn in the Game mode blueprint?**
Selecting you controlled actor in the PlayerController allows easier integration of multiplayer function, as well as early HMD detection and assignation to HMD/no HMD player at game start.
Where can I tweak the settings?**
The first set of settings is in the Project Settings:
Project/Maps: VRMap, Game Instance Class: VRGameInstance
Project/Packaging/Staging Directory: Your save directory when packaging
Engine/General Settings: Use Fixed Frame Rate @90
Engine/Rendering/Default Postprocessing settings: Uncheck everything (bloom is optional), see below for AA Method
Engine/Rendering/VR: Check Instanced Stereo
The second set of settings are in the level blueprint
· Enable All Screen Messages: on/off
· Monitor Output Resolution: Resolution of the mirror output on your monitor
· Graphic Card Video Memory (in Mb): By default Unreal uses 1000Mb texture poolsize. This poolsize can be optimized with video card with bigger VRAM, especially when you have a lot of streaming textures. It is recommended to not go further than 60-75% of your actual VRAM size. As an example, a NVIDIA 1080 FTW with 8GB of VRAM should not be set above 5-6000Mb.
What is the input mapping for the Vive controllers?


Image by @

**What is the input mapping for the Xbox One gamepad?


What is the input mapping for the Oculus Rift remote?


**What is the input mapping for the Oculus Rift Touch Controllers?


I’m annoyed by the FPS count in the center of my view. How can I disable it?**
The FPS count is handy for debugging and testing your level, and is an illustration of the possibilities of the plugin parent relative attachment. You can delete it in the VRPawn_P, by removing the Monitor in the components.
Can I use a character instead of a pawn?**
You can use the VRCharacter developed by @. You’ll find more info about it at
How are the pawns organized?**
· The basic actors controlled by the PlayerController are VRPawn, VRPawn_P and VRCharacter.
· VRPawn_Teleport is a child of VRPawn
· VRPawn_Pickup is a child of VRPawn_Teleport
· VRPawn_Teleport_P, VRPawn_Platform_P and VRPawn_Vehicle_P are children of VRPawn_P
· VRPawn_Pickup_P and VRPawn_Jedi_P are children of VR_Pawn_Teleport_P
What are the locomotion methods?**
· Gamepad movement: found in the VRPawns. Enable/disable in settings
· Teleportation found in VRPawn_Teleport and Teleport_P
· No teleportation
o Limited to the size of your playground
· Teleport with playground rotation
o Choose teleport location with R or L trackpad and rotate the playground; you can ignore playground rotation by pressing R or L grip buttons; release to teleport
· Teleport playground center
o Choose teleport location with R or L trackpad; release to teleport
· Teleport with HMD
o Press gamepad A button, choose teleport location with HMD, release to teleport
· Ghost move
o Ghost mode, move with left trackpad
Settings related to locomotion:
· Poles at playground corners during location scouting on/off
o If using Oculus Rift, all 4 poles will be at the playground center
· Head location during location scouting on/off
· Arrow around head location during location scouting on/off
· Blink time (fade), in seconds, during teleportation (0=no blink)
· Teleport mesh particle effect during location scouting (Teleport playground center only)
Where can I teleport?**
The 3 methods of teleportation are set to allow teleportation on 1 or both of the following procedure:
· *Teleport on navmesh (by default): Teleport on navmesh defined in the level (press P to see it)
· Teleport following hit location normal: When tracing the possible teleport point the Break hit result/normal will compute the normal of the point on which we want to teleport. The normal will be between 0 (90 degrees to the floor) and 1 (0 degrees, perfecly aligned with the floor). You can test it by doing a print string with a one frame line trace. It will tell you a z value betwen 0 and 1. Test it on the sphere will you see all values (tangents) go from 0 to 1.
Anyway, you can put a safeguard in the function, between 0 and 1. Let’s say you put 0.9. What does it mean? It means that you can only teleport on surfaces with a normal of at least 90%1 normal, so surfaces who are aligned within 0 to 9 degrees of your floor angle. Without this, you would teleport on blocking volumes and on walls. However, you just have to relax this value, let’s say 0.5 rather than 0.9, and you should be fine teleporting on uneven surfaces.
By default this value is at 0, so it’s not considered at start.
I like this nice projected spline when I teleport with the UE4.13 VR Template? How can I enable it?

There is a nice function “Predict Projectile Path” that is tracing an arc spline up to your teleport location. However it works only with UE4.13, so it will be integrated in next version to keep this one compatible with 4.12.5.
How can I grab objects with the VRExpansion plugin?

To enable object to be picked up, you have to (in order)
· Make a blueprint of the mesh
· Be sure that the mesh inside the blueprint is set at Collision/BlockAllDynamic
· In the newly created blueprint, go to Class Settings and implement Grab INT, Grabbed INT and Release INT interfaces.
· Copy and paste the event graph nodes. As a guide, copy and paste the event graph nodes found in Hat_BP (or any other “grabbable” objects found in the template).
· Click on Create variable “Mesh Socket” and Create variable “Socket Name”
What are the possible options for the grab function?

  1.  **Default options**: The hand/controller nearest the object will pick it up the following way: Sphere trace (controller) against any collision boundaries of the object. As an example, try Hat_BP on the shelf
  2.  **The object has sockets**. The hand/controller nearest the object will pick it up the following way: Sphere trace (controller) against the 1[SUP]st[/SUP] socket (=0) on the list in your mesh. You can also specify which socket (=0,1,2,3, etc) in the object grab function. As an example, try BookLP_BP on the shelf. **Don’t forget to check yes at “Use Mesh Socket” in the Options of the grab function in the object blueprint.**
  3.  **Hands/Controllers (skeletal meshes) have sockets for the object**. As an example, in the HAND_R_GRIP_Skeleton skeleton, 4 different sockets have been placed to accommodate 4 objects. **By default, the grab function will look at sockets with the same name as the object (BATON_BP, etc). Name your sockets accordingly.** As an example, try the lightsaber, the baton, the sword or the gun. They are automatically placed in skeletal mesh sockets of the right hand. **For now, only the right hand has sockets.**
  4.  **Enable / Disable object physics (found in the pawn settings)**

So the grab function will automatically look for mesh sockets and skeletal sockets, and use them.
Finally, one last option. You can specify the position of the hand/controller mesh in relation to the object in the object grab function, in the section Options/Left or Right Hand placement. As an example, the 4 objects with skeletal meshes enabled have also hand placement changed a little bit for convenience. Try changing hand placement to see the difference.
What are the possible options for the grab function?
· Enable / Disable object physics (found in the pawn settings)
You can find other options in the Grab function within the pawn blueprint. More explanations found at
How can I grab objects without the plugin?**
To enable object to be picked up, you have to (in order)
· Use function nodes found in VRPawnPickup which has the Pick up actor interface implemented
· For the object to be picked up:
o Make a blueprint of the mesh
o Be sure that the mesh inside the blueprint is set at Generate Hit and Overlap Events, Physics Actor
o In the newly created blueprint, go to Class Settings and implement Pick up actor interface
o Copy and paste the event graph nodes. As a guide, copy and paste the event graph nodes found in BP_PickupCube
Spawn poles at chaperone’s corners (HTC Vive)?**
· The chaperone corners are situated at the four corners of your play area, which is a rectangle. However, the chaperone grid is delimited by your available space, which can take any shape and is usually larger than your play area. That’s why you can have the impression that corners are not at the right place but they are. For now, the function will work only on the initial play area.


“UltraMan” mode?
· Brought by @PenguinTD. Try it very cool. Just push R0L menu button. Don’t forget to enable it before in Settings, with Menu buttons = 2 (UltraMan)
A lightsaber?**
· Only with the VRPawn_Jedi_P
· Pick it up and push R or L menu button for blade on/off.
A vehicle?

· Only with VRPawn_Vehicle_P
· To ignite: You have to put your right hand on the black handles and start it with the right menu button
· Control: Joyride with the left trackpad, forward or reverse following left controller orientation.
· Turn off: Off with the left menu button.

· Only with VRPawn_Platform_P
· To embark on the simple platform, just collide with it.
· To embark on the sequencer platform, push the red button. Right menu button to exit.

Does it work multiplayer?**
It is multiplayer ready, all the network logic is there. However it will be fully supported in next version, compatible only with UE4.13
Does it work with Oculus Touch Controllers?**
You can choose Touch Controllers as static mesh type in settings, and implement some Touch inputs through blueprint. However, the Touch has not been fully tested yet. It will work 100% in the next version.
Can I use more than 2 controllers with the HTC Vive?**
The HTC Vive can track a maximum of 2 controllers wirelessly. However, it can track additional controllers if they are plugged in a USB port. Indeed, you’ll have to tweak the engine source code (for now) to access this tracking data.
I want to access the camera in the Vive! What can I do?**
This feature will be added in a future iteration. For now, it works well with the Unreal4AR plugin found at (personal license for 99$).
I don’t see the Vive playground poles and/or boundaries! Is it broken?**
This is a known bug, happening from time to time. Restart UE4 and it should be fine.
I don’t have 90 fps! Your template is **!
The template and the functions inside the pawns are not computer-intensive. It has been rigorously tested and within the main VR_Map, it stays at 90 fps.
99.99% of the time, the problem can be resolved within the post-process volume settings (in the level), in the Scalability settings (in the level blueprint) and by checking materials, lights and shadows. You have to carefully assess and tweak the following features:
In scalability settings
· r.ScreenPercentage: I found the sweet spot between ressource/usage and image quality is a screen percentage of 150. I can crack it up a bit but over 175 a begin to have serious drops in FPS (in tempAA). Note that the sweet spot can vary between rigs. Note that for textures within let’s say 2-3 m I don’t see any differences between settings, they are all super crisp.
· The rest are r (single settings) and sg (group of settings) to adjust
o For a thorough explanation, see…nce/index.html
o Specifically for VR, visit also Getting Started with VR in Unreal Engine - Tom Looman
Post-Process Volume (in the level)
Be extra careful, because one single setting can cause a big drop in fps:
· Bloom: 0
· Ambient Occlusion: 0
· Screen Space Reflections : 0
The following do not affect fps but are nor recommended in VR :
· Auto Exposure: Min Brightness = Max Brightness
· Lens Flares: 0
· Motion Blur:0
AA Method (in post-process volume)
FXAA is less resource hungry, provides crisper images but there still some aliasing
TempAA is resource-intensive, provides images that are bit blurrier but removes all aliasing
Personaly, I prefer the look of tempAA, even if farther textures are a bit blurry. FXAA is less resource hungry, provides crisper images but there still some aliasing
I found the sweet spot between resource/usage and image quality is a screen percentage of 150. I can crack it up a bit but over 175 a begin to have serious drops in FPS (in tempAA). Note that the sweet spot can vary between rigs. Textures within let’s say 2-3 m I don’t see any differences between settings, they are all super crisp.
Other settings
· Try to avoid any other materials than opaque and masked
· Avoid fancy collision boxes
· Eliminate / reduce to minimum dynamic lights and shadows
· Avoid meshes with high poly count
· Reduce the number of animated objects

I’m still having problems!
For the ones having problem opening/packaging projects:
Errors on opening are due to:
1)Opening the downloaded template as a regular project without deleting the .ini file
2)Using the wrong UE4 version
99.9% packaging errors are due to
1)Not adding an empty C++ class if using the plugin;
2)Using the wrong version of Visual Studio
3)Overlooking settings in Project/Maps & Mode;
4)Overlooking options in Project/Packaging
I’m desperate.**
You can package it (version 4.12.5 only) with the NVIDIA multi-res at
https://.com/NvPhysX/UnrealEngine/tree/MultiRes-4.12 or
Oculus Forward Render at https://.com/Oculus-VR/UnrealEngine/tree/4.12-ofr
Depending on your latency problem, it could give you the extra fps you need to attain 90.
How can I cook and package my project?**
If you’re using the plugin, be sure to File/New C++ class, None, Create Class before packaging, if not the plugin won’t follow. Be sure to have a working copy of Visual Studio 2015 enabled.
How can I migrate a pawn in my project?**

  1.   Be sure to copy and enable latest VRExpansionPlugin in the project if using the plugin
  2.   Migrate selected pawn into project

o Attention
§ VRPawn_Platform_P requires functions found in the level blueprint
§ VRPawn_Vehicle_P requires a vehicle with proper functions enabled
3. In the new project
o create a VR_Game Mode with the proper pawn selected
o Ensure that the correct PlayerController is here
o Copy basic functions and Scalability settings found in the level blueprint
o Adjust project settings (ref above); create a post-process volume (see above)
o Put a PlayerStart
You should now easily migrate one of the pawns into another project.
I want to test it in a complex environment!**
Sure. You can test version 1.12 in Epic’s Shooter Demo by downloading the as a project file, or you can test it right away by downloading the PACKAGED version.
What’s coming for the future iterations?**
ü v2.1: Multiplayer and Oculus Touch support, projected teleport spline path
ü v.2.2: Leap Motion integration
There is a lot of iterations. What are the changelogs?**
Version 1.1 - UE4.11.0: April 6, 2016 (project files)

  • Animated triggers in both controllers
  • Map of all buttons/trackpad on controllers
  • Toggle on/off debugging squares of controllers and/or base stations
  • Scalability settings

Version 1.2 - UE4.11.1: April 7, 2016 (project files)

  • More precise animated triggers in both controllers

Version 1.3 - UE4.11.1: April 10, 2016 – now as a template!

  • Finger tracking on trackpad
  • Trace line with trigger
  • Teleportation with cone validation
  • Toggle on/off debugging meshes of base stations
  • Force feedback

Version 1.4 - UE4.11.1: April 13, 2016

  • Added animated “grabbing” mesh right hand (will be refined) – can be used instead of right controller mesh
  • Teleportation with trackpad à la The Lab with cylinder validation
  • Go/No go teleportation zones
  • Force feedback following teleportation (different for each controller)

Version 1.5 - UE4.11.1: April 14, 2016

  • Reduced recourse to event tick
  • Event tick on/off (by default event tick is off – press upper menu button to enable it)
  • Addition of 2 moving platforms for testing purpose: one by simple actor move and another moved by matinee
  • Toggable particles system at the 4 chaperone corners and at the center
  • Teleportation on platforms is now possible – without being moved (see bugs)
  • Addition of a cone at the tip of the right trigger – can be rotated
  • Added the right hand grip fbx on the onedrive – will be refined
  • Desktop resize

Version 1.6 - UE4.11.2: April 20, 2016

  • Pickup/release/throw any object on the scene with the controllers
  • Platforms (simple move & matinee) teleport
  • “UltraMan” mode
  • Standing/seated experience switch
  • 2 different ways to teleport
  • Custom scalability settings for the Vive
  • 3 adorable dogs on cubes to test scalability settings

Version 1.7 – UE4.11.2: April 28, 2016

  • Added Settings Menu
  • Added Ghost move
  • Added particles system with teleportation method 1
  • No go teleportation zones with camera fade out
  • Basic vehicle (early version): Step near the vehicle to take possession / control with left
    trackpad/disembark with menu buttons
  • Fixed the 2 moving platforms for testing purpose:
  • one by simple actor move (embark/disembark by triggering overlap volume)
  • one by matinee (press left menu button to embark & move and to stop platform)

Version 1.8 – UE4.11.2: May 4[SUP]th[/SUP], 2016

  • Spawn on PlayerStart location and rotation
  • Grab function for right hand
  • Improved vehicle
  • Toybox: 4 objects with skeletal sockets: the sword, the gun, the baton, the lightsaber; 1 object with mesh socket: the book
  • Freak’n lightsaber cause May 4[SUP]th[/SUP] (latency test)
  • Improved quit platform
  • Removed matinee / sequencer platform because there are quite the same, and only way to avoid glitches/drop in FPS is to move the pawn together with other objects in matinee itself
  • Lot of small fixes

Version 1.9 – UE4.11.2: May 12, 2016

  • [FIXED] Controllers size and location
  • [FIXED] Grab function
  • [FIXED] Ghost Mode
  • [FIXED] Performance issue with Chaperone enabled
  • [FIXED] Vehicle location while turned on
  • [FIXED] Platform exit
  • [FIXED] Destroy particles issues following teleportation
  • [FIXED] Reduction of trackpad sphere size and opacity
  • Vive Pawn Head
  • Controllers skins
  • Controllers opacity selection
  • New lightsaber
  • Mirror
  • Select alternate meshes for controllers
  • New documentation

Version 1.9.1 – UE4.11.2: May 27, 2016

  • Lightsaber: on/off left hand [FIXED]
  • Lightsaber: glowing light same color as blade [FIXED]
  • Grab function: drop problem when both hands are grabbing objects at the same time [FIXED]
  • Disable Analytics and Substance plugin [FIXED]
  • Teleport/Exit matinee platform [FIXED]
  • Some scalability and ppv volume adjusted
  • Attention: Grab function has changed within picked up objects blueprints (added “Released” interface)
  • New input mapping
  • Press Right Grip on/off to trigger chaperone corners with poles
  • Press Left Grip to teleport on/off matinee platform
  • Teleport: Adjustable “safe” value to teleport on uneven surfaces
  • Chaperone bounds spawn poles, retriggerable
  • Teleport/Exit matinee platform

Version 1.9.2 – UE4.11.2: May 31, 2016

  • Exit moving platform [FIXED
  • Teleport Method #2 [FIXED]
  • Drop function of conductor baton [FIXED]
  • Lightsaber settings lead to failed cooking [FIXED]
  • No HMD enabled with packaged level [FIXED]
  • Teleportation on platform follows the axis of play area
  • Scalability settings adjusted
  • Translucent materials removed, changed for masked materials
  • New settings
  • Option to enable Oculus Forward Renderer

Version 1.9.3 – UE4.12.0 : June 6, 2016

  • Update to 4.12.0
  • Updated grab plugin
  • Removed Settings in Struc table and put within Vive_Pawn / Level Blueprint / Lightsaber BP
  • Removed Oculus Forward Renderer option (source version is still with 4.11.2)
  • Updated docs

Version 1.10 – UE4.12.2 : June 14, 2016

  • Updated to 4.12.2
  • Updated grab plugin
  • Left and Right grab hands
  • New vehicle controls: vehicle rotate with direction
  • New environment with interactive consoles
  • Chaperone poles spawn fixed
  • Less settings; the rest will be in a future 3D menu
  • Matinee changed for Sequencer
  • Small glitches and crashes fixed

Version 1.10.1 – UE4.12.3: June 15, 2016

  • Updated to 4.12.3
  • Updated grab plugin
  • Left and Right grab hands
  • New vehicle controls: vehicle rotate with direction
  • New environment with interactive consoles
  • Chaperone poles spawn fixed
  • Less settings; the rest will be in a future 3D menu
  • Matinee changed for Sequencer
  • Small glitches and crashes fixed
  • Vive_Pawn_Complete, with every functions (except vehicle)
  • Vive_Pawn_Vehicle, Vive_Pawn_Grab_Plugin (no lightsaber), Vive_Pawn_UltraMan will each do a specific function; only Vive_Pawn_Grab_Plugin uses the plugin; select pawn in Steam_GM
  • Fixed chaperons’s poles and exit simple platform

Version 1.11 – UE4.12.5: 27, 2016

  • Updated to 4.12.5
  • Now using VRExpansion plugin
  • Multiplayer ready…or almost
  • Playground rotation or locked when teleport
  • Lot of small fixes

Version 1.12 – UE4.12.5: August 1, 2016

  • Fixed a missing folder preventing packaging project
  • Added player snapshot inside the playground when teleporting
  • Added a “legacy” teleportation method (select 1 and check “legacy teleport”)
  • Fixed some bugs found in all pawns
  • Added a FPS counter in front of the player
  • Now using more features from ’s plugin

Version 2.0 – UE4.12.5: August 30, 2016

  • Compatible with UE4.12.5 and 4.13
  • Oculus Rift compatible
  • Now with parent/child blueprints
  • Reconstruction of all functions
  • Basic / Teleport / Grab / Specialized pawns
  • VR Character, from VRExpansion plugin
  • Choice of using or not using VRExpansion plugin
  • Grab with/without the plugin
  • Force feedback on objects
  • Scalable mesh for Vive playground
  • Robust teleport function on navmesh and/or safe normal value
  • Teleportation with HMD and gamepad

Excellent - thanks very much! I was looking for a starting point with the Vive. Once HTC manage to get over these awful shipping issues this is going to be one of the first things I test out!

You are a saint.

Regarding the height above the floor - what I’ve in the past is put the player start in the normal position (no “BAD SIZE” warnings - those will kill controllers) and instead position the player actor on the ground as soon as the game starts running.
That way, you don’t get the bad size warning, the controllers are happier, and you get the eye height the correct height with respect to the floor.

Hope that helps.

This is fantastic. Seriously, thank you for putting this together.

I noticed a couple things when comparing this to the SteamVR UI. By running the EU4 VR Preview and then clicking the menu button below the touchpad, I could see differences between the “native” implementation and this one.

  1. The controllers weren’t quite the same position and scale as the ones in SteamVR. They seemed a little big. I found things lined up a little better if I opened up the Vive_Pawn and altered Vive_Control_L and Vive_Control_R to the following:
    location: x: -1.9cm, y: 0cm, z: -1.25cm
    scale: x:.95, y:.95, z:.95
    Still not perfect, but it was close enough that it no longer felt off.
  2. I found the UE4 movement to be a little janky. I’m running a decent machine (i7-4790 and a gtx 980). It didn’t seem like a framerate issue, instead it seemed like the tracking got jittery from time to time. Even more strange, when both SteamVR and UE4 were showing simultaneously, the jitter only happened in the UE4 view.

I haven’t played with it long enough to narrow it down to UE4’s implementation, or something specific to the blueprint, but something seems to be going on that’s not the Vive’s fault. Anyone else noticed this?

Hey nice template, just a few things I noticed while playing with it

  1. Vive controllers are symmetrical therefore there is no need to have a model for both left and right hand,
    this will cut down on development time as currently you have to duplicate all your work for both left and right hand :slight_smile:
    I understand why you did it as you want to have each animBP update according to the appropriate hand it’s in.
    However if you wanted to do that you can simply have a Base AnimBP that has all the functionality of the Vive controllers and then create children that simply choose which hand values to get from the Pawn

Or if that’s too complicated you can even use 1 animBP and simply set the values from the Pawn on the individual instance of that AnimBP object, like this :slight_smile:

  1. I like the trigger animation but it would be even better if it was properly driven by exactly how much you are pressing the trigger.
    To do this I would suggest creating a 1D blendspace between no-trigger pull and full trigger pull and the driving that with the axis value, like this :slight_smile:

  1. I think you may have missed getting the x/y coordinates of the touch on the touch pad, this will allow you to show where the user is pressing on the touch pad :slight_smile:
    also for anyone interested I made a diagram which labels all the vive controller mappings and there corresponding UE mappings

Lastly this is a little thing but when sharing porject files you don’t avtually need to include the “intermediate” and “Saved” Folders as they will be generated when the user opens the project
(this is especially the case for templates as those folders can take up a lot of space for your template deleting those folders took it down to 88MB from 150MB)

If you would like me to share with you the changes I made let me know :slight_smile:


Thanks Sorry for the 2 folders I used to know that I just missed it this time.

So I reuploaded a template without these (85Mb) and put also the fbx for the controller/anim. The animation for the trigger is 20 frames. Perhaps I should shorten it? The textures/maps are in the template.

For the size/location of the controller: I did it by trial and error. In fact I have a 3D model of my hands in Maya and I just scaled the model next to my hands. Plus, I spent some time moving the pivot within the controller and size to find the sweet spot, but it wasn’t perfect.
Thanks ken for fine-tuning it. I will update the size and pivot in Maya then re-import it it will make the fine-tuning adjustments unecessary.

As for the other changes they are all welcome give me 24h it will be . Thank you all we will conquer the Vive continent!

I have another question. What would be great to replace the controller with? Of course hands or gloves, but what else?

All changes discused above included in version 1.2
I let the devs choose what to do with the coordinates obtained from each trackpad.
Happy SteamVR

Awesome, I’m probably being a bit picky but when I looked at the blendspace in the new 1.2 version I don’t believe it’s functioning correctly. I believe it is because you have the trigger animation at the right most of the blendspace which means it is playing the animation all the time. Here’s what I would do

Thank you so much for this!
The scale of the controllers seems ok to me. I’m about to go to bed, just spent most of the evening trying to get room scale working before I found this :slight_smile:

Regarding the triggers, to me they appear to remain depressed (for a while at least, I noticed one had returned to its original position at some point).

Wondering if I am doing something wrong. I have 4.11.1 installed, I grabbed the SteamVR_1_2 zip, unzipped it into my C:\Program Files\Unreal Engine\4.11\Templates folder but I cannot get the template to show up when I try to create a new project. From everything I have read, that should be where it goes. Has anyone else had this problem?

Hi Proteus, nice project! Do you know if there is any laser pointer (like the SteamVR Menus blue one) asset to use with the motion controller? Im using Line Trace but i guess that a particle system should be better for it.

Also, how this Adapt chaperone size to scene feature will work?

Thanks and Regards!

It goes into your Projects folder under “C:\Users**\Documents\Unreal Projects” :slight_smile:
It will then show up in your Epic launcher along with other projects.

Hello, thanks a lot for your template, i have make news one based on yours:

Added téléportation with cone validation, use with taged asset “Floor”
Added where you finger is on trackpad.
Small recalibration on controller.
Trace Line with Trigger
Added vibration when teleport.

If you need to try, latest version 1.5 here :

Thank you all, specially v3ry. If everybody don’t mind I’ve integrated the last few comments into 1.3
In the next version I’ll list everybody’s contribution.
Yes I think the particle system would be nice to use as a teleportation asset. There’s a few interesting ones in the Infinity demos, I think it would take a few minutes integrating one.
I love the teleportation system in The Lab, doing something similar would be great.

As for the rest as I have access to a Leap Motion, 3D scanner and mocap suits so I propose to capture/rig/skin animated hands, à la Hover Junkers. I’ll add Leap Motion soon.
Do someone tried to adapt the scene to the chaperone size or vice-versa. Would it be feasible (I don’t know)? Just sayin

Finally, it surely wouldn’t be too difficult adding a go/no go teleportation system (similar to red/green circles in The Lab).

Thanks all I think we’re close to having a nice template. That way, devs/hobbyists will be able to just drag and drop the pawn, maybe refine it a little bit and concentrate on their game and not on making their Vive work in UE4.

Late note: the project is now a template. Follow instructions accordingly.

Proteus will need to add the template .ini for it to be used as an actual template.
like here

As for the lab teleportation from the Lab I did a video on how to accomplish something similar if you want to check it out, I was thinking of re-doing it however.
The chaperone size adaptation really depends on the game you want to create so it’s hard to put it in a template. But I have it before, however in 4.11 preview 8 it was broken by epic and I haven’t checked to see if it works now

This is awesome guys. Keep it up

Thanks the template is and I’ll watch your videos!

Is this just use the official build or do I have to build from source branch?
When I launch 4.11.1, it seems that the VR preview is always greyed out.
(doesn’t matter if I started SteamVR before launch UE4 editor or not.)

Edit: Run UE4 edit as admin works, also afterward I can run UE4 Editor from Steam that also works.
Need to run SteamVR before launch Editor.

How exactly does the “tag floor” part work? I don’t see any tags on the sample scene floor, I made a new one and named it Floor but I’m unable to teleport. Does it need to be referred to in the controller blueprint or something?