シーンの理解

シーンについて理解することで Mixed Reality の開発者は、さまざまな環境に対応したアプリケーションの開発を直感的に行うことができるように設計された、高レベルの構造化環境表現を利用できます。 シーンの理解は、高精度であるが構造化されていない空間マッピングや新しい AI 駆動のランタイムなど、既存の複合現実ランタイムの能力を組み合わせることでこれを実現します。 これらのテクノロジを組み合わせることで、シーンの理解では、Unity や ARKit または ARCore などのフレームワークで使用したものと同様の 3D 環境の表現を生成します。 シーンの理解のエントリ ポイントは、新しいシーンを計算するためにアプリケーションによって呼び出される Scene Observer で始まります。 現在、このテクノロジは、3つの異なるが関連するオブジェクトカテゴリを生成できます。

  • 簡素化された水密環境メッシュにより、平面的な部屋の構造をすっきりと推測できる
  • Quads と呼ばれる配置の平面領域
  • 表面仕上げする Quads または Watertight データと位置合わせする空間マッピング メッシュのスナップショット

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

このドキュメントは、シナリオの概要を示し、シーンの理解と空間マッピングで共有される関係を明確にすることを目的にしています。 シーンの理解の実際をご覧になりたい場合は、以下のホログラムの設計-空間認識の動画体験版をご覧ください。

このビデオは、"Designing Holograms" HoloLens 2 アプリから撮影されました。 完全なエクスペリエンスをダウンロードしてご利用いただくには、ここから入手できます。

シーンを理解して開発する

この記事は、シーン理解ランタイムと概念を紹介するためだけのものです。 シーン理解を使用して開発する方法に関するドキュメントを探している場合は、次の記事をご覧ください。

シーンの理解 SDK の概要

シーンの理解のサンプル アプリは、サンプル GitHub サイトからダウンロードできます。

シーンの理解のサンプル

デバイスがなく、サンプル シーンにアクセスしてシーンの理解を試したい場合は、サンプル アセット フォルダーにシーンがあります。

シーンの理解のサンプル シーン

SDK

シーン理解を使用した開発の詳細については、シーン理解 SDK の概要のドキュメントを参照してください。

サンプル

デバイス サポート

機能 HoloLens (第 1 世代) HoloLens 2 イマーシブ ヘッドセット
シーンの理解 ✔️

一般的な利用シナリオ

一般的な空間マッピングの使用シナリオの図: 配置、オクルージョン、物理、ナビゲーション
一般的な空間マッピングの使用シナリオ:配置、オクルージョン、物理学、ナビゲーション。


環境に対応したアプリケーションの多くの主要なシナリオは、空間マッピングとシーンの理解の両方によって対処できます。 これらのコアシナリオには、配置、オクルージョン、物理学などが含まれます。 シーンの理解と空間マッピングの主な違いは、最大の精度と、構造に対する待機時間およびシンプルさのトレードオフです。 アプリケーションで待機時間を可能な限り短くし、メッシュ トライアングルへのアクセスのみが必要な場合は、空間マッピングを直接使用してください。 より高いレベルの処理を行っている場合は、機能のスーパーセットを提供するはずなので、シーン理解モデルに切り替えることを検討してください。 シーンの理解により、表現の一部として空間マッピングメッシュのスナップショットが提供されるため、可能な限り最も完全で正確な空間マッピングデータにいつでもアクセスできます。

次のセクションでは、新しいシーン理解SDKのコンテキストでコア空間マッピングシナリオを再考します。

配置

シーンの理解は、配置シナリオを簡素化するように設計された新しい構成を提供します。 シーンは、SceneQuadsと呼ばれるプリミティブを計算できます。これは、ホログラムを配置できる平面を記述します。 SceneQuads は、配置を中心に設計されており、2D サーフェスを記述し、そのサーフェスに配置するための API を提供します。 以前は、三角形メッシュを使用して配置を行う場合、Quadのすべての領域をスキャンし、穴の塗りつぶし/後処理を実行して、オブジェクトの配置に適した場所を特定する必要がありました。 シーン理解ランタイムはスキャンされなかったQuad領域を推測し、サーフェスの一部ではない領域を無効にするため、これはQuadでは必ずしも必要ではありません。

推論が無効になっている SceneQuads。スキャンされたリージョンの配置領域をキャプチャします。
画像 #1 - 推測が無効になっている SceneQuadsで、スキャンされた領域の配置領域をキャプチャします。

推論が有効になっているクワッドの配置は、スキャンされた領域に限定されなくなりました。
画像 #2 - 推論が有効になっているQuad。配置はスキャンされた領域に制限されなくなりました。


