InstantVR

To use InstantVR you need an environment first. The minimum is a flat terrain with a directional light, but you can make it as complex as you want with lots of meshes, rigidbodies and colliders. You are only bound by the limits of Unity and the computer used to drive the game.

You should not include a camera or other first or third person objects in your game. This is fully handles by InstantVR.

Then you should include the InstantVR package which you can download from this site.

To complete the scene you should drag one of the prefabs from the folder InstantVR into your scene.

Now you can press play and walk around your wonderful environment.

Extensions can be added to every GameObject with an InstantVR script attached to extend the tracking functionality. Extensions will typically implement support for specific input devices like the Oculus Rift or Microsoft Kinect, but also include extensions for animations or networking.

Multiple extensions can be added to a single InstantVR gameObject. The extensions which will be used at play time depends on:

  • availability: is the hardware associated with the extension present?
  • priority: the extensions with the highest priority are chosed over lower priority extensions.
  • tracking: is the hardware currently tracking?

In the example below, we have added 5 extensions: Oculus Rift, Leap Motion, Kinect 2, Traditional (Xbox 360/mouse/keyboard) and Animator.

Dynamic behaviour

During gameplay with all supported hardware available the behaviour is as follows:

  • Oculus Rift will always be used for head tracking. It has the highest priority and is always tracking.
  • Leap Motion is used for tracking the hands when the hands are in the field of view of the Leap Motion camera. When the hands are outside the view they cannot be tracked by the Leap Motion so it will not be used then. Hand tracking will drop down to the next hand tracker in the hierarchy
  • Kinect 2 supports tracking of all 6 tracking targets, but in this case it will not be used for head tracking, because the Oculus Rift has a higher priority. It will be used for hand tracking when the hands are outside the view of the Leap Motion camera. All other body parts are tracked by Kinect 2 all the time.
  • Traditional input is can be used for walking around
  • The animator is not used, as all targets are tracked by Kinect.

When the game is played with just the Oculus Rift available, it will behave like this:

  • Oculus Rift will always be used for head tracking. It has the highest priority and is always tracking.
  • Leap Motion and Kinect 2 are not available, so will not be used
  • Traditional input is can be used for walking around
  • The animator is used to move all targets except the head, which is tracked by the Oculus Rift. This results in leg and arm movements during walking and rotation movements.

Traditional and Animator are typically used when no or limited VR hardware are available and it is good practice to have them as the lowest 2 priority spots as it is shown here.

During play mode in the editor it is possible to view which extensions are currently used for each target by switching to debug view:

Extensions_debug

In this case we have the extensions for Oculus Rift, Razer Hydra, Microsoft Kinect, the traditional and animator extensions configured. In the debug view of InstantVR you can see the various controllers used: Rift for the Head Target, Hydra for the Hand Targets and Kinect for the Hip and Feet Targets.

The following video demonstrates the behaviour:

Controllers

Every extension implements one or more controllers for targets. The Oculus Rift extension has one controller: the Rift Head Controller which is used solely for the head target. The Leap Motion and Razer Hydra extensions just have a Hand Controller which is used for the left and right hands, while the Kinect extensions have controllers for every target as they can track the full body.

If we look into the Targets themselves we can see the controllers currently associated with that target. Here we have an example of the Head Target:

HeadControllers

You can see the Rift and Kinect Head Controllers. Like the priority for extensions the order in which the controllers appear determines the priority. This order is in fact controlled by the ordering of the extensions. So you need to reorder the extension when you want to change the priority of the Head Controllers. Direct changes in the order of controllers will be undone automatically.

Note: the controller priorities and positions are not updated when the inspector is in Debug mode. This is a known issues and is reported to Unity. The priorities and ordering will be corrected when the inspector is switched back to Normal mode.

It is possible to disable specific controllers. For instance: if you do not want to use Kinect Head tracking when the Rift is not available, but you do want to use Kinect for the rest of the body, you can disable the Kinect Head Controller. This is done by disabling the IVR_Kinect Head by unchecking the script in the example above. If you want to disable all controllers of an extension, it is better to remove the extension altogether.

InstantVR Free

The free version of InstantVR supports the following input controllers: Oculus Rift HTC Vive (headset only) Samsung Gear VR Google Cardboard Game controllers Keyboard/mouse Usage To use InstantVR you need an environment first. The minimum is a flat terrain with a directional light, but you can make it as complex as you want with lots...

Read more ...

InstantVR Advanced

The advanced version of InstantVR supports the following input controllers: Oculus Rift Oculus Touch HTC Vive / SteamVR Samsung Gear VR Google Cardboard Razer Hydra Microsoft Kinect Leap Motion Game Controllers Keyboard/mouse Additional features Interaction, Event System, UI Usage To use InstantVR you need an environment first. The minimum is a flat terrain with a...

Read more ...

InstantVR Edge

Devices The Edge version of InstantVR supports the following input controllers: Oculus Rift Oculus Touch HTC Vive / SteamVR Samsung Gear VR Google Cardboard Razer Hydra Microsoft Kinect Leap Motion Game Controllers Keyboard/mouse Additional features Interaction, Event System, UI Full physics Networking/Multiplayer Usage To use InstantVR you need an environment first. The minimum is a...

Read more ...

Release Notes

Version 3.9.0 Unity 2018.3 compatibility Migrated SteamVR Extension to OpenVR Oculus SDK is no longer included, Oculus Integration should be downloaded from the Asset Store now Fixed grabbing stops working in specific cases Tracking is now always aligned to the avatar at start Leap Motion: enabled Thumbs-up gesture Version 3.8.13 (Edge) fixed grabbing objects with...

Read more ...

Function descriptions

 

Read more ...

Known issues and limitations

Known issues and limitations in Instant VR v3 The following issues are known to the current version of InstantVR: In InstantVR v3, the priority of the controllers is not updated from the extensions priority when the inspector is in Debug Mode. This is an Unity issue which has been reported. The ordering will be corrected...

Read more ...

Setup

Including the avatar The easiest way to setup a VR implementation is to include one of the prefabs offered in the package. Alternatively you can use your own avatar in the scene. This page will explain what is needed to use your own avatar. Requirements for the avatar You should ensure that your avatar has...

Read more ...

PlayMaker

Prerequisites InstantVR PlayMaker is supported in InstantVR Advanced version 3.3 and higher. PlayMaker The implementation supports PlayMaker version 1.7.8. Other versions have not been tested yet. Actions Character Move Moves the character around Game Object the Game Object of the character which should be moved. The Game Object should have the InstantVR script attached. Move...

Read more ...

Photon Networking

Instant VR Edge supports Photon networking for multi user environments, but it does not include the Photon package itself, so you have to import it manually. Setup You have various options for Photon: Photon Unity Networking Free. Supports up to 20 concurrent users (CCU). Photon PUN+ ($99). Supports up to 100 concurrent users (CCU). Photon...

Read more ...

Interaction, EventSystem and UI

Unity provides an great event system which can be used to interact with a scene. This solution is particularly useful for UI interfaces. InstantVR Advanced, Edge (v3.7 and up) provide extensive support for the event system using the Interaction module. The interaction module is supported for head gaze, finger pointing and finger touching. This means...

Read more ...

Controller Input

In InstantVR you can access controller input in a device-independent way. In this way you can use input from VR controllers or game controllers with the same code. You can look at the InputHandler.cs script, found in Assets/InstantVR/Demo/GroceryStore/Scripts for an example of the use of the controller input code. Initialization You can get access to...

Read more ...