Table of Contents

AR 場景中的 Unity 攝像機

Unity 中 AR 的效果呈現離不開攝像機。通過以下內容,您將瞭解 AR 場景中攝像機的作用,以及 session 如何控制攝像機的屬性以確保正確的 AR 體驗。

開始之前

  • 通過 ARSession 簡介瞭解 session 的基本概念、組成和工作流程。

AR 場景中攝像機的作用

Unity 中的攝像機用於向玩家展示遊戲世界,而在 AR 場景中,攝像機的作用更加重要。它不僅負責渲染虛擬內容,還需要與現實世界進行對齊,以確保虛擬對象正確地疊加在現實場景中。

這段視頻展示了一個簡單的 AR 場景。視頻左邊是 Scene 視圖,右邊是 Game 視圖。視頻是使用模擬運行數據,在 Unity 編輯器的 Play 模式錄製的。Game 視圖的內容與用戶在現實世界中手機看到的內容是一樣的。

可以看到,在這段視頻裏,代表用戶的攝像機(攝像機圖標)會根據用戶在現實世界中的移動而移動。白色錐體截取了過去一段時間內攝像機的位置和朝向軌跡。可以看到在 Game 視圖中,攝像機不僅展示了 Scene 視圖裏的虛擬內容,同時在虛擬內容底部還疊加了現實世界的圖像,這就是 AR 場景中攝像機的典型工作方式。

爲了確保虛擬對象正確地疊加在現實場景中,攝像機的部分屬性需要根據 AR 運行的狀態進行調整。這些屬性包括:

  • 攝像機的 transform(位置和朝向)
  • 攝像機的視野(FOV)、寬高比(aspect ratio)和投影矩陣
  • 攝像機的剔除設置(GL.invertCulling
警告

在開發應用時,修改 session 攝像機的這些屬性是不受支持的,因爲這可能會導致虛擬內容與現實世界對齊不正確,從而影響用戶體驗。即使通過某些手段修改了這些屬性,AR 系統也會在運行過程中覆蓋這些修改,或是因爲渲染數據與計算數據的不一致導致不可預期的行爲。

根據控制這些屬性的對象的不同,session 所使用的攝像機可以分爲兩類:受 session 控制的攝像機和不受 session 控制的攝像機。

受 session 控制的攝像機

如果 session 的攝像機不屬於任何外部系統,比如頭顯或 AR Foundation,那麼 session 會自動控制攝像機的上述屬性,以確保攝像機正確地與現實世界對齊。

transform

攝像機的 transform(位置和朝向)是由 session 根據 AR 功能的運行狀態進行調整的。一般來說,session 會根據運動跟蹤數據和/或 target 的跟蹤數據來更新攝像機的位置和朝向,從而確保用戶看到的內容和現實世界中的內容一致。

在 Unity 中,所有 AR 跟蹤的中心參考點被稱爲 session 中心,而 session 運行過程中決定這個中心的規則被稱爲中心模式。在不同的中心模式下,攝像機的 transform 行爲有所不同:

  • Camera 中心模式下,攝像機是可以隨意移動的。

    一般 Camera 模式很少被應用使用。

  • 在其它中心模式(比如 FirstTarget)下,攝像機是不能隨意移動的。

    FirstTarget 是大部分 AR 應用會採用的模式。

警告

攝像機 transform 的 scale 數值應始終保持爲 (1, 1, 1)。修改攝像機的 scale 可能會導致不可預期的行爲。

投影矩陣

攝像機的投影矩陣會在 session 每幀更新時根據物理相機的內參進行更新,以確保虛擬內容正確地疊加在現實場景中。

剔除設置

攝像機的剔除設置(GL.invertCulling)會根據 session 的鏡像設置進行調整,以確保虛擬內容正確地渲染在現實場景中。

HorizontalFlip 中對應當前使用的攝像頭的設置爲 World 時,GL.invertCulling 會被設置爲 true。這是前置攝像頭的默認配置。

AR 背景視頻流

在 AR 場景中,攝像機通常會渲染來自物理相機的視頻流作爲背景,以增強用戶的沉浸感。session 會自動處理視頻流的獲取和渲染,並確保視頻流與虛擬內容正確地對齊。

不受 session 控制的攝像機

在使用頭顯和 AR Foundation 、以及實現中指定了 IsCameraUnderControlfalseFrameSource 時,session 不會控制攝像機的上述屬性,而是由外部系統負責控制。

警告

雖然在這種情況下 session 不會控制攝像機的屬性,但它們會由第三方系統(比如頭顯 SDK 或 AR Foundation)所控制,在開發應用時修改這些屬性仍然是不受支持的。

複製攝像機時的注意事項

有時可能需要將 session 攝像機的參數複製到另一個攝像機上,這時需要額外關注以下兩點:

後續步驟

  • 閱讀 Camera 配置 瞭解如何配置攝像機以獲得最佳的 AR 體驗

相關主題