Hand Model

Introduction

VIVE Wave™ XR plugin provides hand models in the Essence Package in the form of the Hand Model feature package.

Prefabs for both hands and the FBX files of default hand model are included in the feature package.

The imported hand model resources and samples are located in Assets/Wave/Essence/Hand/Model.

The prefabs, namely WaveHandLeft and WaveHandRight, consists of the HandMeshRenderer component and the hand models.

../_images/model7.png

These prefabs are setup in a way such that they can show the hand models with hand tracking data applied to the models. When using the prefabs with a camera rig, put them as sibling objects of the camera (i.e. the prefabs and the camera should be under the same parent object) as they are in the same tracking space.

The HandMeshRenderer will load the runtime model by default. If runtime model is not supported by the device, the default hand model in this prefab will be used instead. You can use your hand model by disabling Use Runtime Model.

../_images/model6.png

Runtime will detect your hand scale and it will always be applied to the runtime and default hand model. If you don’t want your hand model to be scaled, you can choose not to apply the scale by disabling Use Scale when Use Runtime Model is also disabled.

The HandManager component is required for the HandMeshRenderer. Please add one in the scene. See HandTrackingReferenceGuide and HowtoUse for more information.

How to Use

Wave Hand

VIVE Wave™ provides left hand and right hand prefabs, all you need to do is to place the prefab(s) to your scene.

In the prefab, VIVE Wave™ includes hand meshes with pre-defined bone names by default, customized models are also supported.

Using the default hand meshes as an example:

  1. Add Hand Manager to your scene.

    ../_images/model1.png
  2. Add the WaveHandLeft/WaveHandRight prefab(s) to your scene.

    ../_images/model2.png
  3. Modify the component options if needed:

    ../_images/model3.png
  1. Is left:

    Whether this component uses left hand poses. Thus this option on the WaveHandLeft prefab is checked, and the one on WaveHandRight is unchecked.

  2. Show Confidence As Alpha:

    When selected, the alpha value of the hand meshes will be updated according to the hand tracking confidence. (Selected by default.)

  3. Bones

    A mapping list between bones and hand joints, check if this mapping is correct.

How to Use customized hand model

We use WaveHandRight as a sample.

  1. Unpack Prefab Completely on WaveHandRight.

    ../_images/modelc1.png
  2. Replace WaveRightHand model to your customized model.

    ../_images/modelc2.png
  3. You will see all mappings from bones to poses are None.

    ../_images/modelc3.png
  4. Click “Clean Bones”

    ../_images/modelc4.png
  5. “Auto Detect Bones” button will show, select it.

    ../_images/modelc5.png
  6. Check if all mappings are as expected, manually update the binding if needed.

Notice

  1. Hand model and bones are expected to be designed with the following two requirements:

    • The tip of the fingers point towards the front
    • The back of the hand faces upwards and the palm faces downwards

    This is to ensure that the tracking data can be applied to the mesh through HandMeshRenderer correctly.

    Also check whether the fingers of your hand model is pointing towards the front direction of the 3d modeling tool you are using before you export the hand model as an FBX file.

    ../_images/model8.png
  2. The game objects and Hand joints binding must follow the naming rule below:

    Bone name Hand joint
    WaveBone_0 WVR_HandJoint_Palm
    WaveBone_1 WVR_HandJoint_Wrist
    WaveBone_2 WVR_HandJoint_Thumb_Joint0
    WaveBone_3 WVR_HandJoint_Thumb_Joint1
    WaveBone_4 WVR_HandJoint_Thumb_Joint2
    WaveBone_5 WVR_HandJoint_Thumb_Tip
    WaveBone_6 WVR_HandJoint_Index_Joint0
    WaveBone_7 WVR_HandJoint_Index_Joint1
    WaveBone_8 WVR_HandJoint_Index_Joint2
    WaveBone_9 WVR_HandJoint_Index_Joint3
    WaveBone_10 WVR_HandJoint_Index_Tip
    WaveBone_11 WVR_HandJoint_Middle_Joint0
    WaveBone_12 WVR_HandJoint_Middle_Joint1
    WaveBone_13 WVR_HandJoint_Middle_Joint2
    WaveBone_14 WVR_HandJoint_Middle_Joint3
    WaveBone_15 WVR_HandJoint_Middle_Tip
    WaveBone_16 WVR_HandJoint_Ring_Joint0
    WaveBone_17 WVR_HandJoint_Ring_Joint1
    WaveBone_18 WVR_HandJoint_Ring_Joint2
    WaveBone_19 WVR_HandJoint_Ring_Joint3
    WaveBone_20 WVR_HandJoint_Ring_Tip
    WaveBone_21 WVR_HandJoint_Pinky_Joint0
    WaveBone_22 WVR_HandJoint_Pinky_Joint1
    WaveBone_23 WVR_HandJoint_Pinky_Joint2
    WaveBone_24 WVR_HandJoint_Pinky_Joint3
    WaveBone_26 WVR_HandJoint_Pinky_Tip
  3. Check if the Quality Settings in Project Setting is set to Very Low and skin weight is set to 1.

    ../_images/settingL.png

    The model will have spikes/deformations as shown below.

    ../_images/spike.png

    Make sure your skin weight is set to 2 or above to avoid skinned mesh deformations.