MRが楽しい

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

MRTK v2のドキュメントを少しずつ読み解く デバイスのメッシュオブザーバーの構成

本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。
f:id:bluebirdofoz:20210131224944j:plain

MRTKv2のGuidesドキュメント

以下のドキュメントを読み進めていきます。
microsoft.github.io

SpatialAwarenessSystem の小項目に当たります。
microsoft.github.io

SpatialAwarenessSystem の章は既に有志による日本語翻訳が行われています。
hololabinc.github.io

バイスのメッシュオブザーバーの構成

このガイドでは MRTK で使用できる Spatial MeshObserver の構成について説明します。
MRTK によって提供されるデフォルトの実装は WindowsMixedRealitySpatialMeshObserver クラスです。
ただし、この記事のプロパティの多くは他のカスタム Observer に適用されます。

プロファイル設定

SpatialAwarenessSystem の SpatialMesh Observer プロファイルを構成するときは次の2つの項目を定義する必要があります。
1.具体的なオブザーバータイプの実装
2.オブザーバーを実行するためにサポートされているプラットフォームのリスト
f:id:bluebirdofoz:20210131224856j:plain

IMixedRealitySpatialAwarenessObserver を拡張した場合の各設定項目を記述します。
f:id:bluebirdofoz:20210131224906j:plain

General Settings(一般設定)

Startup Behavior

Startup Behavior はインスタンス化されたときにオブザーバーが実行を開始するかどうかを指定します。
オプションは2つのあり、次のとおりです。

・Auto Start:オブザーバーが初期化時に自動で開始する
・Manual Start:オブザーバーは開始の指示を待ちます

Manual Start を使用する場合は、実行時にコードを使用して再開および一時停止する必要があります。
microsoft.github.io

Update Interval

空間メッシュデータを更新するためのプラットフォームへのリクエスト間の時間(秒単位)です。
通常の値は0.1~5.0秒の範囲です。

Is Stationary Observer

オブザーバーを静止させたままにするか、ユーザーと一緒に移動して更新するかを示します。

・true:[Observation Extents]によって定義されたボリュームを持つ[Observer Shape]は起動時の原点に静止します。
・false:[Observation Extents]によって定義されたボリュームを持つ[Observer Shape]はユーザーの頭に従って移動します。

以下のプロパティで定義されるオブザーバースペースの外側の物理領域のメッシュデータは存在しません。
・Is Stationary Observer
・Observer Shape
・Observation Extents

Observer Shape

Observer Shape はメッシュオブザーバーがメッシュを観察するときに使用するボリュームのタイプを定義します。
サポートされているオプションは次のとおりです。

・Axis AlignedCube:アプリケーションの起動時に決定されたワールド座標系の軸と整列したの長方形。
・User AlignedCube:ユーザーのローカル座標系に合わせて回転する長方形。
Sphere:ワールドスペースの原点を中心とする球形のボリューム。[Observation Extents]のX値は球の半径として使用されます。

Observation Extents

Observation Extents はメッシュの観測を行う観測点からの距離を定義します。

Physics Settings(物理設定)

Physics Layer

UnityPhysics および RayCast と対話するために空間メッシュオブジェクトが配置される物理レイヤーを指定します。
MRTK は SpatialAwareness オブザーバーが使用するデフォルトレイヤーとしてレイヤー 31 を予約します。

Recalculate Normals

メッシュオブザーバーが観測後にメッシュの法線を再計算するかどうかを指定します。
この設定はメッシュで返さないプラットフォームで有効な法線データを含むメッシュをアプリケーションが受信するために使用できます。

Physics Material

空間メッシュオブジェクトに設定する物理特性マテリアルを設定します。

Level of Detail Settins(詳細レベルの設定)

Level of Detail

空間メッシュデータの詳細レベル(LOD)を指定します。
現在定義されている値は Coarse、Medium、Fine、および Custom です。

・Coarse(粗い):アプリケーションのパフォーマンスへの影響が小さく、ナビゲーション/平面の検出に最適です。
・Medium(中):大きな特徴、床と壁、およびオクルージョンの詳細の両方について環境を継続的にスキャンする場合に役立ちます。
・Fine(詳細):アプリケーションのパフォーマンスに大きな影響を与えます。オクルージョンに最適なオプションです。
・Custom:アプリケーションでTriangles/Cubic Meterプロパティを指定する必要があり、精度とパフォーマンスを調整できます。

Triangles/Cubic Meter

[Level of Detail]の[Custom]設定を使用する場合に有効です。
空間メッシュの三角形密度を指定します。

Display Settings(ディスプレイの設定)

Display Option

オブザーバーが空間メッシュをどのように表示するかを指定します。
サポートされている値は次のとおりです。

・None:オブザーバーはメッシュをレンダリングしません。
・Visible:メッシュデータはVisibleMaterialを使用して表示されます。
・Occlusion:メッシュデータは、オクルージョンマテリアルを使用してシーン内のアイテムをオクルージョンします。

オブザーバーはコードを介して実行時に再開/一時停止できます。
microsoft.github.io

[Display Option]を[None]に設定してもオブザーバーの実行は停止しません。
全てのオブザーバーを停止したい場合、アプリケーションはを介して全てのオブザーバーを一時停止する必要があります

Visible Material

空間メッシュを視覚化するときに使用するマテリアルを示します。

Occlusion Material

空間メッシュがホログラムを遮るのに使用される材料を示します。