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 運行時發生。如果設置 Trackernull,該 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 被設置為不使用追蹤器之後。

後續步驟

相關主題