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.
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.
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:
Add Hand Manager to your scene.
Add the WaveHandLeft/WaveHandRight prefab(s) to your scene.
Modify the component options if needed:
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.
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.)
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.
Unpack Prefab Completely on WaveHandRight.
Replace WaveRightHand model to your customized model.
You will see all mappings from bones to poses are None.
Click “Clean Bones”
“Auto Detect Bones” button will show, select it.
Check if all mappings are as expected, manually update the binding if needed.
Notice¶
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 facesdownwards
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.- The tip of the fingers point towards the
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 Check if the Quality Settings in Project Setting is set to Very Low and skin weight is set to 1.
The model will have spikes/deformations as shown below.
Make sure your skin weight is set to 2 or above to avoid skinned mesh deformations.
See Also¶
- Getting Started
- Wave XR Plugin Packages
- UnityXRHand