本日はHoloLensの表現の調査枠です。
HoloLensでは[SpatialAwareness]によってユーザーの周囲の物理空間をスキャンし、[SpatialMesh]を貼ることで現実世界の物理情報をホログラムに反映することができます。
この設定は[MixedRealityToolkit(MRTK)]によってプロジェクトごとに行えます。
今回はアプリケーション内でこの設定を変更することを行います。
SpatialAwarenessに関しては以前の調査も参考にしてください。
〇SpatialMeshの設定
HoloLensではSpatialMeshの設定を次の様にして変更します。MixedRealityToolkitを導入し設定を行ったシーンで説明します。
①hierarchyウィンドウから[MixedRealityToolkit]オブジェクトを選択します。
②inspectorウィンドウから[MixedRealityToolkit]のサイドタブから[SpatialAwareness]を選択します。
③[SpatialMeshObserver]を開きます。これがSpatialMeshの設定項目です。
最小限で簡単に設定項目を説明します。
●General Settings
・Startup Behavior
この設定はSpatialMeshの生成を始めるタイミングを指定します。
デフォルトではAutoになっており自動でアプリケーション開始時にスキャンとメッシュの生成が開始されます。
もう一つ[manual Start]が設定でき、これはスクリプトからスキャンのタイミングを指定する場合に設定します。
・Update interval
この設定はSpatialMeshの生成感覚です。
デフォルトでは1.0~5.0に設定されており、これは指定された秒数おきにSpatialMeshが更新されます。
●Physics Settings
SpatialMeshは通常床にオブジェクトを置く、机や壁などでオブジェクトが隠れるような描画を行うなど現実の世界とデジタル情報との対話に使用されます。 これらにはコライダーが貼られており、通常の場合開発者が設定しなくても物理設定が行われています。 ここではその設定を変更します。
・Physics layer
これは生成されたSpatialMeshに対して与えられるUnityのLayerを設定します。
デフォルトでは31:Spatial Awarenessという名前が割り当てられます。コライダーとの接触判定やLayCastにおいて使用されます。
●DisplaySettings
これは生成されるSpatialMeshの表示に関する設定を行います。
・DisplayOption
これはSpatialMeshの表示のマテリアルをどのように割り当てるかを指定します。
[Visual]と[Occlusion]が設定できそれぞれ下部で設定されたMaterialがSpatialMeshに対して適応されます。
また[None]にすることでメッシュの表示を完全になくすことができます。
〇SpatialMeshの表示
アプリケーション上でSpatialMeshは[MixedRealityPlaySpace]オブジェクトの子オブジェクト、[Spatial Awareness System]の子オブジェクトとして格納されます。
これはUnityの[HoloGraphicRemote]を使用することで確認することができます。
HoloGraphicRemoteでPCとHoloLensを接続した状態でUnityを実行すると次のように確認できます。
SpatialMeshは周囲の環境に合わせて動的に生成され、調整や設定がビルド前のUnity上だけでは予測の難しい機能の一つです。SpatialMeshの設定を細かく行う際はHoloGraphicRemoteを使用すると良いでしょう。