Meta Quest2のハンドトラッキングを実装する

# はじめに

### 概要
本記事では、Unityを用いたMeta Quest2用のVRコンテンツにおいて、Oculus Integrationを使用したハンドトラッキングをする手法について説明します。

### 本記事のゴール
下記のように、ハンドトラッキングが可能となります。
![ハンドトラッキング.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/f362a4da-6211-c6c0-1f22-2f733fd4eb02.gif)


# 動作環境
本記事内容を作成したのは下記環境です。
* Unity 2021.3.25f1
* Oculus Integration 55.0

# 作成方法
### 1\. Unityプロジェクトの作成～Oculus Integrationの追加
これについては、他の方が大変わかりやすく記事を書いてますので、そちらを参照にしてください。

https://qiita.com/uebo_tongull/items/1f32c21898daab920880


### 2\. OVRCameraRigを追加
　Projectビューから下記を検索し、Hierarchyに追加する。
　Assets/Oculus/VR/Prefabs/OVRCameraRig.prefab

![01_OVRCameraRig追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/9f7941ee-481d-de8a-8cc6-dc00d30508f4.png)


### 3\. Main Camera削除
　Hierarchyに初めからあったMain Cameraを削除する。

![02_MainCamera削除.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/5691f011-4021-f507-2835-35bcd8d3d9bf.png)


### 4\. OVRCameraRigのFloor Level設定
　OVRCameraRigにアタッチされているOVR ManagerのTracking Origin TypeをFloor Levelに変更する。

![03_FloorLevelに変更.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/fd6748c3-1b23-0e3d-d476-429eedbffa5a.png)


### 5\. Oculus Project Configの設定
　下記設定を開き、以下の設定を行う。
　Assets/Oculus/OculusProjectConfig.asset
　　General
　　　Hand Tracking Support：Controllers And Hands
　　　Hand Tracking Frequency：HIGH
　　　Hand Tracking Version：V2

![04_ハンドトラッキング設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/24368e58-f382-8369-2cc4-8673aa63048f.png)


### 6\. OVRInteraction追加
　Projectビューから下記を検索し、HierarchyのOVRCameraRigに追加する。
　Assets/Oculus/Interaction/OVRIntegration/Runtime/Prefabs/OVRInteraction.prefab

![10_OVRInteraction追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/c757b0c8-85d2-04a1-0b89-962ab91d204a.png)


### 7\. OVRHandPrefab追加
　Projectビューから下記を検索し、HierarchyのOVRCameraRig/TrackingSpaceのLeftHandAnchorとRightHandAnchorにそれぞれ追加する。
　Assets/Oculus/VR/Prefabs/OVRHandPrefab.prefab

![05_OVRHandPrefab追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/2000ccc5-5c04-3f42-d9b7-d0428a93a9fa.png)


### 8\. OVRHandPrefab設定
　OVR HandコンポーネントのHand TypeとOVR SkeletonコンポーネントのSkeleton Typeを下記のように設定する。

　OVR Hand
　　Hand Type：左手ならばHand Left、右手ならばHand Right

　OVR Skeleton
　　Skeleton Type：左手ならばHand Left、右手ならばHand Right

【左手】
![07_HandLeft設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/1f93e182-744c-18fc-6b5a-c5195feeaa7f.png)
【右手】
![06_HandRight設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/4ae1f6f5-11f8-a448-f2b8-9933977f690f.png)

　また、下記コンポーネントは不要であるため削除する。
　　・OVR Skeleton Renderer
　　・OVR Mesh
　　・OVR Mesh Renderer
　　・Skinned Mesh Renderer
　　
![08_OVRHandPrefab設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/722a4bf7-23b2-215f-b115-f2bd08768c79.png)


### 9\. OVRHands追加
　Projectビューから下記を検索し、HierarchyのOVRInteractionに追加する。
　Assets/Oculus/Interaction/OVRIntegration/Runtine/Prefabs/OVRHands.prefab
　　
![09_OVRHands追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3534594/566f9ac0-e061-7403-a5b2-f99f7cdfdd9d.png)


# おわりに
以上で、Oculus Integrationを使用したハンドトラッキングができるようになります。
ただし、VR空間内では手が貫通してしまうので、貫通しない方法について今後説明したいと思います。