2019年12月8日日曜日

[HoloLens Advent Calendar 2019] 8日目 Mixed Realty Tookit Unity v2 Spatial AwarenessのMeshをUnity Editor上で出す方法

お疲れ様です。ZuQ9->Nnです。
この記事は、HoloLens Advent Calendar 2019、8日目
2019/12/08 の内容です。

Mixed Realty Tookit Unity v2(以下MRTKv2)が正式にリリースされて結構時間が経ってしまいました。
MRTKv2は、以前のHoloToolkitと比べて、かなり変更がされていて、非常に内容も多く、
今まで、出来ていたことも、ん?どこいった?という迷いが多くなりました。

Spatial Awarenessもその一つです。以前のToolkitではSpatial Mappingとよばれていました。
特にUnity Editor上でメッシュが表示できていたのですが、MRTKv2ではどうやるんだ?と、ずっと疑問に思っていました。
しかし、なんと実は、Microsoftの公式のドキュメントに、キッチンと書いてありました。。orz..
その記事がこちら。。

Configuring Mesh Observers for Editor

A convenient way to provide environment mesh data in the Unity editor is to use the SpatialObjectMeshObserver class. The Spatial Object Mesh Observer is an editor-only data provider for the Spatial Awareness system that enables importing 3D model data to represent a spatial mesh.

単純に、記事が日本語になっておらず、読み飛ばしてしまっていただけですね。。
現在、日本語化も進められているようですが、同じように、読み飛ばしている人もいそう

なので、改めて、僕のほうで、手順をまとめてみました。
今回の僕のためした環境は、Unity 2019.2.12f1
Microsoft Mixed Reality Toolkit v2.1.0(Microsoft.MixedReality.Toolkit.Unity.Foundation.2.1.0.unitypackage) を利用しました。
まずは、適当な名前でUnityでプロジェクトを作成(僕はTestとしました。)
Microsoft.MixedReality.Toolkit.Unity.Foundation.2.1.0.unitypackageをUnityにインポートします。
Apply Mixed Reality Toolkit Default Settings?
のダイアログが表示されますので、Applyを押します。

Unityのメニューに、Mixed Relaity Toolkitが表示されますので、
そこから。Add to Scene and Configureを選びます。
Select MixedRealityToolkitConfigurationProfileのダイアログが表示されます。
こちらは、開発環境に合わせて選択しますが、今回は、
DefaultMixedRealityToolkitConfigurationProfileを選択します
* ちなみに、DefaultHololens1ConfigurationProfile、
DefaultHololens2ConfigurationProfileでも行いましたが、
残念ながら、同じ作業を行ってもUnity Editor上では表示されませんでした。

Hierarchyに、MixedRealityTookitとMixedRealityPlayspaceが自動追加されますので、
MixedRealityTookitを選択、InspectorのCopy & Customizeボタンを押します。
Cone Profileのダイアログが表示されます。Profile Nameを指定して
Cloneボタンを押します。Profile Nameは内容に合わせて決めてください。
今回は、TestMixedRealityToolkitConfigurationProfileとしました。

Active ProfileがTestMixedRealityToolkitConfigurationProfileに切り替わっているのを確認し
Spatial Awarenessを選択、DefaltMixedSpatialAwarenessSytemProfilの横のCloneボタンを押します。

Spatial Awareness用のCone Profilダイアログが表示されます。Cloneボタンを押します。
Profile Nameは内容に合わせて決めてください。
今回は、TestSpatialAwarenessSystemProfileとしました。
TestMixedRealitySpatialAwarenessSystemProfileに切り替わっているのを確認し
Mixed Reality Spatial Mesh Observerの三角マークをクリックして展開します。


展開した、Windows Mixed Reality Spatial Mesh Observerの
TypeのドロップダウンからWindows.MixedReality.Toolkit.SpatialObjectMeshObserver > SpatialMeshObserverを選択してセットします。
設定は以上で、Unityの実行ボタンを押すとUnity Editorでメッシュが表示確認を行うことができます。
確認した範囲内では特にUnityのSwitch PratformでUnivaersal Windows Platformに
切り替える必要もありませんでした。

MRTKv2では、Prefabを置くのではなく、各設定のProfileを
Cloneしてカスタマイズしていくオペレーションに大きく変わりました。
かなり慣れが必要になるかと思いますが、何度か繰り返して覚えなおすしかないと思います。

-----------------------------------------------------------------------------------------------------------------------
ここからの内容は表示されているメッシュをさらにカスタマイズしたい場合で
表示して確認したいだけの人は読み飛ばしてください。

メッシュの表示をカスタマイズする場合は、
DefultObjectMeshObserverProfileの横のCloneボタンをクリック

Clone Profileのダイアログが表示されるので、 DefultObjectMeshObserverProfileの横のCloneボタンをクリック、Profile Nameを指定してCloneボタンを押します。
Profile Nameは内容に合わせて決めてください。
今回は、TestSpatialObjectMeshObserverProfileとしました。

TestSpatialObjectMeshObserverProfileに切り替わっているのを確認し
Visual Materialの横のボタンをクリックします。

Select Materialのダイアログが表示されますので
ワイヤーフレーム用のMaterialを選択します。
今回は、用意されていたMRTK_WireframeBlueを選択しました。

設定は以上で、Unityを実行するとワイヤーフレームの色が変更されているのが確認できます。

SpatialObjectMeshObserverProfileのDisplay SettingsのDisplay Optionのドロップダウンを
Noneにするとワイヤーフレームを非表示にできたり、
Spatial Mesh Objectに指定されているPrefabを変更することで
表示される部屋自体を変更する事もできます。

ProfileをCopyしてカスタマイズ。やはりそれが基本ですね
このオペレーションを何度も繰り返してMRTKv2に慣れ
Profileのどの項目を、どう変更すれば何が起こるのか?

こちらを把握していくことから初めて行くのが攻略の近道かなと感じました。
と。。ここまで書いたんですが。この記事を書き終えた後。

もう一度、よくよくググッてみたら。日本語の情報も普通に出てました。。 Orz..
チュートリアルは、一度目を通していた方が良さそうですね。

入門チュートリアル-3. ユーザーインターフェイスを作成し、Mixed Reality Toolkit を構成する - Mixed Reality

前のレッスンでは、HoloLens 2 の最初のアプリケーションを開始することで、Mixed Reality Toolkit (MRTK) が提供する必要のある機能について説明しました。 In the previous lesson, you learned about some of the capabilities the Mixed Reality Toolkit (MRTK) has to offer by starting your first application for the HoloLens 2.