# Hand Model and Data Specification

## 1. The Initial Mode of HandDriver Hand Model

Starting from HandDriver 2.1.2, the initial mode of the hand model is as follows. The model can be viewed in the left-hand coordinate system or the right-hand coordinate system by 3D software, and the axis changes accordingly with the 3D software coordinate system. This model is only used as a reference.Model download address:

{% embed url="<https://drive.google.com/file/d/134jfD8fg_PbhhprJYBh5fwn1G2djnRuw/view?usp=drive_link>" %}

{% hint style="warning" %}
The initial mode, joint axis, and joint position of the hand model before HandDriver2.1.1 are not available.
{% endhint %}

## 2. The Joints and Axes of The Hand Model

The naming and axial direction of the joints of the above hand model in the initial mode are shown in the following figure, which is a left-hand coordinate system (local). The axial direction of each joint in the figure is only for your reference. Please refer to the above model file (fbx format) for the exact axial direction.

<figure><img src="https://2082502898-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8s1Ia6TfFovgyJ5JsDJZ%2Fuploads%2Fujft55NlaZErXOCa3wlB%2Fimage.png?alt=media&#x26;token=65ddc6cb-260e-42b1-8010-709450238a7a" alt=""><figcaption></figcaption></figure>

## 3. The Angle Value Description of HandDriver Data Page

### 3.1. After HandDriver 2.1.2

In the HandDriver data page, you can observe the pitch, yaw, and roll angle values of each joint. The positive and negative values of each angle are determined according to the left-hand coordinate system axis in the above figure. When the coordinate axis points to yourself, clockwise rotation is set as "positive". Therefore, currently in the data page, you will see:

* Pitch: Fingers bent towards the palm are negative
* Yaw:
  * The direction of spreading the ring finger and little finger is positive
  * The direction of spreading the index finger is negative
  * There is no yaw for the middle finger temporarily
  * The yaw value is negative when the thumb bends towards the palm
* Roll: The thumb bending towards the palm is positive, and there is no value for other fingers temporarily

<figure><img src="https://2082502898-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8s1Ia6TfFovgyJ5JsDJZ%2Fuploads%2Fzaz5Sd40KKAsk34sqvRl%2Fimage.png?alt=media&#x26;token=e7c04821-2b08-41f2-aa6e-fef5536bb774" alt=""><figcaption></figcaption></figure>

#### 3.1.1. The Maximum of Each Joint Angle

|    Joint   | Max |  Min |  PYR  |
| :--------: | :-: | :--: | :---: |
|  Thumb IP  |  0  |  -60 | Pitch |
|  Thumb MP  |  0  |  -60 | Pitch |
|  Thumb CM  |  10 |  -70 | Pitch |
|  Thumb CM  |  20 |  -35 |  Yaw  |
|  Index DIP |  0  |  -80 | Pitch |
|  Index PIP |  0  | -100 | Pitch |
|  Index MP  |  0  |  -80 | Pitch |
|  Index MP  |  0  |  -25 |  Yaw  |
| Middle DIP |  0  |  -80 | Pitch |
| Middle PIP |  0  | -100 | Pitch |
|  Middle MP |  0  |  -80 | Pitch |
|  Middle MP | 4.5 | -4.5 |  Yaw  |
|  Ring DIP  |  0  |  -80 | Pitch |
|  Ring PIP  |  0  | -100 | Pitch |
|   Ring MP  |  0  |  -80 | Pitch |
|   Ring MP  |  15 |   0  |  Yaw  |
|  Pinky DIP |  0  |  -80 | Pitch |
|  Pinky PIP |  0  | -100 | Pitch |
|  Pinky MP  |  0  |  -80 | Pitch |
|  Pinky MP  |  35 |   0  |  Yaw  |
|  Thumb CM  |  47 |   0  |  Roll |
|  Index MP  |  0  |   0  |  Roll |
|  Pinky MP  |  0  |   0  |  Roll |

#### 3.1.2. The Positive and Negative Angle Value in the Right-hand Coordinate System

For the right-hand coordinate system, the X-axis of the model is opposite to the left-hand coordinate system, and the Y and Z axes remain unchanged. Therefore, the roll angle mentioned above needs to be changed from "positive" to "negative", and other positive and negative signs remain unchanged.

