针对具体平台的指南
Android (Kotlin/Java)
Android NDK (C)
Unity(AR 基础)
Unreal 引擎
利用 ARCore 中的 Augmented Images API,您可以构建 AR 应用, 增强用户环境中的 2D 图像,例如海报或产品
您需要提供一组参考图片。ARCore 使用计算机视觉算法 从每张图像的灰度信息中提取特征,并将 一个或多个增强图像数据库中这些特征的表示法。
在运行时,ARCore 会在用户 环境这让 ARCore 可以检测现实世界中的这些图像并预估 位置、方向和尺寸(如果未提供)。
功能
ARCore 最多可以同时跟踪 20 张图像。ARCore 不会同时 检测或跟踪同一图片的多个实例。
每个增强图像数据库最多可存储 1,000 个参考信息 图片。数据库数量没有限制,但只有一个数据库 在任何给定时间都处于有效状态
可以在运行时将图像添加到增强图像数据库,最多可 每个数据库 1,000 张图片的限制。您可以下载 使用网络连接。
添加图片时,可以提供图片的物理尺寸 要检测的内容。这样做可以提高图片检测性能。
如果未提供物理尺寸,ARCore 会估算尺寸并进行优化 估算结果。
如果提供了物理尺寸,ARCore 将使用提供的大小和估计值 调整图片的位置和方向,而不考虑图片之间的 表观或实际尺寸以及所提供的物理尺寸。
ARCore 可以响应和跟踪符合以下条件的图像:
固定在原位的图片,例如挂在墙上的印刷品或 桌上的杂志
动态图片,例如经过的公交车上的广告或平面上的图片 移动手掌时手持的物体
一旦 ARCore 开始跟踪图像,就会提供图像位置的估算值 调整每一帧画面的方向和方向ARCore 会不断优化这些预估 收集更多数据。
一旦检测到图像,ARCore 将继续“跟踪”图片的位置 即使图片暂时超出相机视图的范围 因为用户换了设备。当发生这种情况时,ARCore 会假定: 图像的位置和方向是静态的,并且图像本身不是 能够在环境中穿行
所有跟踪操作都在设备上进行。无需互联网连接即可检测 以及跟踪图片
要求
图片必须:
填充至少 25% 的相机取景空间,以便进行初始检测。
平坦(例如,不要起皱或缠绕在瓶子上)。
确保摄像头的视野清晰。且不得部分遮挡 或是因为镜头移动太快时观察到 动态模糊。
CPU 利用率和性能注意事项
根据已启用的 ARCore 功能,启用 Augmented 图像可能会提高 ARCore 的 CPU 利用率。建议您停用所有未使用的 但这并不影响您的 AR 体验。这将 为应用提供额外的 CPU 周期,并改善 性能和电池续航时间
如需了解更多信息,请参阅 性能考虑因素。
最佳做法
关于选择参考图片的提示
- 图片的分辨率应至少为 300 x 300 像素。使用图片 并不能提高性能。
- 参考图片可以 PNG 或 JPEG 文件格式提供。
- 不使用颜色信息。彩色图片和等效灰度图片 可以用作参考图片,也可以由用户在运行时使用。
- 避免使用过度压缩的图片,因为这会干扰功能 提取。
- 避免使用包含大量几何图形特征或 一些功能(例如条形码、QR 码、徽标和其他艺术线条) 会导致检测和跟踪效果不理想。
- 避免使用重复图案,因为这也会导致 检测和跟踪。
使用 ARCore SDK 中包含的
arcoreimg
工具获取质量得分 介于0
和100
之间。我们建议将质量得分设为 至少 75。以下是两个示例:示例图片 1 示例图片 2 得分: 0
得分: 100
包含重复的几何图形特征 足够的分辨率;包含许多独特的特征
有关创建图片数据库的提示
- 使用适用于 Android 的 arcoreimg 工具 生成图像数据库文件。此工具仅适用于 Android 和 Android NDK 开发内置于 Unity SDK 和 ARCore 中 Unreal 插件。
- 数据库存储所提取特征的压缩表示 从参考图像的灰度数据中选择。每个图片条目 大约有 6 KB。
- 在运行时将图片添加到数据库大约需要 30 毫秒。
- 在工作线程上添加图片,以免阻塞界面线程。
- 或者,如果可能,请在编译时使用
arcoreimg
工具添加图片 包含在 ARCore SDK 中。
- 如果您知道图片的预期物理大小,请指定该值。本次 提高检测和跟踪性能,尤其是对于 大型实体图片(超过 75 厘米)。
- 避免在数据库中保留许多未使用的图像,因为 对系统性能造成的影响。
有关优化跟踪的提示
- 如果您的图片绝不会从其初始位置移动(例如, 海报,您可以用锚 以提高跟踪稳定性。
- 物理图像必须至少占相机图像的 25% 初始检测。您可以提示用户将实体图片放入用户的 相框。
- 在图像跟踪之前,请勿使用图像的姿态和大小估计值 处于全面跟踪状态。图片最初是由 ARCore,并且未指定预期的物理尺寸,则其跟踪状态将 广告。这意味着 ARCore 已识别该图像,但 没有收集到足够的数据来估计它在 3D 空间中的位置。