Table of Contents

添加 Mega Go 跟蹤目標

本文介紹瞭如何添加和配置 Mega Go 的跟蹤目標。

開始之前

附註

以下內容及工具僅適用於使用 EasyAR Mega Go 開發 Unity 應用的過程。需要插件版本 >= 4003.1。

Mega Go 不支持小程序開發。

本文內容需要工程中已經導入如下 Unity 包:

  • com.easyar.sense

Mega Go 的跟蹤目標

Mega Go 的跟蹤目標是包含 MegaGoBlockController 組件的空物體,它在 Unity 中表示一個 block。

alt text

附註

在未導入 com.easyar.mega 包時,block 的編輯器功能不可使用,但不影響運行時的跟蹤效果和功能。

創建跟蹤目標

在 Hierarchy 視圖中 空白 處點擊右鍵,通過菜單 EasyAR Sense > Mega > Target : Mega Go Block 可以創建 Mega 的跟蹤目標。

alt text

在腳本中,可以使用 ARSessionFactory.CreateController 創建。

ARSessionFactory.CreateController<MegaGoBlockController>();

配置跟蹤目標

使用 target 之前,需要配置其數據來源和跟蹤器。

配置 target 數據來源

跟蹤目標只有在正確配置其來源後才能被識別和跟蹤。

在 Hierarchy 視圖中可以選擇 block 節點後填寫 block 的 Path Type 和 Path。

在腳本中,可以在組件 MonoBehaviour.Start() 前修改 Source 以設置 block 的來源。

block.Source = new MegaGoBlockController.FileSourceData(PathType.Absolute, path);

其中

  • PathType 是 emg 文件路徑的類型,可以是絕對路徑(Absolute)或工程的 StreamingAssets 路徑(StreamingAssets)。
  • Path 是 emg 文件的路徑,PathType 爲 Absolute 時是文件系統中的絕對路徑,PathType 爲 StreamingAssets 時是其在工程中 StreamingAssets 文件夾下的相對路徑。
提示

emg 文件應從 EasyAR 開發中心 Mega Go 頁面中下載。

提示

由於 emg 文件可能較大,如果應用包體大小過大,建議僅在測試階段使用 StreamingAssets 路徑,正式發佈時使用絕對路徑並通過資源包或其它方式將 emg 文件放置在應用可訪問的文件系統路徑中。

配置 target 使用的跟蹤器

跟蹤目標會被配置的跟蹤器加載並跟蹤。

重要事項

Mega Go 的跟蹤器同一時間只能跟蹤一個 block,若同時有多個 block 被配置到同一個跟蹤器中,則只有最後被加載的 block 會被使用。

在 Hierarchy 視圖中可以選擇 block 節點後選擇 session 中的 Mega Go Tracker。

在腳本中,可以修改 Tracker 以設置 block 的跟蹤器。

block.Tracker = megaGoTracker;

Tracker 可以在運行時隨時修改,加載/卸載會在 session 運行時發生。如果設置 Tracker 爲 null,該 target 將會被從之前設置的跟蹤器中卸載。

附註

target 被跟蹤有幾個關鍵條件:

  1. 該 Source 所對應的 block 必須處於可用狀態(正式數據始終離線可用,測試數據只有服務中存在該數據時纔可用)。
  2. MegaGoBlockController.Source 的文件必須被正確加載。
  3. 文件加載後沒有加載其它 block 對應的文件。

跟蹤目標的生命週期

一個常見的跟蹤目標生命週期如下:

flowchart LR
  sstart((session 啓動))
  sstop([session 停止])
  
  start("Target.Start")
  load("加載")
  tracking[["持續跟蹤"]]

  sstart --> load --> tracking --> sstop
  start -. "Target.Tracker = tracker" .-> load 

流程大致分爲幾個階段:

  • 加載:跟蹤目標被配置的跟蹤器加載,這會發生在 target 自身 Start() 及 session 啓動之後。
  • 跟蹤過程:跟蹤目標被定位到之後,跟蹤器會持續跟蹤目標的位置和狀態,直至目標被卸載或另一個目標被加載。
  • 卸載:跟蹤目標被從跟蹤器中卸載,跟蹤器不再跟蹤目標。這會發生在 session 停止或 target 被設置爲不使用跟蹤器之後。

後續步驟

相關主題