シーンの理解

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

  • 単純化された watertight 環境メッシュ (乱雑されることなく平面の部屋構造を推論する)
  • 四角形を呼び出す位置の平面領域
  • サーフェイスに配置される四角形/Watertight データと一致する 空間マッピング メッシュのスナップショット

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

このドキュメントでは、シナリオの概要を説明し、シーンの理解と空間マッピングの共有の関係を明確にすることを目的としています。 シーンの理解が動作していることを確認するには、次のような ホログラム空間認識の設計 に関するビデオデモをご覧ください。

このビデオは、"Designing Holograms" の HoloLens 2 アプリから採用されたものです。すべてのエクスペリエンスは、こちらからダウンロードしてご利用いただけます。

シーンの理解による開発

この記事では、シーンの実行時と概念について説明します。 シーンを理解して開発する方法に関するドキュメントをお探しの場合は、次の記事を参照してください。

シーンについて SDK の概要

サンプル GitHub サイトから、シーンについてのサンプルアプリをダウンロードできます。

シーンの理解のサンプル

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

シーンについてのサンプルシーン

SDK

シーンの理解による開発に関する具体的な詳細については、「シーンについての SDK の概要 」を参照してください。

サンプル

デバイス サポート

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

一般的な利用シナリオ

一般的な空間マッピングの使用シナリオの図: 配置、閉鎖、物理、およびナビゲーション
一般的な空間マッピングの使用シナリオ: 配置、遮蔽、物理、およびナビゲーション。


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

次のセクションでは、新しいシーンの概要 SDK のコンテキストでの主要な空間マッピングのシナリオについて説明します。

配置

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

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

推論が有効になっている四角形は、スキャンされた領域に限定されなくなりました。
イメージ #2 -推論が有効になっている四角形、配置はスキャンされた領域に限定されなくなりました。


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

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

オクルージョン

空間マッピングオクルージョン は、環境のリアルタイム状態をキャプチャするための最も低い方法にとどまります。 これは、高度に動的なシーンで遮蔽を提供するのに便利な場合がありますが、いくつかの理由から、遮蔽のシーンの理解を考慮することをお勧めします。 シーンの理解によって生成された空間マッピングメッシュを使用する場合は、ローカルキャッシュに格納されておらず、認識 Api からは使用できない空間マッピングからデータを要求できます。 Watertight メッシュと共にオクルージョンに空間マッピングを使用すると、余分な値が提供され、特に unscanned 室構造が完成します。

シーンの理解の待機時間の増加に合わせて要件が許容される場合、アプリケーション開発者は、シーンについて理解する watertight メッシュと、空間マッピングメッシュを平面表現と連携させることを検討する必要があります。 これにより、簡略化された watertight オクルージョンが最も現実的なオクルージョンマップを提供する、より細かい nonplanar geometry を持つ、"両方のワールドに最適" のシナリオが提供されます。

物理計算

シーンの理解によって、空間がセマンティクスで分解される watertight メッシュが生成されます。特に、空間マッピングのメッシュによって適用される物理的な多くの制限に対処します。 Watertight 構造体は、物理的な光のキャストを常にヒットさせると共に、セマンティック分解によって、室内ナビゲーションのナビゲーションメッシュをより簡単に生成できます。 オクルージョンのセクションで説明したように、EnableSceneObjectMeshes と EnableWorldMesh を使用してシーンを作成すると、最も物理的に完全なメッシュが可能になります。 環境メッシュの watertight プロパティによって、ヒットテストがサーフェイスのヒットに失敗するのを防ぐことができます。 メッシュデータを使用すると、物理的なものは、部屋構造だけでなく、シーン内のすべてのオブジェクトと対話します。

セマンティッククラスによって分解された平面メッシュは、ナビゲーションとパスの計画に最適な構成要素であり、「 空間マッピングのナビゲーション の概要」で説明されている多くの問題を緩和します。 シーンで計算された SceneMesh オブジェクトは、表面の種類によって構成解除されます。これにより、ナビゲーションメッシュの生成が、ウォーク可能なサーフェイスに限定されます。 フロア構造の単純さにより、Unity などの3d エンジンでの動的なナビゲーションメッシュの生成は、リアルタイムの要件に応じて達成できます。

現在のところ、正確な nav メッシュを生成するには後処理が必要です。つまり、アプリケーションでは、occluders をフロアに射影して、移動が乱雑な/テーブルを通過しないようにする必要があります。 これを実現する最も正確な方法は、ワールドメッシュデータを投影することです。これは、EnableWorldMesh フラグを使用してシーンが計算された場合に提供されます。

グラフ

空間マッピングの視覚化を使用して、環境のリアルタイムのフィードバックを行うことができますが、平面オブジェクトと watertight オブジェクトの単純化によってパフォーマンスや視覚品質が向上する多くのシナリオがあります。 四角形または平面 watertight メッシュによって提供される平面サーフェスに射影した場合、空間マッピングを使用して記述されているシャドウプロジェクションとアース手法は、より見栄えが良い場合があります。 これは、シーンが推測されるため、完全な事前スキャンが最適ではない環境やシナリオでは特に当てはまり、完全な環境と平面の前提条件によって成果物が最小化されます。

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

参照