Spatial Mapping Collider
空間マッピングの低レベル API

Spatial Mapping Renderer

Spatial Mapping Renderer コンポーネントは、空間マッピングしたサーフェスを表示します。これは視覚的にサーフェスをデバッグしたり、環境に視覚的なエフェクトを加えるのに利用できます。

Spatial Mapping システムは、Spatial Mapping Renderer コンポーネントに現実世界の変化を定期的に送信します。コンポーネントが変化を受信すると、サーフェスのデータは Mesh FilterMesh Renderer コンポーネントを持つゲームオブジェクトにベイクされます。Spatial Mapping Renderer コンポーネントはサーフェス (の情報を持つ) ゲームオブジェクトの生存期間を管理します。つまり、Spatial Mapping Renderer コンポーネントは、シーンにおけるサーフェスゲームオブジェクトの Mesh Renderer の作成、更新、削除を処理します。

Unity エディターの Spatial Mapping Renderer コンポーネント
Unity エディターの Spatial Mapping Renderer コンポーネント

Render Settings

以下の表は、Spatial Mapping Renderer コンポーネントで可能なすべてのレンダー設定を説明しています。

項目 説明
Render State All Surface GameObjects take their material from the Render State setting. When you change the Render State setting (for example, by script during run time), all Surface GameObjects’ render Materials change to those of the chosen Render State setting. This reduces the number of draw calls, which in turn improves the rendering performance. Using a shared material also reduces the amount of memory used by the application during rendering. Select one of the three options to render Surfaces.

See Using the Spatial Mapping Renderer, below, for more information.
Occlusion Apply the Material defined in Occlusion Material. This is a transparent Material which hides GameObjects behind real world Surfaces. See Using the Spatial Mapping Renderer, below, for more information.

Note: This enables all of a Surface’s Mesh Renderers, overriding any other setting.
Visualisation Apply the Material defined in Visualization Material for visualizing the Spatial Mapping Surfaces (usually a wireframe Material) in your environment. See Using the Spatial Mapping Renderer, below, for more information.

Note: This enables all of a Surface’s Mesh Renderers, overriding any other setting.
None Spatial Mapping サーフェスに割り当てられたすべての Mesh Renderer を無効にします。
Occlusion Material ここで選択するマテリアルは、Spatial Mapping Renderer の Render StateOcclusion に設定されている場合に適用されます。 デフォルトはビルトインの SpatialMappingOcclusion マテリアルです。
Visual Material ここで選択するマテリアルは、Spatial Mapping Renderer の Render StateVisualization に設定されている場合に適用されます。デフォルトはビルトインの SpatialMappingWireframe マテリアルです。

General Settings

See SpatialMapping General Settings.

Spatial Mapping Renderer の使用

このコンポーネントを使うと、生成されたすべてのサーフェスで簡単に動的にマテリアルを変更することができます。Unity は事前に構築済みの 2 種類のマテリアルタイプを提供しています。

Occlusion Material

このマテリアルは、ゲームオブジェクトを透明にしますが、そのゲームオブジェクトを通してホログラムを見ることはできません。例えば、現実世界の机の下にゲームで使うホログラフィックオブジェクトを隠す必要がある場合に利用できます。

Visual Material

このマテリアルは、Unity が Spatial Mapping Renderer コンポーネントのすべてのサーフェスに適用するワイヤーフレームマテリアルです。デフォルトのワイヤーフレームシェーダーでは、ワイヤーフレームの色は現実世界の距離を表します。通常は、これがデバッグに最も便利なオプションですが、視覚効果にも使用できます。シェーダーは距離を示すためにカラーマッピングを使用します。以下の表は、カラーマッピングを示しています。

HoloLens からの距離
0 - 1 メートル
1 - 2 メートル
2 - 3 メートル
3 - 4 メートル
4 - 5 メートル
5 - 6 メートル シアン
6 - 7 メートル マジェンタ
7 - 8 メートル マルーン
8 - 9 メートル ティール (鴨の羽色)
9 - 10 メートル オレンジ
10 メートル以上
Spatial Mapping Renderer コンポーネントの Visualization マテリアルに使用したデフォルトのワイヤーフレームシェーダー。ワイヤーフレームの色は距離を表します。
Spatial Mapping Renderer コンポーネントの Visualization マテリアルに使用したデフォルトのワイヤーフレームシェーダー。ワイヤーフレームの色は距離を表します。

新しいマテリアルを Visual MaterialOcclusion Material のいずれかに指定するとき、該当するサーフェスゲームオブジェクトのマテリアルは自動的に変更されるわけではありません。新しいマテリアルをすべてのサーフェスに適用するためには、Render Setting を新たに変更したマテリアル (Visual MaterialOcclusion Material) に設定する必要があります。

Unity エディターから(シーンのゲームオブジェクトに直接)__Render State__ の Occlusion MaterialVisual Material プロパティーを割り当てただけの場合、Spatial Mapping は Spatial Mapping Renderer コンポーネントと同時にそれらを破棄します。 ただし、Spatial Mapping は、コンポーネントをスクリプトを通して割り当てられたり、変更された Visualization マテリアルOcclusion マテリアル を破棄しないため、手動で破棄する必要があります。

以下のコードスニペットは、Spatial Mapping が実行時にすべてのサーフェスゲームオブジェクトに動的に適用するマテリアルを変更します。


SpatialMappingRenderer renderer = spatialMappingGameObject.AddComponent<SpatialMappingRenderer>();
renderer.visualMaterial = new Material(Shader.Find("VR/SpatialMapping/Wireframe"));
renderer.renderState = SpatialMappingRenderer.RenderState.Visualization;

サーフェスゲームオブジェクト

Spatial Mapping Renderer コンポーネントは、それぞれ につき 1 組のサーフェスゲームオブジェクトを作成します。これらは、サーフェスゲームオブジェクトの親となるシーンの下に表示されます。

親のサーフェスゲームオブジェクトと子のサーフェスゲームオブジェクト
親のサーフェスゲームオブジェクトと子のサーフェスゲームオブジェクト

Spatial Mapping Renderer がサーフェスゲームオブジェクトを生成するときに、以下のコンポーネントが含まれます。

Spatial Mapping Collider によって作成されたサーフェスゲームオブジェクトのコンポーネントのインスペクター
Spatial Mapping Collider によって作成されたサーフェスゲームオブジェクトのコンポーネントのインスペクター

シーンに複数の Spatial Mapping Renderer コンポーネントを追加すると、各コンポーネントはそれぞれ 1 組のサーフェスゲームオブジェクトを生成します。例えば、Spatial Mapping Renderer コンポーネントを持つ 2 つのゲームオブジェクトがある場合、シーンには ランタイムに各コンポーネントによって生成された 2 組のサーフェスゲームオブジェクトが含まれます。これは、最適化を行う上で注意する必要があります。


  • 2018–05–01 編集レビュー を行ってパブリッシュされたページ

  • Hololens の空間マッピングは 2017.3 に更新

Spatial Mapping Collider
空間マッピングの低レベル API