MRTK で Oculus Quest のプロジェクトにハンドトラッキングと空間操作用のUIを実装する
MRTK とは
Microsoft 主導のプロジェクトで、Unity でクロスプラットフォームの MR アプリの開発時間を短縮するために、空間操作および UI 用のクロスプラットフォーム入力システムと構成を簡単に実装出来ます。 幅広い範囲のプラットフォームがサポートされていますが、今回は Oculus Quest2 で動作するように実装したので、備忘録としてまとめました。
必要なもの
- Oculus Quest 2
- Unity
- (バージョンは 2020.3.21f1 LTS を使用しました。)
- Unity XR SDK パイプライン
- Oculus Integration
- MRTK
- Microsoft.MixedReality.Toolkit.Unity.Foundation.unitypackage
※ MRTK のパッケージを Windows PC で用意する場合は Mixed Reality Feature Tool を使用してダウンロード出来ます。( 詳細はこちら )
実装手順
- プロジェクトの準備
- XR Plugin Frameworkのインポート
- Oculus Integrationのインポート
- MRTKのインポート
- MRTK用のコンポーネントとプロファイルを追加
- ハンドトラッキングの有効化
- URP で MRTK を使用する場合
- ボタン / ハンドメニューの追加
- Oculus Questでの実行
1. プロジェクトの準備
Oculus Quest2 のプロジェクトの設定をします。 詳細は 開発環境を設定 にまとめられています。
■ Unityの準備 1. Unity HubでUnityをインストールします。モジュールの追加で「Android Build Support」をチェックします。 2. Unityのプロジェクトを作成します。 3. メニュー「File → Build Settings」で、「Android」を選択して「Switch Platform」ボタンを押します。
2. XR Plugin Frameworkのインポート
- メニュー「Edit → Project Settings → XR Plugin Management」で「Install XR Plugin Management」ボタンを押します。「XR Plugin Management」がインポートされます。
- Androidタブの「Oculus」にチェックを入れます。
3. Oculus Integrationのインポート
Unity アセット ストア から Oculus Integration をダウンロードしてインポートします。 ※ 全てのファイルをインポートします。インポートには時間がかかります。
インポートが完了したら、メニュー「Edit → Project Settings → Audio」の「Spatializer Plugin」に「OculusSpatializer」を指定します。
4. MRTKのインポート
Microsoft.MixedReality.Toolkit.Unity.Foundation.unitypackage Microsoft.MixedReality.Toolkit.Unity.Tools.unitypackage
メニュー「Assets → Import Package → Custom Package」で、パッケージをインポートします。
以下のダイアログを入力していきます。 「Next」を選択。 「Apply」を選択。 「Next」を選択。 「Import TMP Essentials」を選択。 「Done」を選択。
※ MRTK のパッケージを Windows PC で用意する場合は Mixed Reality Feature Tool を使用してダウンロード出来ます。( 詳細はこちら )
5. MRTK用のコンポーネントとプロファイルを追加
メニュー「Mixed Reality Toolkit → Add to Scene and Configure...」を選択します。 以下が Hierarchy に追加されます。
MixedRealityToolkit MixedRealityPlayspace MixedRealitySceneContent
6. ハンドトラッキングの有効化
メニュー「Mixed Reality Toolkit → Utilities → Oculus → Integrate Oculus Integration Unity Module」を選択します。 インポートされた Oculus フォルダーの、OculusProjectConfig で、HandTrackingSupport を 「Controllers and Hands」か「Hands Only」に設定します。 参考 : Oculus Integration Unity パッケージを設定してハンドトラッキングを有効にする
Oculus コントローラー
Oculus コントローラーモデルを視覚化するには、Oculus クエストデプロイの手順に従います。 コントローラーを使用しているときに仮想ハンズオンを表示する場合は、XR SDK Oculus Device Manager の下で、[コントローラーでは なくアバター を表示する] がオンになっていることを確認します。それ以外の場合は、このオプションをオフにします。 コントローラーと手のモデルは以下の設定にすると表示されます。
7. URP で MRTK を使用する場合
メニュー「Mixed Reality Toolkit → Utilities → Upgrade MRTK Standard Shader for Lightweight Render Pipeline」を実行します。
8. ボタン / ハンドメニューの追加
試しにハンドメニューの実装をしました。
https://twitter.com/pirorororonn/status/1456766198427705346
下記の記事を参考にUIなどを作成し動作確認をしました。
https://qiita.com/miyaura/items/7f6bb7ddcaab8bc6cb8e
https://qiita.com/_udonba/items/030dab3e7dbe65922a28
https://note.com/npaka/n/n159027eb708c
9. Oculus Questでの実行
ビルドエラー
最初に「Build And Run」を選択すると、ビルドエラー が発生する可能性があります。「Build And Run」を再度選択すると、正常にビルドが完了します。 参考 : プロジェクトをビルドして Oculus Quest にデプロイする
診断システムの表示/非表示
「Diagnostics」を選択し、「Enable Diagnostics System」のチェックボックスをOFFにします。 参考 : 診断システムの構成
参考サイト
公式ドキュメント
https://docs.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/?view=mrtkunity-2021-05
Github
https://github.com/Microsoft/MixedRealityToolkit-Unity