MRが楽しい

MRやVRについて学習したことを書き残す

Mixed Reality Feature Toolを使ってHoloLens2アプリ向けのUnityプロジェクト作成を行う

本日は MRTK の使い方枠です。
Mixed Reality Feature Toolを使ってHoloLens2アプリ向けのUnityプロジェクト作成を行う手順を記事にします。
f:id:bluebirdofoz:20210809223354j:plain

前提条件

以下の記事を参考に必要なアプリケーションのインストールとダウンロードを行っていることが前提です。
bluebirdofoz.hatenablog.com

Unityプロジェクトの作成

Unity Hub を起動し、[新規作成]から Unity プロジェクトの作成を行います。
MRTK 2.7.2 では利用する Unity のバージョンは 2020.3.8 以降が推奨されます。
f:id:bluebirdofoz:20210809223424j:plain

以下の通りに設定を行い、[作成]ボタンをクリックしてプロジェクトを作成します。
・テンプレート:[3D]
・プロジェクト名:任意のプロジェクト名
・保存先:任意のディレクト
f:id:bluebirdofoz:20210809223433j:plain

これで新規プロジェクトが作成されました。
f:id:bluebirdofoz:20210809223441j:plain

MRTKのインポート

Mixed Reality Feature Toolを使って作成した Unity プロジェクトに MRTK をインポートします。
f:id:bluebirdofoz:20210809223451j:plain

インポート先の Unity プロジェクトの指定画面で、作成した Unity プロジェクトのフォルダを指定します。
[Discover Features]ボタンをクリックします。
f:id:bluebirdofoz:20210809223500j:plain

パッケージの選択画面の[MixedRealityToolkit]欄から必要な MRTK パッケージを選択します。
Foundation パッケージが必須パッケージとなります。
f:id:bluebirdofoz:20210809223508j:plain

OpenXR Pluginの選択(オプション)

XR プラグインに OpenXR Plugin を利用する場合、ここでインポートすることができます。
[Platform Suport]欄から[Mixed Reality OpenXR Plugin]を選択します。
f:id:bluebirdofoz:20210809223517j:plain

選択した[Features]パッケージの依存パッケージが自動で検索され、[Required dependencies]欄に追加されます。
[Import]ボタンをクリックします。
f:id:bluebirdofoz:20210809223526j:plain

更新後のマニフェストファイルが表示されます。
[Approve]ボタンをクリックしてインポートを実行します。
f:id:bluebirdofoz:20210809223536j:plain

これで MRTK のインポートは完了です。
f:id:bluebirdofoz:20210809223546j:plain

OpenXR Plugin をインポートした場合、Unity プロジェクト側でプロジェクトの再起動が要求されます。
f:id:bluebirdofoz:20210809223557j:plain

プロジェクトの基本設定

次に HoloLens2 向けのプロジェクト設定を行います。

プラットフォームの変更

HoloLens2 では UWP(UniversalWindowsPlatform) のアプリケーションしか動作しないため、プラットフォームを UWP に変更します。
メニューから[File -> Build Settings]を選択し、[Build Settings]ダイアログを開きます。
f:id:bluebirdofoz:20210809223607j:plain

[Platform]で[Universal Windows Platform]を選択し、[Switch Platform]を実行します。
f:id:bluebirdofoz:20210809223618j:plain

XRプラグインの選択

MRTK をインポートすると、プロジェクトの基本的な設定を行う[MRTK Project Configurator]ダイアログが表示されます。
もしダイアログを閉じていた場合は、メニューから[Mixed Reality -> Toolkit -> Utilities - Configure Project for MRTK]で開くことができます。
f:id:bluebirdofoz:20210809223629j:plain

初めに利用する XR プラグインを選択します。

Unity OpenXR plugin(推奨)

新しい業界標準(OpenXR)を採用し、将来的にAR/VRバイスの広い範囲を簡単にサポートしたい場合はこちらを選択します。
f:id:bluebirdofoz:20210809223640j:plain

選択後、plugin を有効化する必要があります。
次のダイアログの[Show XR Plug-in Management Settings]をクリックして[Project Settings]ダイアログを開きます。
f:id:bluebirdofoz:20210809223652j:plain

[XR Plug-in Management]のタグを開き、[UWP]の設定パネルを開きます。
[OpenXR -> Microsoft HoloLens feature group]のチェックを行うことで plugin が有効化されます。
f:id:bluebirdofoz:20210809223704j:plain

Built-in Unity plugins

