Skip to main content
Version: 21 Aug 2024

Hand Tracking

Support for common OpenXR features is provided by Epic's own OpenXR plugins, which are included in Unreal Engine 5.

Support for hand joint tracking is provided by Epic's OpenXRHandTracking plugin.

Note that enabling OpenXRHandTracking plugin will only enable joint tracking. See Hand Interaction for information about how to enable gesture detection in your project.

Use the plugin browser (Edit menu -> Plugins from the UE editor window) to enable both plugins to enable hand tracking in your project.

Make sure that you declare the com.magicleap.permission.HAND_TRACKING permission in your apps manifest. This can be done by adding extra permissions in the APK packaging settings in Project Settings.
See this page for details- Permissions

When the plugins are enabled, your hands will be detected as motion controllers by Unreal.

See Unreal documentation on motion controllers for more details-
https://dev.epicgames.com/documentation/en-us/unreal-engine/motion-controller-component-setup-in-unreal-engine

In a blueprint, you can use a 'Get Motion Controller Data' node to get joint pose data.

You can use the blueprint function library provided by Epic's XRVisualization plugin to render a simple debug visualization of you hand joints.

This blueprint uses the 'Render Motion Controller' function provided by the visualization library to render hand joints.

Note that joints do not appear to be offset from your hands in the HMD.

Joint data is surfaced in the HandKeyPositions and HandKeyRotations fields of the FXRMotionControllerData structure that is output.

Example blueprint that renders an axis widget at each right hand joint-

The index of each value corresponds to the EHandKeypoint enum.

IndexJoint
0Palm
1Wrist
2ThumbMetacarpal
3ThumbProximal
4ThumbDistal
5ThumbTip
6IndexMetacarpal
7IndexProximal
8IndexIntermediate
9IndexDistal
10IndexTip
11MiddleMetacarpal
12MiddleProximal
13MiddleIntermediate
14MiddleDistal
15MiddleTip
16RingMetacarpal
17RingProximal
18RingIntermediate
19RingDistal
20RingTip
21LittleMetacarpal
22LittleProximal
23LittleIntermediate
24LittleDistal
25LittleTip