MRが楽しい

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

MRTK v2を使ってHoloLens1/HoloLens2/WindowsMR(VR)向けアプリを作成する プロジェクト作成編(MRTK v2.3.0版)

本日は MRTK v2 の技術調査枠です。
MRTK v2を使ってのHoloLens1/HoloLens2/WindowsMR(VR)向けアプリを作成する方法について基本的な手順をまとめます。
今回はUnityプロジェクトの新規作成からUWPアプリをビルドするまでの手順になります。
f:id:bluebirdofoz:20200216050811j:plain

以下の記事の続きです。
bluebirdofoz.hatenablog.com

2020/02/15追記

MRTK v2.3.0 のリリースに対応して本記事を更新。
合わせて、HoloLens1/HoloLens2/WindowsMR対応版に更新。

Unity プロジェクトの作成

Unity の新規プロジェクトを作成します。
Unity Hub の[新規作成]を起動し、新規プロジェクトの作成を行います。
このとき、利用する Unity のバージョンは 2018.4.x, 2019.1.x または 2019.2.x を選択します。
f:id:bluebirdofoz:20200216050836j:plain

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

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

パッケージのインポート

プロジェクトに MRTKv2 をインポートします。
最初に Microsoft.MixedReality.Toolkit.Unity.Foundation.2.3.0.unitypackage をインポートします。
Unity プロジェクトを開いた状態であれば unitypackage をダブルクリックでインポートできます。
f:id:bluebirdofoz:20200216050906j:plain

Import Unity Package ダイアログが開きます。
[Import]ボタンをクリックして、パッケージをインポートします。
f:id:bluebirdofoz:20200216050918j:plain

Foundation パッケージはインポート完了時に、[MRTK Project Configurator]ダイアログが表示されます。
[Apply]を選択すると、以下のデフォルト設定が行われます。
・現在のプラットフォームで VR Support を有効にする
レンダリングパスをシングルパスに設定する
・デフォルトの空間認識レイヤーを設定する
特に指定がなければ[Apply]で自動設定する事が推奨されます。
f:id:bluebirdofoz:20200216050930j:plain

2.2.0 での設定項目[Enable MSBuild for Unity]は 2.3.0 では UWP プラットフォーム切り替え後の設定項目に変更されています。

これで Foundation パッケージがインストールされました。
f:id:bluebirdofoz:20200216050940j:plain

Foundation パッケージをインポートすると、メニューに[Mixed Reality Toolkit]が追加されます。
[MRTK Project Configurator]ダイアログは Mixed Reality Toolkit -> Utilities -> Configure Unity Project から手動で開くこともできます。
全ての設定にチェックが入っていれば設定が完了しています。
f:id:bluebirdofoz:20200216052021j:plain

他の3つのパッケージのインポートは任意です。必要な場合は同様にインポートを行います。
f:id:bluebirdofoz:20200216051002j:plain

各パッケージはそれぞれ以下の役割を持ちます。

Examples  :MRTK機能を使ったデモシーンを含むパッケージです。
Tools     :便利な開発者用ツールを含むパッケージです。
Extensions:オプションコンポーネントを含むパッケージです。

各パッケージに含まれる機能やツールの詳細は以下のページを参照ください。
bluebirdofoz.hatenablog.com

プラットフォームの選択

アプリのビルドプラットフォームを UWP に切り替えます。
メニューから File -> Build Settings.. を選択します。
f:id:bluebirdofoz:20200216051037j:plain

Build Settings ダイアログが開きます。
[Add Open Scenes]をクリックして現在のシーンをビルド対象のシーンとして追加します。
[Platform]から[Universal Windows Platform]を選択して[Switch Platform]を実行します。
f:id:bluebirdofoz:20200216051048j:plain

これでビルド対象にシーンが追加され、プラットフォームが UWP(Universal Windows Platform) に切り替わりました。
プラットフォームが切り替わると、[MRTK Project Configurator]ダイアログが表示されます。
切り替え時に VR Support のチェックが外れる他、UWP では追加の Capability の設定が要求されます。
改めて[Apply]をクリックして設定を反映します。
f:id:bluebirdofoz:20200216051059j:plain

処理が完了したら[MRTK Project Configurator]ダイアログで全ての設定が完了していることを確認します。
[Enable MSBuild for Unity]をチェックしていると、メニューに[MSBuild]が追加され、Dependencies フォルダが生成されます。
Dependencies フォルダーには MRTK によってインポートされるプラグイン(DotNetWinRTなど)が含まれています。
f:id:bluebirdofoz:20200216051127j:plain

シーンの設定

次にアプリのシーンを設定を行います。
Foundation パッケージをインポート済みであれば[Mixed Reality Toolkit]メニューが追加されています。
そのメニューから Mixed Reality Toolkit -> Add to Scene and Configure.. を選択します。
f:id:bluebirdofoz:20200216051227j:plain

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

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

