Spatial Mapping Renderer コンポーネントは、空間マッピングしたサーフェスを表示します。これは視覚的にサーフェスをデバッグしたり、環境に視覚的なエフェクトを加えるのに利用できます。
Spatial Mapping システムは、Spatial Mapping Renderer コンポーネントに現実世界の変化を定期的に送信します。コンポーネントが変化を受信すると、サーフェスのデータは Mesh Filter と Mesh Renderer コンポーネントを持つゲームオブジェクトにベイクされます。Spatial Mapping Renderer コンポーネントはサーフェス (の情報を持つ) ゲームオブジェクトの生存期間を管理します。つまり、Spatial Mapping Renderer コンポーネントは、シーンにおけるサーフェスゲームオブジェクトの Mesh Renderer の作成、更新、削除を処理します。
以下の表は、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 State が Occlusion に設定されている場合に適用されます。 デフォルトはビルトインの SpatialMappingOcclusion マテリアルです。 | |
Visual Material | ここで選択するマテリアルは、Spatial Mapping Renderer の Render State が Visualization に設定されている場合に適用されます。デフォルトはビルトインの SpatialMappingWireframe マテリアルです。 |
See SpatialMapping General Settings.
このコンポーネントを使うと、生成されたすべてのサーフェスで簡単に動的にマテリアルを変更することができます。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 メートル以上 | 白 |
新しいマテリアルを Visual Material か Occlusion Material のいずれかに指定するとき、該当するサーフェスゲームオブジェクトのマテリアルは自動的に変更されるわけではありません。新しいマテリアルをすべてのサーフェスに適用するためには、Render Setting を新たに変更したマテリアル (Visual Material か Occlusion Material) に設定する必要があります。
Unity エディターから(シーンのゲームオブジェクトに直接)__Render State__ の Occlusion Material、Visual 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 がサーフェスゲームオブジェクトを生成するときに、以下のコンポーネントが含まれます。
共有の マテリアル (Visualization マテリアルか Occlusion マテリアルかのいずれか。Render State 設定によります)
シーンに複数の Spatial Mapping Renderer コンポーネントを追加すると、各コンポーネントはそれぞれ 1 組のサーフェスゲームオブジェクトを生成します。例えば、Spatial Mapping Renderer コンポーネントを持つ 2 つのゲームオブジェクトがある場合、シーンには ランタイムに各コンポーネントによって生成された 2 組のサーフェスゲームオブジェクトが含まれます。これは、最適化を行う上で注意する必要があります。
2018–05–01 Page published
Hololens の空間マッピングは 2017.3 に更新