使用 session 驗證工具
本文介紹瞭如何使用 session 驗證工具,在編輯器中快速驗證 session 工作流以及使用 EIF 文件進行模擬運行。
開始之前
模擬運行使用 EIF 文件作為輸入,因此在開始之前需要先錄製 EIF 文件:
- 參考 錄製 EIF 文件 錄製 EIF 文件
另外還需要瞭解:
- 瞭解 錄製 EIF 文件並用於模擬運行 的基本概念
- 瞭解 AR Session 的基本概念、組成和工作流程
session 驗證工具
session 驗證工具用於幫助開發者在 Unity 編輯器中快速驗證 session 工作流以及使用 EIF 文件進行模擬運行。
默認情況下可以在 AR Session (EasyAR) 物體的 Inspector 窗口中看到 session 驗證工具,它是 DiagnosticsController 編輯器的一部分:

點擊工具右上角 ↗ 按鈕可以將工具彈出為獨立窗口,方便查看和操作,在窗口關閉或按下 ↘ 按鈕後,工具會重新在 Inspector 窗口中顯示。

工具運行時的效果如下面這個視頻所示:
這段視頻展示了 session 驗證工具的使用效果,錄製於 Unity 的 play 模式。視頻上半部分左邊是
Hierarchy視圖,中間是Scene視圖,右邊是Game視圖,視頻下半部分是 session 驗證工具。Game視圖的內容與用戶在現實世界中手機看到的內容是一樣的。工具左邊偏上部分展示了 EIF 播放的進度條,可以看到它在隨著播放進度不斷變化。工具左邊偏下部分展示了當前 session 的狀態。工具右邊展示了 session 的組件和可用中心模式。
在場景中,可以看到同時工作的 3 個 AR 功能:
- 運動跟踪:它是由 frame-player 提供的,藍色球體是 XR Origin,藍色錐體代表用戶位置。
- 稠密空間建圖:可用看到隨著視角的移動,半透明的網格模型在不斷生成。
- 稀疏空間跟踪:視頻中在被跟踪的是一棵聖誕樹,疊加的虛擬物體是淺藍色點雲。
啟動工具
點擊工具頂部的 ▶ 按鈕即可啟動工具。按下這個按鈕的效果與直接按下 Unity 工具欄 的 ▶ 按鈕是一樣的。

如果工具已經啟動,則按鈕會變為 ■,點擊即可停止工具。
當工具以獨立窗口展示時,▶ 按鈕右邊的選擇框可以選擇工具使用的 session 物體,如果窗口被重置導致 session 丟失,可以從這裡重新選擇。
控制 EIF 播放
要使用工具的 EIF 播放功能,需要在運行前勾選工具的 Frame Player 選項,這時工具會託管 session 組裝過程中 frame-source 的選擇,無論 AssembleOptions.FrameSource 設置為何種值,都會啟用 frame-player 組件。

因此,運行時會有彈窗提示,說明當前 session 所使用的 frame-source 已被工具託管:

附註
工具只會在 Unity 編輯器上託管組裝過程中 frame-source 的選擇,在應用打包運行時該選項沒有任何影響。
正常運行時,EIF 播放控制功能會顯示在工具的上方圖中框出的部分:

可以通過這些按鈕控制 EIF 文件的播放:
▶:播放,從暫停或停止狀態恢復播放▮▮:暫停■:停止▮◀:跳到 5 秒之前(文件支持時)◀◀:降低播放速度(文件支持時)▶▶:提高播放速度(文件支持時)▶▮:跳到 5 秒之後(文件支持時)▲:打開文件- 進度條:點擊可以跳轉播放位置(文件支持時)
可以在播放的同時調整優化場景中的內容和交互邏輯,從而可以在電腦上進行大部分的開發工作,並直觀地看到效果。
附註
播放新數據和跳轉播放時,場景中原本的數據不會被清空。AR 組件的狀態也不會被重置,它們會表現得像是攝像頭數據突然從上一幀數據跳到新數據一樣。
雖然這對一部分功能沒太大影響,但是對於依賴運動跟踪的功能(比如稠密空間地圖、Mega等)來說,可能會導致功能狀態異常,從而影響運行效果。
控制 session 工作流
使用工具的 session 工作流控制功能,需要在運行前勾選工具的 Session Workflow 選項,該選項是默認勾選的。

正常運行時,session 工作流控制功能會顯示在工具的播放控制下方圖中框出的部分:

在整塊區域的上方,展示了 EasyARController.IsReady 和 ARSession.State 兩個狀態信息。
在整塊區域的下方,提供了這些按鈕來控制 session 的工作流:
Initialize:初始化 session,可以選擇使用Project Settings中配置的 license-key 或手動輸入 license-keyAssemble:組裝但不啟動 sessionStartSession (Assembled):啟動已組裝的 sessionStartSession: 組裝並啟動 sessionStopSession:停止 sessionStopSession (keep image):停止 session,但保留圖像背景Deinitialize:反初始化 session
附註
由於這些控制功能直接調用了 ARSession 和 EasyARController 的相關方法,因此可以通過這些按鈕來驗證 session 狀態變化對內容的影響,但同時需要注意如果在應用腳本中也調用了類似方法,應用的運行流程可能超出應用本身的預期。
控制 session 組件
使用工具的 session 組件控制功能,需要在運行前勾選工具的 Session Workflow 選項,該選項是默認勾選的。

正常運行時,session 組件控制會顯示在工具的下方或右方圖中框出的部分,具體位置視窗體寬度而變:

這塊區域顯示的內容與具體的 session 有關,比如上圖使用的 session 中包含了圖像跟踪、稠密空間建圖和稀疏空間跟踪三種功能組件,因此工具中顯示了這三種功能的控制選框。
一般來說,這塊區域會顯示 session 中所有可用的 AR 功能組件,並提供這些組件的啟用/禁用(enabled)控制,包括:
- AR Session:控制 session 本身的啟用/禁用
- Image Renderer:控制物理相機圖像渲染的啟用/禁用
- Camera:控制虛擬攝像機的啟用/禁用
- Frame Source:控制 frame-source 的啟用/禁用,只有未啟用 frame-player 時才可控制,啟用 frame-player 時,功能控制由 EIF 播放控制部分替代
- Frame Filter:控制具體 AR 功能的啟用/禁用
- Frame Recorder:控制錄製 EIF 組件的啟用/禁用,只有未啟用 frame-player 時才可見,啟用 frame-player 時,該組件不會被組裝進 session
同時區域內還會顯示 session 可用的中心模式和 session 報告。
附註
工具中展示的可用中心模式和 session 報告是編輯器下運行的結果,實際設備上運行時會不同。
相關主題
- 嘗試 使用 EIF 文件模擬運行,通過腳本控制 EIF 文件的播放
- 嘗試在腳本中 控制 session 執行
- 嘗試在腳本中 訪問 AR 功能組件
- 嘗試在腳本中 獲取 session 的運行結果
- 嘗試在腳本中 初始化
- 嘗試在腳本中 獲取 session 報告並判斷設備支持