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
- Download the VIVE Wave SDK for Unreal Engine. Link
- 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
- Create a new Blank project.
- Once your project is created copy the Plugins folder wave_<SDK_Version>_<UE_Version> \plugin\Plugins to your newly created project root directory.
- Launch your new <Project_Name>.uproject and open the plugins window.
- 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
Make sure the following options have been set in your project settings.
- Select “Start in VR”
- Set “Mobile MSAA” to 4x MSAA (Optional)
- Unselect “Support movable light CSM shader culling”
- Select “Forward Shading”
- Unselect “Separate Translucency”
- Set “Custom Depth-Stencil Pass” to Disabled
- Unselect “Custom Depth with TemporalAA Jitter”
- Unselect “Bloom”, “Ambient Occlusion”, “Ambient Occlusion Static Friction”, “Auto Exposure”
- Unselect “Motion Blur”
- Set “Anti-Aliasing Method” to MSAA
- Unselect “Mobile HDR” (We recommend you disable this option for better rendering performance) and Select “Mobile Multi-View”
- 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 .
- We recommend setting Minimum SDK Version as 25 and Target SDK Version as 29 . For more information, see Wave VR Version List .
- Wave SDK supports both armv7 and arm64 architectures .
You can find and customize the
Wave VR Settings
section of the project settings page.
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
- Create a Blueprint Class of type Pawn and call it VRPawn
- Set your preferred Tracking Origin. (We will use Floor Level in this example)
- Select the VR_Pawn Blueprint, and in the Details panel under the Pawn setting, set the Auto Possess Player from Disabled to Player 0.
- Add left and right Motion Controller Component to your VRPawn DefaultSceneRoot
- In your Motion Controller Component Details panel assign the corresponding Motion Source for both left and right hands. (Example for right Motion Controller)
- Add WaveVRControllerModel Component to motion MotionControllerR and MotionControllerL. Your VRPawn should be similar to the image below.
- In your WaveVRControllerModel Component Details panel assign the corresponding Device Type for both left and right controllers. (Example below for the right controller model)
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.
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 :
- DPad Left
- DPad Up
- DPad Right
- DPad Down
- Volume Up
- Volume Down
- Thumbstick (Joystick)
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.
You can test it by choosing your desired input and print debug string.
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
Unreal Input :
in your project settings under
, right click and type “
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
Create a sample map
Create a new Level and place your VR Pawn in the level
How to build your project
- Go to Edit-> Project Settings-> Platforms-> Android, accept Android SDK License. You can skip this step if you already accepted the SDK License.
- 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.
- On your device Go to Advanced and enable Install unknown apps.
- Launch your project on your device
- Once the build is completed, wear your headset and enjoy your content.