シーンの理解Scene understanding

シーンについて理解することで、さまざまな環境に対応したアプリケーションの開発を直感的に行うことができるように設計された、構造化された高レベルの環境表現を利用できます。Scene understanding provides Mixed Reality developers with a structured, high-level environment representation designed to make developing for environmentally aware applications intuitive. シーンを理解することは、これを実現するために、複雑ではない構造化された 空間マッピング や新しい AI 駆動型ランタイムなど、既存の mixed reality ランタイムの力を組み合わせることになります。Scene understanding does this by combining the power of existing mixed reality runtimes, such as the highly accurate less structured spatial mapping and new AI driven runtimes. これらのテクノロジを組み合わせることで、シーンの理解によって、Unity や ARKit/Arkit などのフレームワークで使用されているような3D 環境の表現が生成されます。By combining these technologies, Scene understanding generates representations of 3D environments that are similar to those you may have used in frameworks such as Unity or ARKit/ARCore. シーン認識のエントリポイントは、シーンオブザーバーで始まります。これは、アプリケーションが新しいシーンを計算するために呼び出されます。The Scene understanding entry point begins with a Scene Observer, which is called by your application to compute a new scene. 現在、このテクノロジは、3つの独立した関連オブジェクトカテゴリを生成することができます。単純化された watertight 環境メッシュでは、複雑な部分を除いて、平面の部屋構造を推測します。また、四角形を呼び出す位置には平面領域を使用し、 空間マッピング メッシュのスナップショットを作成します。Today, the technology is capable of generating 3 distinct but related object categories: simplified watertight environment meshes that infer the planar room structure without clutter, plane regions for placement that we call Quads, and a snapshot of the spatial mapping mesh that aligns with the Quads/Watertight data that we surface.

空間マッピングメッシュ, ラベル付き平面サーフェス, watertight メッシュ

このドキュメントでは、シナリオの概要を説明し、シーンの理解と空間マッピングの共有の関係を明確にすることを目的としています。This document is intended to provide a scenario overview and to clarify the relationship that Scene understanding and Spatial mapping share.

シーンの理解による開発Developing with Scene Understanding

この記事では、シーンの実行時と概念について説明します。This article only serves to introduce the Scene Understanding runtime and concepts. シーンを理解して開発する方法に関するドキュメントをお探しの場合は、次のことをお勧めします。If you are looking for documentation on how to develop with Scene Understanding, you may be interested in the following:

シーンについて SDK の概要Scene Understanding SDK overview

サンプルの GitHub サイトから、シーンについてのサンプルアプリをダウンロードできます。You can download the Scene Understanding Sample app from the sample GitHub site:

シーンの理解のサンプルScene Understanding Sample

デバイスがなく、サンプルシーンにアクセスしてシーンの理解を試す必要がある場合は、サンプルアセットフォルダーにシーンがあります。If you do not have a device and wish to access sample scenes to try Scene Understanding out, there are scenes in the sample asset folder:

シーンについてのサンプルシーンScene Understanding Sample Scenes


シーンを理解するための開発方法や、シーンの理解のしくみとその開発方法の詳細については、「 シーンについて SDK の概要 」を参照してください。If you are looking for specific details on how to develop for Scene Understanding or details on how Scene understanding works and how to develop for it, see the Scene Understanding SDK overview documentation.


デバイス サポートDevice support

機能Feature HoloLens (第 1 世代)HoloLens (1st gen) HoloLens 2HoloLens 2 イマーシブ ヘッドセットImmersive headsets
シーンの理解Scene understanding ✔️✔️

一般的な利用シナリオCommon usage scenarios

一般的な空間マッピングの使用シナリオの図: 配置、閉鎖、物理、およびナビゲーションIllustrations of common Spatial mapping usage scenarios: Placement, Occlusion, Physics and Navigation
一般的な空間マッピングの使用シナリオ: 配置、遮蔽、物理、およびナビゲーション。Common spatial mapping usage scenarios: placement, occlusion, physics and navigation.

