Please Select Your Location
Australia
Österreich
België
Canada
Canada - Français
中国
Česká republika
Denmark
Deutschland
France
HongKong
Iceland
Italia
日本
Korea
Latvija
Lietuva
Lëtzebuerg
Malta
المملكة العربية السعودية (Arabic)
Nederland
New Zealand
Norge
Polska
Portugal
Russia
Saudi Arabia
Southeast Asia
España
Suisse
Suomi
Sverige
台灣
Ukraine
United Kingdom
United States

Getting Started with Wave for Unreal Developers


What will you learn ?

You will learn to use the VIVE Wave SDK to create immersive Wave content that runs on Android devices such as VIVE Focus 3 and VIVE Flow .

Note : In this tutorial we will use Unreal Engine 4.26 and Vive Focus 3 .


What is the VIVE Wave SDK ?

The Wave SDK is required for developers to build content for VIVE Standalone headset such Vive Focus, Vive Focus Plus and Vive Focus 3.

VIVE Wave is an API and runtime that enables developers to create VR content for Android and offers an open interface enabling interoperability between numerous mobile VR headsets and accessories, supporting mainstream game engines such as Unreal Engine and Unity Engine.


Setup Your Unreal Engine Project

  1. Download the VIVE Wave SDK for Unreal Engine. Link
Screenshot 2022-03-21 135942.png
  1. Unzip wave_<SDK_Version>_<UE_Version>.zip

Please note that wave_<SDK_Version>_<UE_Version>.zip is a sample project with the WaveSDK.

The plugin.uproject contains different VR samples that can help you get started with the VIVE Wave SDK.

You can find the Wave plugin under wave_<SDK_Version>_<UE_Version>\plugin\Plugins .

  1. Create a new Blank project.
Screenshot 2022-03-21 140051.png
  1. Once your project is created copy the Plugins folder wave_<SDK_Version>_<UE_Version> \plugin\Plugins to your newly created project root directory.
Screenshot 2022-03-21 140114.png
  1. Launch your new <Project_Name>.uproject and open the plugins window.
Screenshot 2022-03-21 140215.png
  1. Under project->Virtual Reality you will find Wave VR plugi n. If the plugin is not enabled by default please enable it and make sure that VIVE Wave™ is the only VR plugin enabled. Turn off all other VR plugins (especially OculusVR and SteamVR) to prevent conflicts. You can do this in <EditorMenu>->Edit ->Plugins->VirtualReality
Screenshot 2022-03-21 140242.png


Project Settings

Make sure the following options have been set in your project settings.

  1. Select “Start in VR”
Screenshot 2022-03-21 140301.png

  1. Set “Mobile MSAA” to 4x MSAA (Optional)
Screenshot 2022-03-21 140318.png

  1. Unselect “Support movable light CSM shader culling”
Screenshot 2022-03-21 140339.png

  1. Select “Forward Shading”
Screenshot 2022-03-21 140353.png

  1. Unselect “Separate Translucency”
Screenshot 2022-03-21 140520.png

  1. Set “Custom Depth-Stencil Pass” to Disabled
Screenshot 2022-03-21 140536.png

  1. Unselect “Custom Depth with TemporalAA Jitter”

Screenshot 2022-03-21 140600.png

  1. Unselect “Bloom”, “Ambient Occlusion”, “Ambient Occlusion Static Friction”, “Auto Exposure”
Screenshot 2022-03-21 140620.png

  1. Unselect “Motion Blur”
Screenshot 2022-03-21 140636.png

  1. Set “Anti-Aliasing Method” to MSAA
Screenshot 2022-03-21 140655.png

  1. Unselect “Mobile HDR” (We recommend you disable this option for better rendering performance)  and Select “Mobile Multi-View”
Screenshot 2022-03-21 140716.png

  1. Refer to these Android build Settings. For more information, see Setup Android SDK and NDK . For JDK, it is recommended to install jdk1.8.0 .
Screenshot 2022-03-21 140741.png

  1. We recommend setting Minimum SDK Version as 25 and Target SDK Version as 29 . For more information, see Wave VR Version List .
Screenshot 2022-03-21 140832.png

  1. Wave SDK supports both armv7 and arm64 architectures .
Screenshot 2022-03-21 140849.png



Wave Settings

You can find and customize the Wave VR Settings under the Plugins section of the project settings page.

Screenshot 2022-03-21 140927.png