{% columns %}
{% column %}

<figure><img src="https://2082502898-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8s1Ia6TfFovgyJ5JsDJZ%2Fuploads%2FOxEn3ZsQNHYk2pwI8baL%2Fimage.png?alt=media&#x26;token=b8a6436d-da3b-4151-9575-a706656ce05e" alt="" width="277"><figcaption></figcaption></figure>

Right-hand coordinate system - the axis of the left thumb CM
{% endcolumn %}

{% column %}

<figure><img src="https://2082502898-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8s1Ia6TfFovgyJ5JsDJZ%2Fuploads%2FbPcULMHYvvh8KCrx09RQ%2Fimage.png?alt=media&#x26;token=c71f5c07-e301-4c66-8d47-301ad1f3288f" alt="" width="277"><figcaption></figcaption></figure>

Right-hand coordinate system - the axis of the left middle finger PIP
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}

<figure><img src="https://2082502898-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8s1Ia6TfFovgyJ5JsDJZ%2Fuploads%2Fyu3RCNbVLrYj1VyQxuUN%2Fimage.png?alt=media&#x26;token=f0aa9e7e-3343-44a5-8fff-11553af569d9" alt="" width="277"><figcaption></figcaption></figure>

Right-hand coordinate system - the axis of the right middle finger PIP
{% endcolumn %}

{% column %}

<figure><img src="https://2082502898-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8s1Ia6TfFovgyJ5JsDJZ%2Fuploads%2Fbw1Zo9LbpQcr2AjsM6l8%2Fimage.png?alt=media&#x26;token=a0e38de6-25e4-4bb3-b9c8-a97338fc7fcb" alt="" width="277"><figcaption></figcaption></figure>

Right-hand coordinate system - the axis of the right thumb CM
{% endcolumn %}
{% endcolumns %}

### 3.2. Before HandDriver 2.1.1

The angle value of data page for HandDriver before versions 2.1.1 refers to the right-hand coordinate system.

* Pitch: Fingers bent towards the palm are negative
* Yaw:
  * The direction of spreading the ring finger and little finger is positive
  * The direction of spreading the index finger is positive
  * There is no yaw for the middle finger temporarily
  * The yaw value is positive when the thumb bends towards the palm
* Roll: The thumb bending towards the palm is negative, and there is no value for other fingers temporarily
* The absolute value of the maximum value of each joint angle is the same as the 2.1.2 version, and the positive and negative signs are based on the above rules

## 4. HandDriver Data Broadcasting, Data Unicasting, and Quaternion

In HandDriver Settings - Data Streaming, data is transmitted externally through three methods: data broadcasting, data unicasting, and quaternion.

### 4.1. Data Broadcasting and Data Unicasting

* Transmit the angle data of each joint, and its value is the same as the value in the HandDriver data page according to the left-hand coordinate system.
* When using the right-hand coordinate system, the roll angle should be changed to "negative".
* When using plugins such as Unity/UE/MotionBuilder, you can adjust the axis in the plugin without worrying about positive or negative.

### 4.2. Quaternion

Transmit quaternion data of each joint according to the right-hand coordinate system.

## 5. The Joint Position Data of Initial Hand Mode

The initial joint position data of the hand model is calculated based on the right-hand coordinate system.

|    Joint Name    | Joint Name | Joint Number |
| :--------------: | :--------: | :----------: |
| finger\_index\_0 |     MP     |       1      |
| finger\_index\_1 |     PIP    |       2      |
| finger\_index\_2 |     DIP    |       3      |
| finger\_thumb\_0 |     CM     |       1      |
| finger\_thumb\_1 |     MP     |       2      |
| finger\_thumb\_2 |     IP     |       3      |

{% file src="<https://2082502898-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8s1Ia6TfFovgyJ5JsDJZ%2Fuploads%2FGMarWfD9J6Xe3IXRsf2B%2FHandDriver%20Initial%20Hand%20Mode%20Joint%20Position.txt?alt=media&token=59e2c921-b3d9-4d85-8ece-fd548b6bc28e>" %}