環境に対応するアプリケーション (配置、閉鎖、物理など) の主要なシナリオの多くは、空間マッピングとシーンの理解の両方でアドレス指定できます。このセクションでは、これらの違いについて説明します。Many of the core scenarios for environment aware applications (placement, occlusion, physics, etc.) are addressable by both Spatial mapping and Scene understanding, and this section highlights these differences. シーンの理解と空間マッピングの主な違いは、構造と簡潔さの最大の精度と待機時間のトレードオフです。A core difference between Scene understanding and Spatial mapping is a tradeoff of maximal accuracy and latency to structure and simplicity. アプリケーションで、可能な限り最短の待機時間とメッシュトライアングルを必要とする場合は、空間マッピングを直接使用します。If your application requires the lowest-latency possible and mesh triangles that only you will want to access, use Spatial Mapping directly. より高いレベルの処理を実行している場合は、機能のスーパーセットを提供する必要があるため、シーンを理解するモデルに切り替えることを検討してください。If you are performing higher level processing, you may consider switching to the Scene understanding model as it should provide you with a superset of functionality. また、シーンの理解により、空間マッピングメッシュのスナップショットが表現の一部として提供されるため、可能な限り完全かつ正確な空間マッピングデータに常にアクセスできることに注意してください。Also note that because Scene understanding provides a snapshot of the spatial mapping mesh as part of its representation, you will always have access to the most complete and accurate spatial mapping data possible.

次のセクションでは、新しいシーンの概要 SDK のコンテキストにおける主要な空間マッピングのシナリオについて説明します。The following sections re-visit the core spatial mapping scenarios in the context of the new Scene understanding SDK.


シーンの理解は、配置シナリオを簡略化するために特別に設計された新しい構造を提供します。Scene understanding provides new constructs specifically designed to simplify placement scenarios. シーンでは、ホログラムを配置できるフラットサーフェスを記述する SceneQuads と呼ばれるプリミティブを計算できます。A scene can compute primitives called SceneQuads which describe flat surfaces on which holograms can be placed. SceneQuads は、特に配置を中心に設計されており、2D サーフェイスを記述し、そのサーフェイス上に配置するための API を提供しています。SceneQuads have specifically been designed around placement and describe a 2D surface and provide an API for placement on that surface. 以前は、トライアングルメッシュを使用して配置を実行する場合、オブジェクトの配置の適切な場所を識別するために、クワッドのすべての領域をスキャンし、穴の塗りつぶし/後処理を実行する必要がありました。Previously, when using the triangle mesh to perform placement, one had to scan all areas of the quad and perform hole filling/post-processing to identify good locations for object placement. これは、四角形では常に必要となるわけではありません。これは、実行時には、スキャンされなかったクワッドの領域を推定することができ、サーフェイスの一部ではない四角形の領域を無効にすることができるためです。This is not always necessary with Quads, as the Scene understanding runtime is capable of inferring which areas of the quad that were not scanned, and invalidate areas of the quad that are not part of the surface.

推定が無効になっている SceneQuads。スキャンされたリージョンの配置領域をキャプチャします。SceneQuads with inference disabled, capturing placement areas for scanned regions.
イメージ #1 -推定を無効にし、スキャンされたリージョンの配置領域をキャプチャします。Image #1 - SceneQuads with inference disabled, capturing placement areas for scanned regions.

推論が有効になっている四角形は、スキャンされた領域に限定されなくなりました。Quads with inference enabled, placement is no longer limited to scanned areas.
イメージ #2 -推論が有効になっている四角形、配置はスキャンされた領域に限定されなくなりました。Image #2 - Quads with inference enabled, placement is no longer limited to scanned areas.