アプリケーションが環境の固定構造に 2D または 3D ホログラムを配置する場合は、空間マッピングメッシュからこの情報を計算するよりも、配置のための SceneQuads の単純さと利便性が望ましいです。 このトピックの詳細については、シーンの理解の SDK リファレンスを参照してください。

空間マッピング メッシュに依存するレガシ配置コードの場合、EnableWorldMesh 設定を設定することによって、SceneQuads とともに空間マッピングメッシュを計算できます。 シーンの理解の API によってアプリケーションの待機時間要件が満たされない場合、引き続き空間マッピング API を使用することをお勧めします。

オクルージョン

空間マッピング オクルージョンは、依然として、環境のリアルタイム状態をキャプチャするための最も待ち時間の少ない方法です。 これは非常に動的なシーンでオクルージョンを提供するために役立つことがありますが、いくつかの理由から、オクルージョンのシーン理解を検討することをお勧めします。 シーンの理解によって生成された空間マッピング メッシュを使用する場合は、ローカル キャッシュに格納されておらず、認識 API から入手できない空間マッピングからデータを要求できます。 水密メッシュと一緒にオクルージョンに空間マッピングを使用すると、特にスキャンされていない部屋の構造を完成させるなど、付加価値が得られます。

要件で、シーンの理解による待機時間の増加が許容できる場合、アプリケーション開発者は、シーンの理解の水密メッシュと、平面表現と調和した空間マッピング メッシュの使用を検討する必要があります。 これにより、単純化された水密オクルージョンが、より細かい非平面ジオメトリと組み合わされて、可能な限り最も現実的なオクルージョンマップを提供する「両方の長所」シナリオを提供します。

物理計算

シーンの理解では、空間マッピング メッシュによって課される物理的性質に対する多くの制限に特に対処するために、セマンティクスで空間を分解する水密ッシュを生成します。 水密構造により、物理光線のキャストが常にヒットし、セマンティック分解により、屋内ナビゲーション用のナビゲーションメッシュをより簡単に生成できます。 オクルージョンに関するセクションで説明したように、EnableSceneObjectMeshes と EnableWorldMesh を使用してシーンを作成すると、可能な限り物理的に最も完全なメッシュが生成されます。 環境メッシュの防水性により、ヒットテストがサーフェスにヒットしないようにします。 メッシュ データは、物理学が部屋の構造だけでなく、シーン内のすべてのオブジェクトと対話処理していることを確認します。

セマンティック クラスによって分解された平面メッシュは、ナビゲーションとパス プランニングに理想的な構成であり、空間マッピング ナビゲーションの概要で説明されている問題の多くを緩和します。 シーンで計算されたSceneMeshオブジェクトは、サーフェスタイプによって分解され、nav-meshの生成が歩くことができるサーフェスに制限されるようにします。 フロア構造のシンプルさにより、Unity などの 3D エンジンでの動的なナビゲーション メッシュの生成は、リアルタイムの要件に応じて実現できます。

正確なナビゲーション メッシュを生成するには、現在でも後処理が必要です。つまり、散らかった物やテーブルなどがナビゲーションで通過されないよう、アプリケーションでは引き続きオクルーダーを床に投影する必要があります。 これを実現する最も正確な方法は、EnableWorldMesh フラグを使用してシーンが計算される場合に提供されるワールド メッシュ データを投影することです。

グラフ

空間マッピングの視覚化は、環境のリアルタイム フィードバックに使用できますが、平面オブジェクトと防水オブジェクトの単純さがより高いパフォーマンスまたは視覚的品質を提供する多くのシナリオがあります。 空間マッピングを使用して記述されたシャドウ投影および接地技術は、クワッドまたは平面水密メッシュによって提供される平面に投影された場合、より快適になる可能性があります。 これは、シーンが推測し、完全な環境と平面の仮定によってアーティファクトが最小限に抑えられるため、完全な事前スキャンが最適ではない環境/シナリオに特に当てはまります。

さらに、空間マッピングによって返される表面の総数は内部の空間キャッシュによって制限されますが、シーンの理解バージョンの空間マッピング メッシュでは、キャッシュされていない空間マッピング データにアクセスできます。 このため、シーンの理解は、視覚化またはさらなるメッシュ処理のためのより大きな空間 (たとえば、1 つの部屋より大きいもの) のメッシュ表現をキャプチャする場合に適しています。 EnableWorldMesh によって返されるワールド メッシュでは、全体を通して一貫した詳細レベルが得られるため、ワイヤフレームとしてレンダリングすると、見た目の良い視覚化が得られる場合があります。

参照