EasyAR 專案中的 ar foundation 場景配置和用法
在 Unity 中使用 AR Foundation 往往需要依靠 EasyAR 解決 AR Foundation 的設備局限性。以下內容介紹如何在 EasyAR 場景中正確配置和使用 AR Foundation,以及如何根據設備支援情況動態啟用 AR Foundation。
開始之前
- 閱讀 EasyAR 對 Unity XR 框架的支援 瞭解 EasyAR 對 Unity XR 框架的支援情況,以及在什麼情況下可以考慮使用 AR Foundation。
- 閱讀 在 EasyAR 專案中啟用 AR Foundation 瞭解如何在 EasyAR 專案中安裝和配置 AR Foundation。
新增 ar foundation 元件
在 EasyAR 場景中新增 AR Foundation 的 AR Session 和 XR Origin。
新增 ar session
在 Hierarchy 視窗中 空白 處點擊右鍵,透過選單 XR > AR Session 新增 Unity 的 ARSession 到場景中。

附註
這個 AR Session 與 EasyAR 的 AR Session 不同,它們需要同時存在於場景中。
新增 xr origin
在 Hierarchy 視窗中 空白 處點擊右鍵,透過選單 XR > XR Origin (Mobile AR) 新增 Unity 的 XROrigin 到場景中。

附註
這個 XR Origin 與 EasyAR 的 XR Origin 功能是重疊的,需要使用 Unity XR Origin 而非 EasyAR 的 XR Origin。
如果場景中之前存在 EasyAR 的 XR Origin,一般名稱為 XR Origin (EasyAR),需要將其下面的子物體移動到新建立的 XR Origin 下面,然後將 XR Origin (EasyAR) 刪除。

這時候,如果新建立的 XR Origin 下面沒有 XR Origin Child,需要手動新增。
在 Hierarchy 視窗中,選中 XR Origin 並點擊右鍵,透過選單 EasyAR Sense > Origin > Origin : XR Origin Child 新增 XR Origin Child 到 XR Origin 下。

配置 camera
如果場景中之前存在 AR 用的 Camera,會發現場景中出現了多餘的主攝影機,需要將原本的攝影機刪除。

然後選中 XR Origin 下的 Main Camera,按照 Camera 配置 的說明對攝影機進行配置。
最後,一個完整的新增了 AR Foundation 的 EasyAR 場景結構應該類似下面這樣:
注意
如果需要透過 ARCameraManager.currentConfiguration 修改 AR Foundation 的配置,需要注意部分手機自身(比如小米 10)存在問題,在修改配置之後無法取得圖像,EasyAR 將無法使用(應用有圖像背景但 EasyAR 功能沒有任何反應),因此通常並不建議修改,如需修改需要做好 EasyAR 無法使用時的降級方案。
設備相容與動態啟用 ar foundation
EasyAR 相容的設備比 AR Foundation 多很多,因此需要配置以確保應用只在需要時啟用 AR Foundation,其餘情況需要完全關閉 AR Foundation。
檢查 frame source 元件
一般來說,透過 EasyAR 選單建立的工作階段通常會自動新增 ARCoreARFoundationFrameSource 以及 ARKitARFoundationFrameSource (部分圖像跟蹤等不需要SLAM功能的除外)。

重要事項
ARCoreARFoundationFrameSource 以及 ARKitARFoundationFrameSource 是 EasyAR 提供的 frame source,用於在支援 AR Foundation 的設備上啟用 AR Foundation 功能。如果場景中的工作階段不包含這些 frame source,則無法在啟用 AR Foundation 功能。
如果場景中的工作階段不包含這些 frame source,可以透過選單手動新增。

為了在不支援 AR Foundation 的手機上執行,還需要確保工作階段包含 AR Foundation 以外的 frame source。一個典型的ARSession 應該類似下面這樣,

提示
可以根據實際需要對 frame source 進行排序,在應用執行時,工作階段會根據設備支援情況按 transform 順序選擇第一個可用的 frame source。
僅在需要時啟用 ar foundation
由於 AR Foundation 在手機上底層實現是 ARCore 和 ARKit,只能在有限的設備上使用,尤其是在很多國產 Android 手機上無法使用,所以通常建議僅在受支援的設備上啟用 AR Foundation 及相關功能腳本。
EasyAR 可以自動完成這些操作,該功能可以透過 在 Project Settings > EasyAR > Sense 中的 Unity XR > Unity XR Auto Switch 選項啟用或關閉。詳細說明可以參考 自動切換 Unity XR 物體 。
保留 ar foundation 相容性的場景
正確新增了 AR Foundation 元件的場景可以在 AR Foundation 套件安裝或未安裝時都正常工作。
未安裝 AR Foundation 時 AR Foundation 的功能及對應 frame source 不可用,且場景中會有部分腳本缺失,屬於正常情況。

提示
很多 sample 都可以在 AR Foundation 套件安裝或未安裝時都正常工作。如果需要在這些 sample 中啟用 AR Foundation 支援,僅需 在 EasyAR 專案中啟用 AR Foundation 即可。
後續步驟
- 瞭解如何根據設備支援情況 自動切換 AR Foundation