アプリケーションで、環境の固定構造に2D または3D のホログラムを配置する場合は、 空間マッピング メッシュからこの情報を計算することをお勧めします。これにより、配置のための SceneQuads の簡略化と利便性が向上します。If your application intends to place 2D or 3D holograms on rigid structures of your environment, the simplicity and convenience of SceneQuads for placement is preferable to computing this information from the spatial mapping mesh. このトピックの詳細については、「シーンについての SDK リファレンス」を参照してください。For more details on this topic, please see the Scene understanding SDK reference

メモ 空間マッピングメッシュに依存するレガシ配置コードの場合、EnableWorldMesh 設定を設定することによって、空間マッピングメッシュを SceneQuads と共に計算できます。Note For legacy placement code that depends on the spatial mapping mesh, the spatial mapping mesh can be computed along with SceneQuads by setting EnableWorldMesh setting. シーンを理解する API がアプリケーションの待機時間の要件を満たしていない場合は、引き続き 空間マッピング apiを使用することをお勧めします。If Scene understanding API does not satisfy your application's latency requirements, we recommend you continue to use the Spatial mapping API.


空間マッピングオクルージョン は、環境のリアルタイム状態をキャプチャするための最も低い方法にとどまります。Spatial mapping occlusion remains the least latent way to capture the real-time state of the environment. これは、高度に動的なシーンで遮蔽を提供するのに便利な場合がありますが、いくつかの理由から、遮蔽のシーンの理解を考慮することをお勧めします。Though this may be useful to provide occlusion in highly dynamic scenes, you may wish to consider Scene understanding for occlusion for several reasons. シーンの理解によって生成された空間マッピングメッシュを使用する場合は、ローカルキャッシュに格納されないため、認識 Api からは使用できない空間マッピングからデータを要求できます。If you use the spatial mapping mesh generated by Scene Understanding, you can request data from spatial mapping that would not be stored in the local cache and therefore not available to you from the perception APIs. Watertight メッシュと共に遮蔽に空間マッピングを使用すると、追加の値が提供されます。特に、スキャンされていない部屋の構造が完了します。Using Spatial Mapping for occlusion alongside watertight meshes will provide additional value, specifically completion of un-scanned room structure.

シーンの理解の待機時間の増加に合わせて要件が許容できる場合、アプリケーション開発者は、シーンについて理解する watertight メッシュを使用することを検討する必要があります。また、空間マッピングメッシュは平面表現と連携していると考えられます。If your requirements can tolerate the increased latency of Scene understanding, application developers should consider using the Scene understanding watertight mesh, and presumably the spatial mapping mesh in unison with planar representations. これにより、簡略化された watertight オクルージョンが最も現実的なオクルージョンマップを提供する、より細かい nonplanar geometry を持つ、"両方のワールドに最適" のシナリオが提供されます。This would provide a "best of both worlds" scenario where simplified watertight occlusion is married with finer nonplanar geometry providing the most realistic occlusion maps possible.


シーンの理解によって、空間がセマンティクスで分解される watertight メッシュが生成されます。特に、空間マッピングのメッシュによって適用される物理的な多くの制限に対処します。Scene understanding generates watertight meshes that decompose space with semantics, specifically to address many limitations to physics that spatial mapping meshes impose. Watertight 構造体は、物理的な光のキャストを常にヒットさせると共に、セマンティック分解によって、室内ナビゲーションのナビゲーションメッシュをより簡単に生成できます。Watertight structures ensure physics ray casts always hit, and semantic decomposition allows for simpler generation of nav meshes for indoor navigation. オクルージョンのセクションで説明したように、EnableSceneObjectMeshes と EnableWorldMesh を使用してシーンを作成すると、最も物理的に完全なメッシュが可能になります。As described in the section on occlusion, creating a scene with EnableSceneObjectMeshes and EnableWorldMesh will produce the most physically complete mesh possible. 環境メッシュの watertight プロパティを使用すると、ヒットテストがサーフェイスのヒットに失敗するのを防ぐことができます。また、メッシュデータは、領域構造だけでなく、シーン内のすべてのオブジェクトと対話することを保証します。The watertight property of the environment mesh will prevent hit tests from failing to hit surfaces and the mesh data will ensure that physics are interacting with all objects in the scene and not just the room structure.

