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 被设置为不使用跟踪器之后。

后续步骤

相关主题