共用方式為


場景瞭解觀察者 — MRTK2

Scene Understanding會傳回場景實體的語意表示,以及HoloLens 2 ( HoloLens 第 1 代不支援其幾何形式) 。

這項技術的一些預期使用案例如下:

  • 將物件放在特定種類的最接近表面 (,例如牆和樓層)
  • 建構平臺樣式遊戲的導覽網格
  • 以四邊形提供物理引擎易記幾何
  • 避免撰寫類似演算法的需求來加速開發

Scene Understanding 在 MRTK 2.6 中引進為 實驗 性功能。 它會以名為 WindowsSceneUnderstandingObserver的空間觀察者身分整合到 MRTK 中。 Scene Understanding 可與舊版 XR 管線和 XR SDK 管線搭配運作, (OpenXR (從 MRTK 2.7) 和 Windows XR 外掛程式) 開始。 在這兩種情況下, WindowsSceneUnderstandingObserver 都會使用 。

注意

只有 MRTK 2.7.3 和更新版本才支援在遠端處理中使用 Scene Understanding。 僅支援使用 OpenXR 的專案。 不支援使用舊版 XR 管線或 Windows XR 外掛程式的專案。

觀察者概觀

當系統詢問時, WindowsSceneUnderstandingObserver 會傳回 SpatialAwarenessSceneObject ,其屬性適用于應用程式以瞭解其周遭環境。 觀察頻率、傳回的物件類型 (例如牆、樓層) 和其他觀察者行為,取決於透過設定檔的觀察者設定。 例如,如果需要遮蔽遮罩,則必須將觀察者設定為產生四邊形。 觀察到的場景可以儲存為序列化檔案,稍後可以載入以在編輯器播放模式中重新建立場景。

安裝程式

重要

只有 HoloLens 2 和 Unity 2019.4 和更新版本才支援 Scene Understanding。

  1. 確定平臺在組建設定中設定為 UWP。
  2. 透過Mixed Reality功能工具取得 Scene Understanding 套件。

使用場景理解

開始使用 Scene Understanding 的最快方式是查看範例場景。

場景瞭解範例場景

在 Unity 中,使用 [專案總管] 在 中 Examples/Experimental/SceneUnderstanding/Scenes/SceneUnderstandingExample.unity 開啟場景檔案,然後按下播放!

重要

僅適用于 MRTK 2.6.0 - 使用Mixed Reality功能工具或透過 UPM 匯入時,請先匯入 Demos - SpatialAwareness 範例,再匯入實驗性 - SceneUnderunderware 範例,因為相依性問題。 如需詳細資訊,請參閱 此 GitHub 問題

場景示範下列專案:

  • 在應用程式 UI 中使用 觀察者設定觀察者的場景物件視覺效果
  • 示範如何變更觀察者設定並接聽相關事件的範例 DemoSceneUnderstandingController 腳本
  • 將場景資料儲存至裝置以進行離線開發
  • 載入先前儲存的場景資料 (.bytes 檔案) 以支援編輯器內開發工作流程

重要

根據預設, ShouldLoadFromFile 觀察者的 屬性會設定為 false。 若要查看序列化範例會議室的視覺效果,請參閱下面的設定 觀察者服務 一節,並在編輯器中將 屬性設定為 true。

注意

範例場景是以舊版 XR 管線為基礎。 如果您使用 XR SDK 管線,您應該據以修改設定檔。 提供的 Scene Understanding Spatial Awareness System 設定檔 (DemoSceneUnderstandingSystemProfile) 和 Scene Understanding Observer 設定檔 (DefaultSceneUnderstandingObserverProfileDemoSceneUnderstandingObserverProfile) 適用于這兩個管線。

注意

由於初始化/執行緒執行順序,範例場景在特定情況下會記錄 There is no active AsyncCoroutineRunner when an action is posted. 警告。 如果您可以確認 AsyncCoroutineRunner 元件已連結至 「Demo Controller」 GameObject,而且元件/GameObject 會在場景中保持啟用/作用中, (預設案例) ,則可以安全地忽略警告。 不過,使用 Scene Understanding 建立新的場景時,請務必在根目錄建立空的 GameObject,並將腳本附加 AsyncCoroutineRunner 至該場景,否則 Scene Understanding 可能無法正常運作。

設定觀察者服務

選取 'MixedRealityToolkit' 遊戲物件,並檢查偵測器。

階層中的場景瞭解位置

偵測器中的 MRTK 位置

這些選項可讓其中一個選項設定 WindowsSceneUnderstandingObserver

範例指令碼

範例腳本 DemoSceneUnder understandingController.cs 示範使用 Scene Understanding 服務的主要概念。

  • 訂閱 Scene Understanding 事件
  • 處理 Scene Understanding 事件
  • WindowsSceneUnderstandingObserver在執行時間設定

在場景中面板上的切換會藉由呼叫此範例腳本的公用函式,變更場景瞭解觀察者的行為。

開啟 具現化 Prefabs,將示範如何建立大小以符合所有 SpatialAwarenessSceneObject的物件,並整齊地收集在父物件底下。

示範控制器選項

建置的應用程式附注

以標準方式建置並部署至 HoloLens。 執行之後,應該會顯示一些按鈕來播放功能。

請注意,對觀察者進行查詢時,有一些陷阱。 擷取要求設定錯誤會導致事件承載未包含預期的資料。 例如,如果一個沒有要求四邊形,則不會出現遮蔽遮罩紋理。 同樣地,如果觀察者未設定為要求網格,就不會顯示任何世界網格。 腳本 DemoSceneUnderstandingController 會處理其中一些相依性,但並非所有相依性。

您可以透過 位於 的裝置入口網站User Folders/LocalAppData/[APP_NAME]/LocalState/PREFIX_yyyyMMdd_hhmmss.bytes 存取已儲存的場景檔案。 這些場景檔案可以在編輯器中使用,方法是在偵測器中找到的觀察者設定檔中指定它們。

裝置入口網站位元組檔案的位置

觀察者中的序列化場景位元組

另請參閱