セマンティッククラスによって分解された平面メッシュは、ナビゲーションとパスの計画に最適な構成要素であり、「 空間マッピングのナビゲーション の概要」で説明されている多くの問題を緩和します。Planar meshes decomposed by semantic class are ideal constructs for navigation and path planning, easing many of the issues described in the Spatial mapping navigation overview. シーンで計算された SceneMesh オブジェクトは、既に表面の種類によって構成解除されており、ナビゲーションメッシュの生成が、ウォーク可能なサーフェイスに限定されます。The SceneMesh objects computed in the scene are already de-composed by surface type ensuring that nav-mesh generation is limited to surfaces that can be walked on. フロア構造は単純であるため、Unity などの3d エンジンでの動的ナビゲーションメッシュ生成は、リアルタイムの要件に応じて達成できます。Due to the simplicity of the floor structure, dynamic nav-mesh generation in 3d engines such as Unity are attainable depending on real-time requirements.

現在でも正確なナビゲーションメッシュを生成するには後処理が必要です。つまり、アプリケーションでは、移動が乱雑またはテーブルを通過しないように、フロアに occluders を投影する必要があります。これを実現する最も正確な方法は、EnableWorldMesh フラグを使用してシーンが計算された場合に提供される世界のメッシュデータを射影することです。Generating accurate nav-meshes currently still requires post-processing, namely applications must still project occluders on to the floor to ensure that navigation does not pass through clutter/tables etc... The most accurate way to accomplish this is to project the world mesh data which is provided if the scene is computed with the EnableWorldMesh flag.


空間マッピングの視覚化を使用して、環境のリアルタイムのフィードバックを行うことができますが、平面オブジェクトと watertight オブジェクトの単純化によってパフォーマンスや視覚品質が向上する多くのシナリオがあります。While spatial mapping visualization can be used for real-time feedback of the environment, there are many scenarios where the simplicity of planar and watertight objects provides more performance or visual quality. 四角形または平面 watertight メッシュによって提供される平面サーフェスに射影した場合、空間マッピングを使用して記述されているシャドウプロジェクションとアース手法は、より見栄えが良い場合があります。Shadow projection and grounding techniques that are described using spatial mapping may be more pleasing if projected on the planar surfaces provided by Quads or the planar watertight mesh. これは、シーンが推測されることが原因で完全な事前スキャンが最適ではない環境やシナリオでは特に当てはまり、完全な環境と平面の前提条件によって成果物が最小化されます。This is especially true for environments/scenarios where thorough pre-scanning is not optimal due to the fact that the scene will infer, and complete environments and planar assumptions will minimize artifacts.

さらに、空間マッピングによって返されるサーフェスの合計数は、内部空間キャッシュによって制限されます。一方、シーン認識のバージョンの空間マッピングメッシュは、キャッシュされていない空間マッピングデータにアクセスできます。Additionally, the total number of surfaces returned by Spatial Mapping is limited by the internal spatial cache, while Scene understanding's version of the Spatial Mapping mesh is able to access spatial mapping data that is not cached. このため、シーンを理解することは、視覚エフェクトやさらにメッシュ処理を行うために、より大きなスペース (たとえば、1つの部屋を超える) のメッシュ表現をキャプチャする場合に適しています。Because of this, Scene understanding is more suited to capturing mesh representations for larger spaces (for example, larger than a single room) for visualization or further mesh processing. EnableWorldMesh で返されるワールドメッシュの詳細レベルは、全体にわたって一貫しています。これにより、ワイヤーフレームとしてレンダリングした場合により良い視覚化が得られる可能性があります。The world mesh returned with EnableWorldMesh will have a consistent level of detail throughout, which may yield a more pleasing visualization if rendered as wireframe.

参照See Also