Customize 3D Hand Model

The plugin provides prefabs and 3d models to display detected hands as 3d models. It also supports to use your own model for display, if your model matches the assumptions and requirements below.

Note

You can compare your custom model with the model shipped in the plugin to make sure it’s setup correctly.

Requirements of Custom Model

The custom 3d model must be imported into Unity first to check the following requirements:

  1. Custom model must be rigged and contains SkinnedMeshRender component if you drag the model into the scene.
  2. Custom model must contain all the 21 keypoints defined in the SDK as joints. See Skeleton Mode for keypoints definition.
    • This includes 1 palm joint and 4 joints per finger. All these joints must be defined and rigged, since our script will modify rotation of these joints.
    • If more joints are defined, these extra joints will remain their origin rotation and never changed by script.
  3. The local axis of the finger joints must be same for all 21 keypoints within the model.
    • For all finger joints, there should be an axis that change finger open/close status.
    • For finger root joints of each finger, there should be another axis that swipe the whole finger left/right.
    • All the fingers must using same local axis, including thumb finger, even though thumb finger is facing different direction globally.

Use Custom Model

To use custom 3d model in Hand Tracking SDK, follow the steps below:

  1. Drag the model file into your scene.

  2. Attach ModelRenderer script to the root object of the model and click Auto detect properties in the Unity inspector.

    ../_images/unity_joints.png
  3. Make sure auto detected properites are correct. Fill the values manually if detection failed.

    1. Check Is Left for left hand and uncheck for right hand. If auto detection failed, please correct it and re-run auto detection.
    2. Check Initial Rotation of the model, so that palm is facing +z axis globally, fingers (except thumb) are facing +y axis globally.
    3. Check if Hand is the GameObject with SkinnedMeshRenderer.
    4. Check Nodes contains 21 keypoints in the same order as defined in Skeleton Mode.
  4. Setup other properties

    1. Check Show confidence as alpha if your shader supports transparency.
    2. Select collider type if necessary.