Custom Hand and Controller Meshes
Updated: Apr 29, 2025
Interaction SDK provides a generic set of Skeletal Meshes that can be used to represent hands and controllers in your project. For situations where you need to use custom meshes, you can assign your own meshes in the hand and controller rig components on your Pawn. This enables you to have the hands visible to the player match their character, making the experience more immersive.
Shown above: The default Unreal XR hand re-bound to the OpenXR hand skeleton is being used with Interaction SDK.Note: This guide assumes knowledge of how to model your custom mesh, bind it to a skeleton, and export it into Unreal.
Your custom hand or controller mesh must have an identical skeleton to the default Interaction SDK hand or controller mesh it is replacing. While the skeletons are not available as a download, they can be exported from within Unreal Editor to an FBX file which can be used in your 3D application of choice to skin your custom mesh.
Hand Skeleton
Controller Skeleton
Applying a custom hand mesh
The hand mesh displayed by Interaction SDK is determined by the Hand Visuals Components of the hand rigs on the Pawn. There are four hand meshes that Interaction SDK displays depending on the situation. If you want to display your custom mesh for each of these hand types, you must assign the mesh to the visuals component for each of the corresponding hand types. In addition, you must set the mesh for each hand, left and right.
Note: the hand mesh for the controller hand types is determined by the Controller Visuals Component of the controller rigs on the Pawn as opposed to the Hand Visual Component of the hand rigs.
| Hand Type | Description | Mesh Property |
|---|
Tracked Hand | This is the hand displayed when using hands only and the raw hand tracking data is being used for the hand’s joint location and orientations. | IsdkHandRigComponent > Interaction SDK > Hand Visuals Component > Interaction SDK > Tracked Hand Visual > Mesh > Skeletal Asset > Skeletal Mesh |
Synthetic Hand | This is the hand displayed when using hands only and the joint location or orientations have been altered by an interaction. | IsdkHandRigComponent > Interaction SDK > Hand Visuals Component > Interaction SDK > Synthetic Hand Visual > Mesh > Skeletal Asset > Skeletal Mesh |
Animated Controller Hand | This is the hand displayed when using hands and controllers and the hand’s pose is being driven by animation data from the Animation Blueprint. | IsdkControllerRigComponent > Interaction SDK > Controller Visuals Component > Interaction SDK > Animated Hand Mesh Component > Mesh |
Poseable Controller Hand | This is the hand displayed when using hands and controllers and the hand’s pose is being driven by runtime tracking data. | IsdkControllerRigComponent > Interaction SDK > Controller Visuals Component > Interaction SDK > Poseable Hand Mesh Component > Mesh > Skeletal Asset > Skeletal Mesh |
Applying a custom controller mesh
The controller mesh displayed by Interaction SDK is determined by the Controller Visuals Component of the controller rigs on the Pawn. You must set your custom mesh for both the left and right controllers using the following property:
IsdkControllerRigComponent > Interaction SDK > Controller Visuals Component > Interaction SDK > Controller Mesh Component > Mesh