Table of Contents

使用 session 驗證工具

本文介紹瞭如何使用 session 驗證工具,在編輯器中快速驗證 session 工作流以及使用 EIF 文件進行模擬運行。

開始之前

模擬運行使用 EIF 文件作爲輸入,因此在開始之前需要先錄製 EIF 文件:

另外還需要了解:

session 驗證工具

session 驗證工具用於幫助開發者在 Unity 編輯器中快速驗證 session 工作流以及使用 EIF 文件進行模擬運行。

默認情況下可以在 AR Session (EasyAR) 物體的 Inspector 窗口中看到 session 驗證工具,它是 DiagnosticsController 編輯器的一部分:

alt text

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

alt text

工具運行時的效果如下面這個視頻所示:

這段視頻展示了 session 驗證工具的使用效果,錄製於 Unity 的 play 模式。視頻上半部分左邊是 Hierarchy 視圖,中間是 Scene 視圖,右邊是 Game 視圖,視頻下半部分是 session 驗證工具。Game 視圖的內容與用戶在現實世界中手機看到的內容是一樣的。

工具左邊偏上部分展示了 EIF 播放的進度條,可以看到它在隨着播放進度不斷變化。工具左邊偏下部分展示了當前 session 的狀態。工具右邊展示了 session 的組件和可用中心模式。

在場景中,可以看到同時工作的 3 個 AR 功能:

  • 運動跟蹤:它是由 frame player 提供的,藍色球體是 XR Origin,藍色錐體代表用戶位置。
  • 稠密空間建圖:可用看到隨着視角的移動,半透明的網格模型在不斷生成。
  • 稀疏空間跟蹤:視頻中在被跟蹤的是一棵聖誕樹,疊加的虛擬物體是淺藍色點雲。

啓動工具

點擊工具頂部的 按鈕即可啓動工具。按下這個按鈕的效果與直接按下 Unity 工具欄 按鈕是一樣的。

alt text

如果工具已經啓動,則按鈕會變爲 ,點擊即可停止工具。

當工具以獨立窗口展示時, 按鈕右邊的選擇框可以選擇工具使用的 session 物體,如果窗口被重置導致 session 丟失,可以從這裏重新選擇。

控制 EIF 播放

要使用工具的 EIF 播放功能,需要在運行前勾選工具的 Frame Player 選項,這時工具會託管 session 組裝過程中 frame source 的選擇,無論 AssembleOptions.FrameSource 設置爲何種值,都會啓用 frame player 組件。

alt text

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

alt text

附註

工具只會在 Unity 編輯器上託管組裝過程中 frame source 的選擇,在應用打包運行時該選項沒有任何影響。

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

alt text

可以通過這些按鈕控制 EIF 文件的播放:

  • :播放,從暫停或停止狀態恢復播放
  • ▮▮:暫停
  • :停止
  • ▮◀:跳到 5 秒之前(文件支持時)
  • ◀◀:降低播放速度(文件支持時)
  • ▶▶:提高播放速度(文件支持時)
  • ▶▮:跳到 5 秒之後(文件支持時)
  • :打開文件
  • 進度條:點擊可以跳轉播放位置(文件支持時)

可以在播放的同時調整優化場景中的內容和交互邏輯,從而可以在電腦上進行大部分的開發工作,並直觀地看到效果。

附註

播放新數據和跳轉播放時,場景中原本的數據不會被清空。AR 組件的狀態也不會被重置,它們會表現得像是攝像頭數據突然從上一幀數據跳到新數據一樣。

雖然這對一部分功能沒太大影響,但是對於依賴運動跟蹤的功能(比如稠密空間地圖、Mega等)來說,可能會導致功能狀態異常,從而影響運行效果。

控制 session 工作流

使用工具的 session 工作流控制功能,需要在運行前勾選工具的 Session Workflow 選項,該選項是默認勾選的。

alt text

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

alt text

在整塊區域的上方,展示了 EasyARController.IsReadyARSession.State 兩個狀態信息。

在整塊區域的下方,提供了這些按鈕來控制 session 的工作流:

  • Initialize:初始化 session,可以選擇使用 Project Settings 中配置的 license key 或手動輸入 license key
  • Assemble:組裝但不啓動 session
  • StartSession (Assembled):啓動已組裝的 session
  • StartSession: 組裝並啓動 session
  • StopSession:停止 session
  • StopSession (keep image):停止 session,但保留圖像背景
  • Deinitialize:反初始化 session
附註

由於這些控制功能直接調用了 ARSessionEasyARController 的相關方法,因此可以通過這些按鈕來驗證 session 狀態變化對內容的影響,但同時需要注意如果在應用腳本中也調用了類似方法,應用的運行流程可能超出應用本身的預期。

控制 session 組件

使用工具的 session 組件控制功能,需要在運行前勾選工具的 Session Workflow 選項,該選項是默認勾選的。

alt text

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

alt text

這塊區域顯示的內容與具體的 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 報告是編輯器下運行的結果,實際設備上運行時會不同。

使用 Mega 功能時,工具中會顯示 Mega 功能組件控制

相關主題