HoloLens2 及び WindownsMixedRealityHeadset 向けに開発された組み込みのプラグインを利用する場合はこちらを選択します。
f:id:bluebirdofoz:20210809223715j:plain

選択後、plugin を有効化する必要があります。
次のダイアログの[Show Settings]をクリックして[Project Settings]ダイアログを開きます。
f:id:bluebirdofoz:20210809223727j:plain

[XR Plug-in Management]のタグを開き、[UWP]の設定パネルを開きます。
[Windows Mixed Reality]のチェックを行うことで plugin が有効化されます。
f:id:bluebirdofoz:20210809223737j:plain


plugin の設定後、目的のビルドターゲットの XR プラグインを正しく指定しているかの確認ダイアログが表示されます。
先ほどの手順通りのチェックをしていれば[Next]で次に進んで問題ありません。
f:id:bluebirdofoz:20210809223750j:plain

プロジェクトの基本設定

次にプロジェクトの基本設定ダイアログが表示されるので[Apply]をクリックします。
ここでは以下の設定が行われます。
・デフォルトの空間認識レイヤーを作成する
・シミュレーション用のインプットシステムを有効にする
・各種権限設定を行う
f:id:bluebirdofoz:20210809223810j:plain

設定が完了すると、確認ダイアログが表示されるので[Next]をクリックします。
f:id:bluebirdofoz:20210809223821j:plain

TextMeshProのインポート

次に TextMeshPro のインポートダイアログが表示されます。
MRTK ではUIテキストの表示に TextMeshPro を利用しているので、[Import TMP Essentials]をクリックしてインポートを行います。
f:id:bluebirdofoz:20210809223831j:plain

これでプロジェクトの基本設定は完了です。
f:id:bluebirdofoz:20210809223842j:plain

シーンの基本構成

次に HoloLens2 アプリ向けのシーンの基本構成を設定します。
例えば、以下のような HoloLens2 アプリ向けの設定を自動で実施します。
・メインカメラの位置を原点(起動時の頭位置)に設定する
・シーンの背景を黒(透過)に設定する
・その他様々な環境構成を決定するプロファイルを設定する

シーンの基本構成を変更する

メニューから[Mixed Reality -> Toolkit -> Add to Scene and Configure..]を選択します。
f:id:bluebirdofoz:20210809223856j:plain

するとシーンの Hierarchy に以下のゲームオブジェクトが追加されます。
・MixedRealityToolkit
・MixedRealityPlayspace
・MixedRealitySceneContent

Mixed Reality Toolkit:フレームワーク全体の中央構成エントリポイントを提供するツールキットの本体。
MixedRealityPlayspace:ヘッドセットの親オブジェクト。ヘッドセット/コントローラーおよびその他の必要なシステムを管理します。メインカメラはプレイスペースの子オブジェクトとして移動します。
MixedRealitySceneContent:デバイスごとに適切にスケーリングするシーンコンテンツの配置場所。

f:id:bluebirdofoz:20210809223910j:plain

プロファイルを変更する

次に利用シーンや plugin に合わせたシーン構成を設定するため、プロファイルを変更します。
MixedRealityToolkit オブジェクトを選択し、Inspector ビューを開きます。
f:id:bluebirdofoz:20210809223923j:plain

プルダウンから MRTK が提供するいくつかのデフォルト設定のプロファイルを選択できます。

Unity OpenXR plugin利用時

XR プラグインに Unity OpenXR plugin を選択している場合は[DefaultOnenXRConfigurationProfile]を選択します。
f:id:bluebirdofoz:20210809223933j:plain

Built-in Unity plugins利用時

XR プラグインに Built-in Unity plugins を選択している場合は[ObsoleteHololens2XRSDKConfigurationProfile]を選択します。
f:id:bluebirdofoz:20210809223944j:plain

パッケージ名の変更(オプション)

メニューから[Edit -> Project Settings]を開き、[Player -> UWP -> Publishing Settings]の項目を開きます。
[Package name]の項目をデフォルトの[Template3D]から任意のパッケージ名に変更します。
f:id:bluebirdofoz:20210809223956j:plain

パッケージ名の変更はアプリの作成において必須の作業ではありません。
しかし、同名のパッケージ名のアプリが存在するとインストール時にアプリを上書きするなどの問題が発生するので変更することを推奨します。
f:id:bluebirdofoz:20210809224006j:plain


以上で HoloLens2 アプリ向けの Unity プロジェクトの基本設定は完了です。
[File -> Save]で変更を保存します。
f:id:bluebirdofoz:20210809224016j:plain