AMC Mode supports 3 modes: Off, UMC and Auto. For more information, see Adaptive Motion Compositor (AMC) .
Enable Eye Tracking : Select this option to enable eye tracking on a device that supports it.
Enable Render Mask : Select this option to activate the RenderMask. For more information, see Render Mask .
Foveated Rendering Mode supports 3 modes: Default, Disable and Enable. You can customize the peripheral FOV and quality options when Foveated Rendering Mode is set to Enabled . For more information, see FoveatedRendering .
Time Warp Stabilized Mode : Select this option to reduce jitter under specific rendering conditions. For more information, see WaveVR Time Warp Stabilization .
Enable RenderDoc : Select this option only when you need to do In-App capture with RenderDoc for analyzing the drawing process. For more information, see RenderDoc .
Direct Preview : This section contains settings required by Direct Preview . For more information, see DirectPreview .
Enable Adaptive Quality : Select this option to reduce power consumption and improve performance under different workloads. For more information, see AdaptiveQuality .
AQ Mode supports 3 modes: Quality Oriented, Performance Oriented and Customization. Select a mode based on whether you prefer better quality, performance or customizability. For more information, see AdaptiveQuality .
Enable Hand Tracking : Select this option to modify the AndroidManifest.xml for using the Wave Hand Tracking feature. For more information, see Hand .
Enable Tracker : Select this option to modify the AndroidManifest.xml for using the Wave Tracker feature. For more information, see Tracker .



How to set up VRPawn

  1. Create a Blueprint Class of type Pawn and call it VRPawn
Screenshot 2022-03-21 140943.png

  1. Set your preferred Tracking Origin. (We will use Floor Level in this example)
Screenshot 2022-03-21 141000.png

  1. Select the VR_Pawn Blueprint, and in the Details panel under the Pawn setting, set the Auto Possess Player from Disabled to Player 0.
Screenshot 2022-03-21 141026.png

  1. Add left and right  Motion Controller Component to your VRPawn DefaultSceneRoot
Screenshot 2022-03-21 141047.png

  1. In your Motion Controller Component Details panel assign the corresponding Motion Source for both left and right hands. (Example for right Motion Controller)
Screenshot 2022-03-21 141112.png

  1. Add WaveVRControllerModel Component to motion MotionControllerR and MotionControllerL. Your VRPawn should be similar to the image below.
Screenshot 2022-03-21 141131.png

  1. In your WaveVRControllerModel Component Details panel assign the corresponding Device Type for both left and right controllers. (Example below for the right controller model)
Screenshot 2022-03-21 141148.png



How to set up controller input

The VIVE Wave™ plugin provides a lot of ways to access the controller button events in C++ and Blueprint.

Button states:

Press: Press down, press up, pressed and released.

Touch: Touch down, touch up, touched and untouched.

Axis: When touching a button, the axis values of the touch point on the button.

Supported buttons :

  1. Menu
  1. Grip
  1. DPad Left
  1. DPad Up
  1. DPad Right
  1. DPad Down
  1. Volume Up
  1. Volume Down
  1. A
  1. B
  1. X
  1. Y
  1. Touchpad
  1. Trigger
  1. Thumbstick (Joystick)
  1. Parking

Wave Input Events :

In your VRPawn Blueprint Event Graph , right click and type “ wave input event ” and you will get a list of all the available Wave input events.

Screenshot 2022-03-21 141214.png

You can test it by choosing your desired input and print debug string.

Screenshot 2022-03-21 141247.png

Wave Input APIs :

Another way is to use APIs to get buttons’ press/touch states. In your VRPawn Blueprint Event Graph , right click and type “ WaveVR input ” to see APIs GetInputButtonAxis , IsInputButtonPressed and IsInputButtonTouched

Screenshot 2022-03-21 141306.png
Screenshot 2022-03-21 141334.png


Unreal Input :

Define your Action and Axis Mapping in your project settings under Engine->Input

Screenshot 2022-03-21 141438.png

In your VRPawn Blueprint Event Graph , right click and type “ action event ” or “axis event” and you will get a list of all the available input events you created. You can use these events the same way as you would use the Wave Input Events .

Screenshot 2022-03-21 141457.png


Create a sample map

Create a new Level and place your VR Pawn in the level

Screenshot 2022-03-21 141516.png


How to build your project

  1. Go to Edit-> Project Settings-> Platforms-> Android,  accept Android SDK License. You can skip this step if you already accepted the SDK License.
Screenshot 2022-03-21 141531.png

  1. Connect your VIVE Focus 3 via USB cable to your computer. Once connected you should select File Transfer as USB Mode from your device lobby.
Screenshot 2022-03-21 141557.png

  1. On your device Go to Advanced and enable Install unknown apps.
Screenshot 2022-03-21 141633.png

  1. Launch your project on your device
Screenshot 2022-03-21 141650.png

  1. Once the build is completed, wear your headset and enjoy your content.