シーンの理解オブザーバー

Scene Understandingは、シーン エンティティのセマンティック表現と、HoloLens 2 上の ジオメトリHoloLens (第 1 世代はサポートされていません) を返します。

このテクノロジの想定される使用例を次に示します。

  • 特定の種類の最も近い表面 (壁や床など) にオブジェクトを配置する
  • プラットフォーム スタイルのゲーム用に nav-mesh を構築する
  • 物理エンジンに対応するジオメトリを quad として提供する
  • 同様のアルゴリズムを記述する必要を回避して開発を加速する

Scene Understanding は、MRTK 2.6 の試験的な機能として導入されています。 これは、 と呼ばれる空間オブザーバーとして MRTK 統合されています WindowsSceneUnderstandingObserver 。 Scene Understanding は、レガシ XR パイプラインと XR SDK パイプライン (OpenXR (MRTK 2.7 から開始) と Windows XR プラグインの両方で動作します。 どちらの場合も、 WindowsSceneUnderstandingObserver が使用されます。

注意

リモート処理での Scene Understanding の使用はサポートされていません。

オブザーバーの概要

メッセージが表示された場合、 WindowsSceneUnderstandingObserverSpatialAwarenessSceneObject を返し、アプリケーションが周囲を理解するために役立つ属性を返します。 観察頻度、返されるオブジェクトの種類 (壁、床など)、その他のオブザーバーの動作は、プロファイルを介したオブザーバーの構成によって異なります。 たとえば、オクルージョン マスクが必要な場合は、オブザーバーを構成して四角形を生成する必要があります。 観察されたシーンはシリアル化されたファイルとして保存できます。このファイルを後で読み込んで、エディターの再生モードでシーンを再作成できます。

セットアップ

重要

Scene Understanding は、HoloLens 2 Unity 2019.4 以上でのみサポートされています。

  1. ビルド設定でプラットフォームが UWP に設定されている必要があります。
  2. 機能ツール を使用して Scene Understanding パッケージMixed Reality取得します

Scene Understanding の使用

Scene Understanding の使用を開始する最も簡単な方法は、サンプル シーンを確認する方法です。

Scene Understanding サンプル シーン

Unity で、Project エクスプローラーを使用して でシーン ファイルを開き Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity 、再生を押します。

重要

MRTK 2.6.0 にのみ適用されます - Mixed Reality Feature Tool を使用する場合、または UPM を使用してインポートする場合は、依存関係の問題のため、試験段階 - SceneUnderstanding サンプルをインポートする前に、Demos - SpatialAwareness サンプルをインポートしてください。 詳細については、このGitHub問題を参照してください。

シーンは次の例を示しています。

  • オブザーバーを構成するためのアプリケーション UI での観察されたシーン オブジェクトの視覚化
  • オブ DemoSceneUnderstandingController ザーバーの設定を変更し、関連するイベントをリッスンする方法を示すサンプル スクリプト
  • オフライン開発のためにシーン データをデバイスに保存する
  • エディター内の開発ワークフローをサポートするために、以前に保存したシーン データ (.bytes ファイル) を読み込む

重要

既定では、 ShouldLoadFromFile オブザーバーの プロパティは false に設定されます。 シリアル化されたサンプル ルームの視覚化を確認するには、以下のオブザーバーサービスの構成に関するセクションを参照し、エディターで プロパティを true に設定してください。

注意

サンプル シーンは、レガシ XR パイプラインに基づいて作成されます。 XR SDK パイプラインを使用している場合は、必要に応じてプロファイルを変更する必要があります。 提供されている Scene Understanding Spatial Awareness System プロファイル ( ) と Scene Understanding Observer プロファイル ( と ) は、 DemoSceneUnderstandingSystemProfile DefaultSceneUnderstandingObserverProfile DemoSceneUnderstandingObserverProfile 両方のパイプラインで機能します。

注意

サンプル シーンでは、初期化/ There is no active AsyncCoroutineRunner when an action is posted. スレッドの実行順序に起因する特定の状況下で警告がログに記録されます。 コンポーネントが "Demo Controller" GameObject にアタッチされ、シーン内でコンポーネント/GameObject が有効/アクティブな状態を保つ (既定のケース) 場合は、警告を無視しても問題ありません AsyncCoroutineRunnerただし、Scene Understanding を使用して新しいシーンを作成する場合は、ルートに空の GameObject を作成し、スクリプトをアタッチしてください。そうしないと、Scene Understanding が正しく機能しない AsyncCoroutineRunner 可能性があります。

オブザーバー サービスの構成

'MixedRealityToolkit' ゲーム オブジェクトを選択し、インスペクターを確認します。

階層内のシーンの場所を理解する

インスペクターでの MRTK の場所

これらのオプションを使用すると、 を構成できます WindowsSceneUnderstandingObserver

サンプル スクリプト

サンプル スクリプト DemoSceneUnderstandingController.cs は、Scene Understanding サービスを使用する場合の主な概念を示しています。

  • Scene Understanding イベントのサブスクライブ
  • Scene Understanding イベントの処理
  • 実行時の WindowsSceneUnderstandingObserver の構成

シーン内のパネル上のトグルは、このサンプル スクリプトのパブリック関数を呼び出すことによって、シーンの理解オブザーバーの動作を変更します。

[ プレハブのインスタンス 化] をオンにすると、親オブジェクトの下に整形式で収集された 、すべての SpatialAwarenessSceneObjectに合わせてサイズを設定するオブジェクトを作成する方法が示されます。

デモ コントローラーのオプション

ビルドされたアプリのメモ

標準の方法でHoloLensビルドしてデプロイします。 実行すると、機能で再生されるボタンが多数表示されます。

オブザーバーに対してクエリを行う場合は、いくつかの落とし穴があります。 フェッチ要求が正しく構成されていないと、イベント ペイロードに予期されるデータが含まれます。 たとえば、1 つが quads を要求しない場合、オクルージョン マスク テクスチャは存在し"ない" とします。 同様に、オブザーバーがメッシュを要求するように構成されていない場合、ワールド メッシュは表示されません。 スクリプト DemoSceneUnderstandingController は、これらの依存関係の一部を管理しますが、すべてではありません。

保存されたシーン ファイルには、 のデバイス ポータル からアクセス できます User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes 。 これらのシーン ファイルは、インスペクターで見つかったオブザーバー プロファイルで指定することで、エディターで使用できます。

デバイス ポータルの場所

オブザーバーのシリアル化されたシーン バイト数

参照