f:id:bluebirdofoz:20200216051241j:plain

利用するデバイスにシーンを最適化するには、デバイスに合わせたプロファイルを設定する必要があります。
MixedRealityToolkit オブジェクトを選択し、Inspector ビューを開きます。
HoloLens1/HoloLens2/WindowsMR(VR)全てに対応したプロジェクトを作成する場合は Mixed Reality Toolkit コンポーネントで[DefaultMixedRealityToolkitConfigurationProfile]が選択されていることを確認します。
f:id:bluebirdofoz:20200216051255j:plain

Mixed Reality Toolkit コンポーネントではその他、以下のプロファイルを選択できます。
・DefaultHoloLens1ConfigurationProfile
・DefaultHoloLens2ConfigurationProfile
・DefaultXRSDKConfigurationProfile
f:id:bluebirdofoz:20200216051315j:plain

各プロファイルはそれぞれ以下の役割を持ちます。

DefaultMixedRealityToolkitConfigurationProfile:HoloLens1/HoloLens2/WindowsMR(VR)/OpenVR全ての環境に対応可能なプロファイル
DefaultHoloLens1ConfigurationProfile          :HoloLens1向けに最適化されたプロファイル
DefaultHoloLens2ConfigurationProfile          :HoloLens2向けに最適化されたプロファイル
DefaultXRSDKConfigurationProfile              :Unity XRプラットフォーム向けに設定されたプロファイル

例えば DefaultMixedRealityToolkitConfigurationProfile と DefaultHoloLens2ConfigurationProfile のどちらを利用しても HoloLens2 向けのビルドは可能です。
ただし DefaultHoloLens2ConfigurationProfile は HoloLens2 のスペックに最適化が図られているため、空間メッシュやハンドメッシュが予め無効化されています。
f:id:bluebirdofoz:20200216051445j:plain

特定の環境での利用を想定していないのであれば、ひとまず[DefaultMixedRealityToolkitConfigurationProfile]で設定しておくと良いでしょう。
なお、DefaultXRSDKConfigurationProfile はUnity XRプラットフォーム向けに 2.3.0 から追加されたプロファイルです。
2.3.0 ではUnity XRプラットフォームの対応は実験的(Experimental)と位置付けられています。
microsoft.github.io

プロファイルの詳細については以下を参照ください。
microsoft.github.io

サンプルシーンの作成

このままビルドして HoloLens にインストールすることも可能ですが、動作確認用にサンプルシーンを作ってみます。
Hierarchy 上で右クリックして で Cube オブジェクトを作成します。
f:id:bluebirdofoz:20200216051530j:plain

作成した Cube オブジェクトの[Transform]コンポーネントの値を以下の通り調整しました。

Position X:0, Y:0, Z:1
Rotation X:0, Y:0, Z:0
Scale X:0.2, Y:0.2, Z:0.2

これでアプリを実行すると、目の前に 20cm 四方の Cube オブジェクトが表示されます。
f:id:bluebirdofoz:20200216051540j:plain

[再生]ボタンをクリックすることで、[Game]画面上でアプリの動作を確認できます。
f:id:bluebirdofoz:20200216051552j:plain

パッケージ名の変更

パッケージ名がデフォルトのままだと、インストール時に同じパッケージ名を持つ既存のアプリケーションを上書きしてしまいます。
以下の手順でアプリケーションのパッケージ名を変更することができます。
メニューから Edit -> Project Settings を選択します。
f:id:bluebirdofoz:20200216051624j:plain

[Project Settings]ウィンドウが表示されるので[Publishing Settings]の項目を開きます。
[Package name]の項目に任意のパッケージ名を設定します。
これでパッケージ名が変更されました。
f:id:bluebirdofoz:20200216051639j:plain

再ビルド時の注意

一度ビルドを実施して作成された (プロジェクト名)/Package.appxmanifest ファイルは通常、Unity 側のパッケージ名のみを変更して再ビルドしても更新されません。
f:id:bluebirdofoz:20200216051653j:plain

パッケージ名を変更して再ビルドする際は一旦 Package.appxmanifest ファイルを削除してからビルドを行うことをお奨めします。

プロジェクトのビルド

プロジェクトのビルドを行います。
メニューから File -> Build Settings.. を選択します。
f:id:bluebirdofoz:20200216051708j:plain

Build Settings ダイアログが開くので、[Build]を実行します。
ビルドでは出力先のディレクトリを指定する必要があります。
今回は App という名前のディレクトリを作成し、これを指定しました。
f:id:bluebirdofoz:20200216051719j:plain

ビルドが完了すると、指定ディレクトリに Visual Studio のソリューションファイルが出力されます。
f:id:bluebirdofoz:20200216051729j:plain

次回は HoloLens1/HoloLens2/WindowsMR(VR) 向けのインストール手順に続きます。
bluebirdofoz.hatenablog.com

参考ページ

microsoft.github.io