共用方式為


Unity 中的世界鎖定與空間錨點

世界鎖定工具英雄圖片

讓你的全息影像保持原位、跟著你移動,或在某些情況下能相對於其他全息影像定位,是創造 Mixed Reality 應用程式的重要部分。 本文將帶你了解我們推薦的解決方案,使用世界鎖定工具,同時也涵蓋如何在 Unity 專案中手動設定空間錨點。 在我們進入任何程式碼之前,了解 Unity 如何在自身引擎中處理座標空間和錨點非常重要。

世界尺度座標系統

如今,在撰寫遊戲、資料視覺化應用程式或虛擬實境應用程式時,典型的做法是建立一個絕對的世界 座標系統 ,讓所有其他座標都能可靠地映射回去。 在那種環境下,你總能找到一個穩定的轉換,定義該世界中任兩個物體之間的關係。 如果你不移動那些物件,它們的相對轉換永遠不會改變。 這種全域座標系統在渲染純虛擬世界時很容易做到,因為你事先知道所有幾何形狀。 現今的房間尺度 VR 應用程式通常建立這種絕對的房間尺度座標系統,起點位於地面。

相較之下,像 HoloLens 這類無繩混合實境裝置,擁有動態感測器驅動的世界感知,隨著使用者在整棟建築的一層樓內行走數公尺,持續調整對周遭環境的認知。 在世界尺度的體驗中,如果你把所有全息影像放在一個天真的剛性座標系裡,這些全息影像會隨時間漂移,不論是根據世界還是彼此相對於。

例如,頭戴裝置目前可能認為世界上兩個地點相距4公尺,之後再修正這個理解,發現它們其實相距3.9公尺。 如果這些全息影像最初相距4公尺,放在單一剛性座標系中,其中一個就會總是偏離現實世界0.1公尺。

你可以在 Unity 中手動放置 空間錨點 ,以維持全息影像在實體世界中的位置,當使用者行動時。 然而,這會犧牲虛擬世界中的自洽性。 不同的錨點彼此相對不斷移動,並且也在全域座標空間中移動。 在這種情況下,像排版這類簡單的任務變得困難。 物理模擬也可能帶來問題。

世界鎖定工具 (WLT) 讓你兼顧兩者優點,利用內部空間錨點穩定單一剛性座標系,這些錨點分布在虛擬場景中,隨著使用者移動而持續運作。 WLT 每幀都會分析攝影機的座標及這些空間錨點。 WLT 不會改變世界上所有事物的座標來補償使用者頭部的座標修正,而是直接固定頭部的座標。

選擇你的世界鎖定方式

如果可能,使用 世界鎖定工具 來定位全息影像。

世界鎖定工具 提供穩定的座標系統,將虛擬世界與現實世界標記間的可見不一致降到最低。 世界鎖定工具會用共用的錨點池來鎖定整個場景,而不是用每組物件各自的錨點來鎖定。

世界鎖定工具自動處理空間錨點的內部建立與管理。 你不需要與ARAnchorManager或WorldAnchor互動來保持全息影像的世界鎖定。

  • 使用 OpenXR 或 Windows XR 外掛的 Unity 2019/2020,請使用 ARAnchorManager
  • 對於較舊的 Unity 版本或 WSA 專案,請使用 WorldAnchor

設定世界鎖定

要開始使用世界鎖定工具,請下載 Mixed Reality 功能工具。 想了解更多基礎知識,請參閱世界鎖定工具主文件頁面,裡面有概述、快速入門及其他實用主題的連結。

自動設定

當你的專案準備好時,執行 Mixed Reality > 世界鎖定工具中的配置場景工具:

選擇 Mixed Reality Toolkit 選單的 Unity 編輯器

重要事項

配置場景工具可隨時重執行。 例如,如果 AR 目標從 Legacy 改成 XR SDK,應該重新執行。 如果場景已經正確設定好,執行工具不會有效果。

視覺化器

在早期開發階段,加入視覺化工具有助於確保 WLT 的設定與運作正常。 為了生產效能,可以移除它們,或因任何原因不再需要,使用 Remove visualizers 工具。 關於視覺化器的更多細節,請參閱 工具文件

持續世界鎖定

空間錨點在應用會話間的真實空間中保存全息影像。 一旦儲存在 HoloLens 錨點商店,空間錨點可以在不同的工作階段找到並載入,是沒有網路連線時理想的備用工具。

預設情況下,世界鎖定工具會在支援持續存在的本地空間錨點裝置上,恢復 Unity 相對於物理世界的座標系統。 要讓全息影像在退出並重啟應用程式後出現在物理世界中的同一位置,應用程式只需將相同姿勢還原到全息影像上即可。

Unity Inspector 中的世界鎖定上下文元件

如果應用程式需要更細緻的控制,可以在檢查器中關閉 自動儲存自動載入 ,並透過腳本管理持久化。 欲了解更多資訊,請參閱 「持續存在空間座標系」。

世界鎖定工具僅支援 HoloLens 裝置上的本地錨點持久化。

後續步驟

分享一個世界鎖定座標空間:

了解空間映射:

返回 Unity 開發檢查點:

另請參閱