Table of Contents

添加 Mega 跟踪目標

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

開始之前

附註

以下內容及工具僅適用於使用 EasyAR Mega 開發 Unity 應用的過程。

如果您在開發小程序,請參考 使用 Unity 編輯器創建並上傳標注(小程序開發)

如果您不在開發 Unity 應用,但希望查看 Mega 建圖結果,請參考 Mega 使用指南中的 預覽3D 實景網格

如果您不在開發 Unity 應用,但需要模擬運行查看定位效果,請參考 Mega 使用指南中的 模擬運行效果預覽

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

  • com.easyar.sense

Mega 的追蹤目標

Mega 的追蹤目標是包含 MegaBlockController 元件的空物件,它在 Unity 中表示一個 block。

alt text

附註

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

如果配置中未正確 啟用 Mega 功能,則會無法使用。

alt text

創建跟蹤目標

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

alt text

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

ARSessionFactory.CreateController<MegaBlockController>();

配置跟蹤目標

配置 target 資料來源

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

Hierarchy 視圖中可以選擇 block 節點後填寫 block 的 ID 和 Name。

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

block.Source = new MegaBlockController.BlockInfoSourceData(id, name);

其中

  • block id 是 block 的唯一標識,必須填寫。
  • block name 是 block 的名稱,可以根據需要隨意填寫,一般建議填寫 block 的真實名稱以便於識別。
提示

block id 和 name 可以從 EasyAR 開發中心對應定位庫中獲取。

如果定位庫中沒有 block 資料,需要 在定位庫中添加需要的 Block,並再次檢查 雲定位庫有效

配置 target 使用的跟蹤器

跟蹤目標會被配置的跟蹤器加載並在正確定位到之後跟蹤。

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

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

block.Tracker = megaTracker;

Tracker 可以在運行時隨時修改,加載/卸載會在 session 運行時發生。如果設置 Trackernull,該 target 將會被從之前設置的跟蹤器中卸載。block 加載為虛擬過程,不會失敗。

附註

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

  1. MegaBlockController.Source 的 id 必須在 MonoBehaviour.Start() 前被正確配置。
  2. Source 的 id 所對應的 block 必須在定位庫中存在。
  3. MegaBlockController.Tracker 必須被配置使用正確的定位庫。

跟蹤目標的生命週期

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

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 被設置為不使用跟蹤器之後。

後續步驟

相關主題