Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode

Starting from version v2.1.0, the SenseGlove Unreal Engine Plugin requires the XR_EXT_hand_tracking OpenXR extension to function. If you are deploying your immersive 3D VR application to your VR headset in standalone mode, enabling XR_EXT_hand_tracking support, requires additional plugins and settings depending on the HMD's vendor or model.

Enabling OpenXR Plugin and Disabling OpenXRHandTracking Plugin

Regardless of the type or vendor of the HMD you have in mind for development or deployment purposes, the OpenXR plugin is required as a prerequisite. Also, ensure the OpenXRHandTracking is disabled as it conflicts with the SenseGlove Unreal Engine Plugin since both implement the same XR_EXT_hand_tracking OpenXR extension.

Though enabling the SenseGlove Unreal Engine Plugin should enable the OpenXR plugin automatically, it is recommended to ensure this plugin is enabled, and most importantly OpenXRHandTracking is disabled, by navigating to Edit > Plugins in the Unreal Editor menus.

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - Enabling OpenXR and OpenXRHandTracking Plugins

The OpenXRHandTracking plugin implements the XR_EXT_hand_tracking OpenXR extension.

Meta Quest

To set up XR_EXT_hand_tracking support on Meta Quest HMDs in Standalone mode, depending on your project requirements (e.g. whether you rely on the Meta XR plugin or not), additional setup steps are required.

important

Although, the SenseGlove plugin does not require the Meta XR plugin to function, and relying solely on the OpenXR and OpenXRHandTracking plugins would suffice for functional glove data retrieval using OpenXR, hand-tracking as a fallback mechanism won't work on Android without the Meta XR plugin availability.

Meta XR Plugin

caution

Please note that enabling the Meta XR plugin alongside the SenseGlove plugin will result in crashes or unexpected behavior. Meta XR plugin compatibility is being worked on and might be supported in the future.

HTC VIVE

To set up XR_EXT_hand_tracking support on HTC VIVE HMDs in Standalone mode, additional plugins or configuration steps are required.

OpenXRViveTracker Plugin

Unlike the PCVR-mode on Windows, the OpenXRViveTracker plugin is not required on Android since it only provides an implementation of the XR_HTCX_vive_tracker_interaction OpenXR extension which is necessary when we use VIVE Trackers on Windows or we emulate the VIVE Wrist Trackers as VIVE Trackers on Windows. Instead, we require the XR_HTCX_vive_wrist_tracker_interaction OpenXR extension to be able to use VIVE Wrist Trackers on Android, which is provided by the ViveOpenXR plugin. So, you can safely ignore enabling this plugin for Android standalone deployments.

ViveOpenXR Plugin

To enable VIVE Wrist Trackers support ensure the ViveOpenXR plugin is enabled by navigating to Edit > Plugins in the Unreal Editor menus. This plugin should be enabled, or wrist tracking won't function on VIVE devices at all.

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - Enabling ViveOpenXR Plugin

The ViveOpenXR plugin implements the XR_HTCX_vive_wrist_tracker_interaction OpenXR extension.

important

Without the ViveOpenXR plugin deploying an immersive 3D VR application to your HTC VIVE in Standalone mode won't be possible, whether you enable bStartInVR, or not. Without it your app will be deployed and recognized as a 2D app.

By default, the ViveOpenXR plugin settings located in Edit > Project Settings > Plugins > Vive OpenXR look something like these:

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - Default ViveOpenXR Plugin Settings

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - Default ViveOpenXR Plugin Settings

The following settings control the availability of hand-tracking when the ViveOpenXR plugin is enabled:

  • Enable Hand Interaction: This enables the hand interactions with the OpenXR hand interaction extension XR_HTC_hand_interaction. Changing this setting will prompt you to restart the engine to apply the new settings. This setting should be enabled.

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - ViveOpenXR Plugin Settings - Enable Hand Interaction Editor Restart Prompt

  • Use HTC Hand Interaction: This selects which OpenXR hand interaction extension to use. If enabled, XR_HTC_hand_interaction will be used, effectively breaking SenseGlove glove and hand-tracking data output. If disabled, XR_EXT_hand_interaction will be used, which is compatible with the SenseGlove Unreal Engine Plugin. Changing this setting will prompt you to restart the engine to apply the new settings. This setting should be disabled.

The following settings control the availability of wrist-tracking when the ViveOpenXR plugin is enabled:

  • Enable Wrist Tracker: This option controls the XR_HTC_vive_wrist_tracker_interaction OpenXR extension. If enabled, in turn, it enables the use of HTC Wrist Tracker interaction profiles in OpenXR. Changing this setting will prompt you to restart the engine to apply the new settings.

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - ViveOpenXR Plugin Settings - Enable Wrist Tracker Editor Restart Prompt

  • Enable Ultimate Tracker (Beta): This option controls the XR_HTC_path_enumeration and XR_HTC_vive_xr_tracker_interaction OpenXR extensions. If enabled, in turn, they enable the use of HTC Xr Tracker interaction profiles in OpenXR. Changing this setting will prompt you to restart the engine to apply the new settings.

  • Enable Ultimate Tracker Pogo Pin Inputs (Beta): Enables or disables the input options for Unreal's Enhanced Input System. Changing this setting will prompt you to restart the engine to apply the new settings.

The following setup demonstrates a functional immersive 3D VR application with the minimum ViveOpenXR required features enabled to make it compatible with the SenseGlove Unreal Engine Plugin:

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - ViveOpenXR Plugin Settings - The SenseGlove Unreal Engine Compatible Settings

Enabling XR_EXT_hand_tracking OpenXR Extension on VR Headsets in Standalone Mode - ViveOpenXR Plugin Settings - The SenseGlove Unreal Engine Compatible Settings

SenseGlove Wrist Tracking Settings

Once you have set up everything, it's time to adjust the SenseGlove Wrist Tracking Settings inside the project-wide plugin's settings. For detailed information, please visit the Wrist Tracking Hardware and HMD auto-detection configuration section as well.