夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLensのSpatialMeshの設定 

本日はHoloLensの表現の調査枠です。

HoloLensでは[SpatialAwareness]によってユーザーの周囲の物理空間をスキャンし、[SpatialMesh]を貼ることで現実世界の物理情報をホログラムに反映することができます。

この設定は[MixedRealityToolkit(MRTK)]によってプロジェクトごとに行えます。

今回はアプリケーション内でこの設定を変更することを行います。

SpatialAwarenessに関しては以前の調査も参考にしてください。

redhologerbera.hatenablog.com

〇SpatialMeshの設定

HoloLensではSpatialMeshの設定を次の様にして変更します。MixedRealityToolkitを導入し設定を行ったシーンで説明します。

①hierarchyウィンドウから[MixedRealityToolkit]オブジェクトを選択します。

f:id:Holomoto-Sumire:20210213205151j:plain

②inspectorウィンドウから[MixedRealityToolkit]のサイドタブから[SpatialAwareness]を選択します。

f:id:Holomoto-Sumire:20210213210419j:plain

③[SpatialMeshObserver]を開きます。これがSpatialMeshの設定項目です。

f:id:Holomoto-Sumire:20210213210556j:plain

最小限で簡単に設定項目を説明します。

●General Settings

・Startup Behavior

f:id:Holomoto-Sumire:20210213210810j:plain

この設定はSpatialMeshの生成を始めるタイミングを指定します。

デフォルトではAutoになっており自動でアプリケーション開始時にスキャンとメッシュの生成が開始されます。

もう一つ[manual Start]が設定でき、これはスクリプトからスキャンのタイミングを指定する場合に設定します。

・Update interval

f:id:Holomoto-Sumire:20210213211131j:plain

この設定はSpatialMeshの生成感覚です。

 デフォルトでは1.0~5.0に設定されており、これは指定された秒数おきにSpatialMeshが更新されます。

●Physics Settings

SpatialMeshは通常床にオブジェクトを置く、机や壁などでオブジェクトが隠れるような描画を行うなど現実の世界とデジタル情報との対話に使用されます。 これらにはコライダーが貼られており、通常の場合開発者が設定しなくても物理設定が行われています。 ここではその設定を変更します。

・Physics layer

f:id:Holomoto-Sumire:20210213212224j:plain

これは生成されたSpatialMeshに対して与えられるUnityのLayerを設定します。

デフォルトでは31:Spatial Awarenessという名前が割り当てられます。コライダーとの接触判定やLayCastにおいて使用されます。

●DisplaySettings

これは生成されるSpatialMeshの表示に関する設定を行います。

・DisplayOption

f:id:Holomoto-Sumire:20210213212447j:plain

これはSpatialMeshの表示のマテリアルをどのように割り当てるかを指定します。

[Visual]と[Occlusion]が設定できそれぞれ下部で設定されたMaterialがSpatialMeshに対して適応されます。

また[None]にすることでメッシュの表示を完全になくすことができます。

〇SpatialMeshの表示

アプリケーション上でSpatialMeshは[MixedRealityPlaySpace]オブジェクトの子オブジェクト、[Spatial Awareness System]の子オブジェクトとして格納されます。

これはUnityの[HoloGraphicRemote]を使用することで確認することができます。

redhologerbera.hatenablog.com

HoloGraphicRemoteでPCとHoloLensを接続した状態でUnityを実行すると次のように確認できます。

f:id:Holomoto-Sumire:20210213214252j:plain

SpatialMeshは周囲の環境に合わせて動的に生成され、調整や設定がビルド前のUnity上だけでは予測の難しい機能の一つです。SpatialMeshの設定を細かく行う際はHoloGraphicRemoteを使用すると良いでしょう。

〇ドキュメント

microsoft.github.io