This section assumes you know the hardware requirements and features of the Vive Hand Tracking SDK. Please read Vive Hand Tracking SDK Overview section before this section.

Sample level is included in the plugin. Please refer to Plugins/ViveHandTracking/Content/ViveHandTrackingMap.umap for sample map.

  • If you have installed older version of Vive Hand Tracking SDK, please completely remove the files first.
  • Minimum supported Unreal version is 4.20.
    • WaveVR may need newer Unreal version. If you plan to use WaveVR with Vive Hand Tracking SDK, use Unreal version required by WaveVR.
    • Plugin is tested on 4.20 for all platforms.

Unpack Plugin

Vive Hand Tracking SDK provides an Unreal plugin as two zip files: Unreal Project and Native Binary for C++ & Unreal The first zip contains Unreal plugin (levels, blueprints, build sciprts and etc.) in project folder, the second zip contains native binaries in Unreal engine folder.

Follow the steps below to install the plugin in your project:

  1. Extract Native Binary for C++ & Unreal in Engine/Source/ThirdParty folder inside your Unreal Engine folder. This will create UE_4.20/Engine/Source/ThirdParty/ViveHandTracking folder.

  2. Extract Unreal Project in the root folder of your Unreal project. This will create Plugins/ViveHandTracking folder in your Unreal project folder.

  3. Rebuild your C++ project files. The plugin modules and source code will appear in directories under your project’s directory in the project file.

  4. Compile your game project normally. Unreal Build Tool will detect the plugins and compile them as dependencies to your game.

  5. Launch your Unreal editor, open Plugins Editor (Window -> Plugins menu). Enable ViveHandTracking plugin in your Editor.

  6. Restart your Unreal editor to take effect.

Based on different platform, process of setup may be different. Please refer to the sections below to setup each platform you use.

After the setup is complete, please refer to Usage section for how to use the plugin with sample level or your existing level.



SteamVR disables camera by default. This means a fresh installed SteamVR cannot use Vive Hand Tracking SDK without manual setup. See Camera Setup in SteamVR for how to setup SteamVR and check camera availability before using Vive Hand Tracking SDK.

  • SteamVR plugin must be enabled.

  • The library DLL requires Microsoft Visual C++ Runtime 2015

  • Make sure to test camera frame rate in SteamVR settings before start application.

WaveVR (Vive Focus)

  • You need to enable WaveVR plugin.

    • WaveVR may require newer version (than 4.20) of Unreal Engine, use the one required by WaveVR.
  • Camera permission declaration and request are handled in the plugin using Unreal API.

  • WaveVR only supports ARMv7 binaries.

  • See Selecting Android Binary section for selecting binaries (default is WaveVR).

Android Phones

  • The native library is tested on Pixel.
  • Camera permission declaration and request are handled in the plugin using Unreal API.
  • Both ARMv7 and ARMv8 binaries are provided in Vive Hand Tracking SDK. The binaries are selected by Unreal based on the architecture you select during package.
  • The app must be in landscape left orientation.
  • See Selecting Android Binary section for selecting binaries (default is WaveVR).

Selecting Android Binary

Vive Hand Tracking SDK provides different binaries on Android for Android phones and WaveVR platform. This is due to using different APIs to get camera frames, which requires different native libraries.

By default, Vive Hand Tracking SDK selects WaveVR platform for your build. If you need to build for Android phones or need to switch between two platforms, please follow the instructions below.

The platform selection is controlled by the Plugins/ViveHandTracking/Source/ViveHandTracking/ViveHandTracking.Build.cs script as highlighted below. Change useWVR from true to false selects Android phone platform.

else if (Target.Platform == UnrealTargetPlatform.Android)
    bool useWVR = true;
    if (useWVR)
        AdditionalPropertiesForReceipt.Add(new ReceiptProperty("AndroidPlugin", Path.Combine(ModuleDirectory, "ViveHandTracking_WVR_UPL.xml")));
        PublicAdditionalLibraries.Add(ThirdPartyPath + "/Android/armeabi-v7a/");
        AdditionalPropertiesForReceipt.Add(new ReceiptProperty("AndroidPlugin", Path.Combine(ModuleDirectory, "ViveHandTracking_UPL.xml")));
        PublicAdditionalLibraries.Add(ThirdPartyPath + "/Android/armeabi-v7a/");
        PublicAdditionalLibraries.Add(ThirdPartyPath + "/Android/arm64-v8a/");


useWVR should, and only should, be true when WaveVR plugin is enabled.