【Meta Quest2 × Unity】 Meta Quest2でハンドトラッキングをやってみた (前半)

### 概要

今回は、UnityとMeta Quest2を使って、ハンドトラッキングを試してみようと思います！
少し内容が長くなるため、前半・後半に分けて記事をまとめる予定です。

(各記事に記載する内容は下記の予定です。)
- 前半
    - Oculusアプリで開発モードに設定
    - Unityでのプロジェクト作成
    - ハンドトラッキングをする上で必要なパッケージのインポート・設定
- 後半 [(こちら)](https://qiita.com/uebo_tongull/items/dfa329663eb3d0f94fc0)
    - 開発手順
    - ビルド・MetaQuest2での確認方法

### 動作環境

- Unity 2021.3.8f1
- Oculus XR Plugin：3.0.2
- Oculus Integration：42.0
- XR Plugin Management：4.2.1

### 事前準備

今回、このハンドトラッキングを行う上で、先にスマートフォンにOculusアプリをインストールして**開発者モード**にする必要があります。

#### 1. 開発モードにしよう！
- スマートフォンにインストールしたOculusアプリの右下の「メニュー」をタップし、「デバイス」をタップ。
    <img width="400" alt="image_01" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/3134b165-dae8-a2f5-400c-a6b785b014c4.jpeg">

- 接続したいQuest2を選択して接続しているのを確認してから、
画面下の「ヘッドセットの設定」の中に「開発者モード」があるのでタップで開く。
    <img width="400" alt="image_02" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/c4ab9eb1-91a1-cf54-b055-ad67a043981e.jpeg">


- 開発者モードの画面が開いたら、設定をオンにする。
    <img width="400" alt="image_03" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/208b3eb7-a49f-81ed-9baa-bc6eeb363999.jpeg">

- その後、Quest2をUSBケーブルでPCと接続すると、Quest2の画面内に「USBデバッグを許可しますか？」という表示がされるので「許可」を選択すればOK！

### 作業内容

#### 1. Unity でプロジェクトを作成しよう！
Unity Hubより、新規プロジェクトを「3D」テンプレートで作成します。
その後「File」 > 「Build Settings」に移動し、下記の設定を行ってください。

:::note warn
先に空プロジェクトの状態で、グラフィックやプラットフォーム切り替えなどの基本設定を変えておくと良いと思います。
※ Oculus Integrationの初回インポート時は、非常に長い時間がかかってしまうため。

Unityのバージョンにもよると思いますが、私の環境(Unity 2021.3.8f1)だと、比較的インポートの時間は短かったです。
:::

- Build Settingsの画面内での設定
    - Platformを「Android」に変更。
    - Texture Compressionを「ASTC」に変更してから、「Switch Platform」をクリック。
    ![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/1f6aded9-5dc6-cff1-ee1e-8674f378ddba.png)

- Project Settingsの画面内での設定
    
    左の一覧から「Player」 を開き、下記の設定を行ってください。
    
    - Color Spaceを「Linear」に変更。
    - Auto Graphics APIのチェックを外してから、Graphics APIsの「OpenGLES3」を削除。
    - Minimum API Levelを「Android 6.0」に変更。
    - Script Backendを「IL2CPP」に変更し、Target Architectureの「ARM64」にだけチェックを入れる。
    ![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/b99d6f7b-57a2-12d3-348b-a1b9771283c4.png)
    ![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/b6850288-3b87-64bb-140a-b08003511dbd.png)


#### 2. XR Plug-in Managementを有効にしよう！
- Project Settings内の「XR Plugin Management」 を開き、「Install XR Plugin Management」ボタンを押して有効にする。
- その後、Androidマークを選択して「Oculus」にチェックを入れる。
![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/b93d01cd-0aae-66ec-3148-78a166aed82f.png)


#### 3. Oculus Integarion をインポートしよう！
- UnityのAssetStoreにて、「Oculus Integration」をダウンロードしてくる。    
ダウンロード後、UnityのPackage Managerに移動し、My Assetsを確認すると「Oculus Integration」があるので、ここからインポートが可能です。

    ※ インポート中にダイアログが表示されますが、必要に応じて「Upgrade」や「Restart」等をクリックしてください。
![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/5645c9bf-67b5-d4a7-d403-defe68e7d390.png)


#### 4. おまけ (サンプルシーンについて)
    
これで開発前の設定が完了しました！
    
後半の記事では実際の作業内容を紹介しようと思いますが、手っ取り早く確認だけしたい！という方もいらっしゃると思うので、ここでサンプルシーンの紹介です。
    
Projectビュー > Oculus > VR > Scene の中に「HandTest」と「HandTest_Custom」という、あらかじめ準備されているサンプルシーンがあります。
![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669177/93ea2e02-2cc3-50df-f966-505356cd0cba.png)

こちらを使用してビルド等を行い、Quest2へapkを送ることで、実際にハンドトラッキングができているか確認することが可能です。
よろしければ、ぜひチャレンジしてみてください！

### 参考資料
こちらのサイトを参考にさせていただきました！ありがとうございます！
- https://framesynthesis.jp/tech/unity/oculusquest/
- https://vracademy.jp/blog/oculus-quest2-hand-tracking/