場景理解

場景理解提供Mixed Reality開發人員結構化的高階環境標記法,其設計目的是讓開發直覺感知應用程式。 場景理解是結合現有混合實境執行時間的強大功能,例如高度精確但結構較少的 空間對應 和新 AI 驅動執行時間。 藉由結合這些技術,場景瞭解會產生 3D 環境的標記法,這些環境與您在 Unity 或 ARKit/ARCore 等架構中使用的環境類似。 場景瞭解進入點會從場景觀察者開始,您的應用程式會呼叫它來計算新的場景。 目前,這項技術可以產生 3 個不同的但相關的物件類別:

  • 簡化的 watertight 環境網格,可推斷平面會議室結構而不雜亂
  • 我們稱為四邊形位置的平面區域
  • 與我們所呈現之四邊形/Watertight 資料對齊 的空間對應 網格快照集

空間對應網格,加上標籤的平面表面,水線網格

本檔旨在提供案例概觀,並厘清場景理解和空間對應共用的關聯性。 如果您想要查看 Scene Understanding 運作情形,請參閱下面的 設計全像投影 - 空間感知 影片示範:

這段影片取自「設計全像投影」HoloLens 2應用程式。 在這裡下載並享受完整的體驗。

使用場景瞭解進行開發

本文僅提供介紹 Scene Understanding 執行時間和概念。 如果您要尋找如何使用 Scene Understanding 進行開發的檔,您可能會對下列文章感興趣:

Scene Understanding SDK 概觀

您可以從範例 GitHub 網站下載 Scene Understanding 範例應用程式:

場景瞭解範例

如果您沒有裝置,而且想要存取範例場景來試用 Scene Understanding,範例資產資料夾中有場景:

場景瞭解範例場景

SDK

如果您要尋找使用 Scene Understanding 進行開發的特定詳細資料,請參閱 Scene Understanding SDK 概觀 檔。

範例

裝置支援

功能 HoloLens (第 1 代) HoloLens 2 沉浸式頭戴裝置
場景理解 ✔️

常見使用案例

常見空間對應使用案例的圖例:放置、遮蔽、物理和導覽
常見的空間對應使用案例:放置、遮蔽、物理和流覽。


空間對應和場景理解都可以解決許多適用于認知應用程式的核心案例。 這些核心案例包括放置、遮蔽、物理等。 場景瞭解與空間對應之間的核心差異,是結構與簡單性的最大精確度和延遲取捨。 如果您的應用程式需要最低延遲,而且網格三角形只想要存取,請直接使用空間對應。 如果您正在執行較高層級的處理,您可以考慮切換至場景瞭解模型,因為它應該為您提供超集合功能。 您一律可以存取最完整且精確的空間對應資料,因為場景瞭解會在其標記法中提供空間對應網格的快照集。

下列各節會重新流覽新 Scene Understanding SDK 內容中的核心空間對應案例。

放置

場景理解提供設計來簡化放置案例的新建構。 場景可以計算稱為 SceneQuads 的基本類型,其描述可放置全像投影的平面表面。 SceneQuads 是針對放置而設計的,並描述 2D 表面,並提供 API 來放置該表面。 之前,使用三角形網格進行放置時,一個必須掃描四邊形的所有區域,並執行空洞填滿/後處理,以識別物件放置的良好位置。 這不一定需要四邊形,因為場景瞭解執行時間會推斷未掃描哪些四邊形區域,並讓不屬於表面的區域失效。

已停用推斷的 SceneQuads,擷取已掃描區域的放置區域。
影像 #1 - 已停用推斷的 SceneQuads,擷取已掃描區域的放置區域。

已啟用推斷的四邊形,位置不再限於掃描的區域。
影像 #2 - 已啟用推斷的四邊形,位置不再限於掃描的區域。


如果您的應用程式想要將 2D 或 3D 全像投影放在環境的固定結構上,則適用于放置的 SceneQuads 簡單性與便利性,最好是從 空間對應 網格計算此資訊。 如需本主題的詳細資訊,請參閱 場景瞭解 SDK 參考

注意 對於相依于空間對應網格的舊版放置程式碼,可以藉由設定 EnableWorldMesh 設定來計算空間對應網格與 SceneQuads。 如果場景瞭解 API 不符合應用程式的延遲需求,建議您繼續使用 空間對應 API

遮蔽

空間對應遮蔽 仍然是擷取環境即時狀態的最低延遲方式。 雖然這在高度動態的場景中提供遮蔽可能很有用,但您可能想要考慮基於遮蔽的幾個原因而瞭解場景。 如果您使用 Scene Understanding 所產生的空間對應網格,您可以從不會儲存在本機快取中的空間對應要求資料,而且無法從感知 API 取得。 使用空間對應搭配水線網格來遮蔽可提供額外的值,特別是未掃描的空間結構完成。

如果您的需求可以容許場景理解增加的延遲,應用程式開發人員應該考慮使用場景瞭解水面網狀結構,以及空間對應網格與平面標記法不一致。 這會提供「這兩個世界的最佳功能」案例,其中簡化的水遮蔽會與更精細的非平面幾何結合,以提供最實際的遮蔽地圖。

物理特性

場景理解會產生水網網格,以語意分解空間,特別是為了解決空間對應網格所施加的許多物理限制。 Watertight 結構可確保物理光線轉換一律會命中,而語意分解可讓您更輕鬆產生室內導覽網格。 如 遮蔽一節所述,使用 EnableSceneObjectMeshes 和 EnableWorldMesh 建立場景將盡可能產生最實際的完整網格。 環境網格的 watertight 屬性可防止點擊測試無法點擊表面。 網格資料可確保物理會與場景中的所有物件互動,而不只是會議室結構。

依語意類別分解的平面網格是流覽和路徑規劃的理想建構,可簡化 空間對應流覽 概觀中所述的許多問題。 在場景中計算的 SceneMesh 物件會由表面類型取消撰寫,以確保導覽網格產生僅限於可進行逐步解說的介面。 由於樓層結構的簡單性,因此 Unity 等 3d 引擎中的動態導覽網格產生可根據即時需求來達成。

產生精確的導覽網格目前仍然需要後置處理,也就是應用程式仍必須將遮蔽專案投射到樓層,以確保流覽不會通過雜亂/資料表等等。 若要達成此目的,最精確的方法是投影世界網格資料,如果場景是以 EnableWorldMesh 旗標計算,則會提供此資料。

視覺效果

雖然 空間對應視覺效果 可用於環境的即時回饋,但有許多案例可簡化平面和水力物件,以提供更高的效能或視覺品質。 如果使用空間對應所描述的陰影投影和基礎技術,如果投影在四邊形或平面水線網格所提供的平面表面上,可能會比較美觀。 這特別適用于徹底預先掃描不是最佳的環境/案例,因為場景會推斷,而且完整的環境和平面假設會將成品降到最低。

此外,空間對應所傳回的介面總數受限於內部空間快取,而場景瞭解的空間對應網格版本可以存取未快取的空間對應資料。 因此,場景理解更適合擷取較大空間的網格標記法 (例如,大於單一房間) 視覺效果或進一步的網格處理。 以 EnableWorldMesh 傳回的世界網格會在整個過程中都有一致的詳細資料層級,如果轉譯為線框,可能會產生更美觀的視覺效果。

另請參閱