创建与实景精确对齐的 3D 内容
这篇文档将介绍如何将虚拟物体准确地摆放在现实空间的某个位置,在 AR 体验中与现实空间精确对齐。
开始之前
- 参考文档 我的定位库可以使用了吗? 确认定位库已正确创建并添加 Mega Block。
- 在场景中 添加 Mega 跟踪目标。
- 准备好 Unity 项目中要使用的 3D 资产。
注意
以下内容及工具仅适用于使用 EasyAR Mega 开发 Unity 应用的过程。
如果您在开发小程序,请参考 使用 Unity 编辑器创建并上传标注(小程序开发)。
如果您不在开发 Unity 应用,但希望查看 Mega 建图结果,请参考 Mega 使用指南中的 预览3D 实景网格。
如果您不在开发 Unity 应用,但需要模拟运行查看定位效果,请参考 Mega 使用指南中的 模拟运行效果预览。
本文内容需要工程中已经导入如下 Unity 包:
com.easyar.sensecom.easyar.mega
block 实景数据
在 Mega 开发中,可以使用多种实景数据来辅助摆放 3D 内容:
block 网格模型

全景图(含空间模型遮挡)

注意
部分数据不支持全景图。
LCC 3D 高斯泼溅

注意
LCC 3D 高斯泼溅数据只有在使用其域设备采集并完成建图后的使用场景中才可用。
启用编辑器工具
首先需要在编辑器中 添加 Mega 跟踪目标,然后选择跟踪目标,点击 Create Editor Tool 按钮。

提示
如果应用需要在脚本中创建跟踪目标而非编辑器内创建,可以在编辑器内摆放完成后,把跟踪目标和/或其子物体记录下来,在运行时通过脚本配置跟踪目标并把子物体挂载到跟踪目标下。
检查服务信息并连接服务。

重要事项
连接前需要检查 API Key 的权限。
- 如果服务的 Type 是
Block,需要保证使用的 API Key 有权限访问Mega Block服务,以及SpatialMap服务。 - 如果服务的 Type 是
Landmark,则需要保证 API Key 有权限访问Mega Landmark服务。

权限不足时,会看到连接服务验证失败的错误信息。

如果 target 数据来源已正确 配置,正常连接服务之后,可以看到数据更新时间及 block 编辑器数据的控制界面。

提示
如果 target 数据来源留空,正常连接服务之后,可以看到服务中的 block 数据列表,选择需要使用的 block 之后同样可以进入 block 编辑器数据的控制界面,且 target 数据来源会被自动填写。

编辑器工具的数据存储于 EasyAR.Mega.EditorTool 节点下,删除该节点等价于删除编辑器工具的数据。

小心
不能直接修改 EasyAR.Mega.EditorTool 节点的内容,尤其不能修改该节点的 Transform,否则可能导致编辑器工具无法正常工作或跟踪时内容显示位置错误。
加载 block 模型
点击 block 数据下的第一个选择框,这会启动 block 编辑器数据的加载过程,加载后可以在 Scene 窗口中看到当前 block 的 mesh。

提示
- block mesh 是与 block 跟踪目标空间对齐的,可以直接在模型上摆放 3D 内容。
- block mesh 会根据相机位置切换 LOD,使用时需保持联网以避免 LOD 切换失败。
- block mesh 存储于工具节点下,仅存在于编辑器模式,不会被打包进最终应用。
将 3D 内容挂载至 block 节点下
加载 block 模型后,将 3D 内容挂载至场景中的 Block 节点下,作为其子节点。

小心
- 3D 物体不能摆放在
EasyAR.Mega.EditorTool节点之下,这个节点仅用于编辑器工具,在部分情况会被自动删除或重建。
重要事项
- 3D 物体必需摆放在 block 节点之下,以确保在运行时虚拟内容的渲染位置是正确的。
精确摆放 3D 内容
通过完成以下步骤可以将虚拟内容准确地摆放在现实空间中。
根据 block 网格模型摆放
在场景中对着 block mesh 调整 3D 内容的位置和旋转,将其调整至期望的位置和朝向。
提示
- 编辑器进入 play 模式后,block mesh 仍然可用,但不会根据相机位置切换 LOD。
- block mesh 存储于工具节点下,仅存在于编辑器模式,不会被打包进最终应用。
[可选] 根据全景图摆放
点击 Panorama Preview Marker 选择框可以显示全景标记。

注意
- 部分数据不支持全景图。
- 全景图清晰度默认非高清,如有需要需联系商务获取更高清晰度的全景图。
点击任意一个全景标记,就可以在其位置进行全景下的摆放。您可以通过点击不同的全景标记切换全景,以确认 3D 内容在不同视角下的位置都是准确的。

提示
- 使用全景标记摆放内容时,基于 mesh 的空间模型遮挡依旧有效。
- 编辑器进入 play 模式后,该功能仍然可用,但基于 mesh 的空间模型遮挡精度受 LOD 切换禁用影响。
- 全景图标记及全景图数据存储于工具节点下,仅存在于编辑器模式,不会被打包进最终应用。
[可选] 根据 LCC 3D 高斯泼溅摆放
注意
本段内容适用于使用其域设备采集并完成建图后的使用场景。使用其它设备建图结果中不包含 LCC 3DGS 数据。
如果您使用了 LCC 3D 高斯泼溅(其域 LCC)功能,可以对照 3DGS 调整模型位置。LCC 数据的使用可以参考 加载 LCC 数据并与 Mesh 对齐。
实景数据缺陷对内容摆放的影响
如果加载的 Block 模型不水平怎么办
在 Hierarchy 面板中选择需要调整的 block 节点,在 Inspector 面板中修改 Rotation 直到模型的朝向在 Unity 编辑器中看起来正确。
block 节点在世界坐标系下的 Transform 不会影响 block 的本地坐标系,也因此不会影响作为 block 子节点 3D 内容的渲染结果。它的 Transform 和最终的显示效果无关。
小心
不能修改 block 节点下 EasyAR.Mega.EditorTool 的 Transform,否则可能导致编辑器工具无法正常工作或跟踪时内容显示位置错误。
如果加载的 Block 模型有破碎,缺损的部分怎么办
在三维重建过程中,若受采集视角覆盖不全的影响,生成的密模型中可能会出现破碎或缺损的部分。

面对不完整的模型,若破碎/缺损部分的 3D 内容对齐精度要并不高,可以通过点击全景标记对照全景图的方式来摆放 3D 内容。之后可以通过点击附近不同的全景标记位置来验证效果。

若破碎/缺损部分的 3D 内容对齐精度要求非常高,则需要通过补充更新或无损全量更新进行地图的补充或更新。一般来说这样的区域意味着采图过程中没有覆盖,在这样的区域内部 Mega 定位效果会受到影响,仅在编辑器中对齐 3D 内容是不够的。
后续步骤
- 通过使用 session 验证工具模拟运行进一步验证摆放的准确性。
- 为场景添加准确的环境遮挡以增强 AR 的真实感。





