nekoblog

nekoblog

ちょっとためになるブログ

MRTK で Oculus Quest のプロジェクトにハンドトラッキングと空間操作用のUIを実装する

MRTK とは

Microsoft 主導のプロジェクトで、Unity でクロスプラットフォームの MR アプリの開発時間を短縮するために、空間操作および UI 用のクロスプラットフォーム入力システムと構成を簡単に実装出来ます。 mrtk_ux_hero.png 幅広い範囲のプラットフォームがサポートされていますが、今回は Oculus Quest2 で動作するように実装したので、備忘録としてまとめました。

必要なもの

※ MRTK のパッケージを Windows PC で用意する場合は Mixed Reality Feature Tool を使用してダウンロード出来ます。( 詳細はこちら

実装手順

  1. プロジェクトの準備
  2. XR Plugin Frameworkのインポート
  3. Oculus Integrationのインポート
  4. MRTKのインポート
  5. MRTK用のコンポーネントとプロファイルを追加
  6. ハンドトラッキングの有効化
  7. URP で MRTK を使用する場合
  8. ボタン / ハンドメニューの追加
  9. 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のインポート

  1. メニュー「Edit → Project Settings → XR Plugin Management」で「Install XR Plugin Management」ボタンを押します。「XR Plugin Management」がインポートされます。
  2. Androidタブの「Oculus」にチェックを入れます。

18.png

3. Oculus Integrationのインポート

Unity アセット ストア から Oculus Integration をダウンロードしてインポートします。 ※ 全てのファイルをインポートします。インポートには時間がかかります。

インポートが完了したら、メニュー「Edit → Project Settings → Audio」の「Spatializer Plugin」に「OculusSpatializer」を指定します。 53.png

4. MRTKのインポート

  1. MRTKリポジトリからパッケージをダウンロードします。
Microsoft.MixedReality.Toolkit.Unity.Foundation.unitypackage
Microsoft.MixedReality.Toolkit.Unity.Tools.unitypackage
  1. メニュー「Assets → Import Package → Custom Package」で、パッケージをインポートします。

  2. 以下のダイアログを入力していきます。 スクリーンショット 2021-10-31 7.52.28.png 「Next」を選択。 スクリーンショット 2021-11-01 13.51.50.png 「Apply」を選択。 スクリーンショット 2021-10-31 7.52.34.png 「Next」を選択。 スクリーンショット 2021-11-01 13.52.03.png 「Import TMP Essentials」を選択。 スクリーンショット 2021-10-31 7.52.42.png 「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」を選択します。 oculusintegrationasmdef.png インポートされた Oculus フォルダーの、OculusProjectConfig で、HandTrackingSupport を 「Controllers and Hands」か「Hands Only」に設定します。 oculusintegrationcontrollerandhands.png 参考 : Oculus Integration Unity パッケージを設定してハンドトラッキングを有効にする

Oculus コントローラー

Oculus コントローラーモデルを視覚化するには、Oculus クエストデプロイの手順に従います。 コントローラーを使用しているときに仮想ハンズオンを表示する場合は、XR SDK Oculus Device Manager の下で、[コントローラーでは なくアバター を表示する] がオンになっていることを確認します。それ以外の場合は、このオプションをオフにします。 oculusdevicemanager.png コントローラーと手のモデルは以下の設定にすると表示されます。 スクリーンショット 2021-11-06 17.49.57.png

7. URP で MRTK を使用する場合

メニュー「Mixed Reality Toolkit → Utilities → Upgrade MRTK Standard Shader for Lightweight Render Pipeline」を実行します。

https://docs.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/features/tools/update-mrtk-shaders?view=mrtkunity-2021-05

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 にデプロイする

診断システムの表示/非表示

20200702172203.png 「Diagnostics」を選択し、「Enable Diagnostics System」のチェックボックスをOFFにします。 スクリーンショット 2021-11-02 7.52.15.png 参考 : 診断システムの構成

参考サイト

公式ドキュメント

https://docs.microsoft.com/ja-jp/windows/mixed-reality/mrtk-unity/?view=mrtkunity-2021-05

Github

https://github.com/Microsoft/MixedRealityToolkit-Unity

参考にした本