二维码跟踪示例
该示例演示了如何在现实世界中检测和跟踪二维码。要使用此功能,必须在 OpenXR 插件设置中启用它,路径为:Project Settings > XR Plug-in Management > OpenXR (> Android Tab)。
示例工作原理
将 SpacesQrCodeManager 组件添加到 AR Session Origin GameObject 上,将启用 Snapdragon Spaces 包中包含的二维码跟踪子系统。该组件提供了六个字段:
每当检测到二维码时,Marker Prefab 对象都会被实例化。要使跟踪功能正常工作,必须启用标记跟踪。
标记跟踪模式已设置为所有被跟踪的标记。有关每种跟踪模式的详细信息,请参见图像跟踪文档。
跟踪模式限制 Snapdragon Spaces Services 0.19.1 仅支持动态跟踪模式。 |
跟踪模式 | 添加 | 更新 | 移除 |
动态(默认) | 标记被检测到 | 每帧更新 | 标记检测丢失 |
静态 | 标记被检测到 | 从不更新 | 新标记被跟踪 |
自适应 | 标记被检测到 | 随头部移动立即更新,并定期更新标记移动 | 标记检测丢失 |
● 标记跟踪字段用于启用或禁用该功能的跟踪能力。二维码检测将持续进行,但如果不需要,跟踪功能可以被禁用。
● 标记尺寸是指要检测的物理标记的宽度和高度(单位:米)。准确的尺寸测量对姿态估计和增强现实内容的准确放置至关重要。
● 最小二维码版本和最大二维码版本是指将被检测的二维码版本。任何超出此范围的二维码将不会被检测或跟踪。
通过订阅 SpacesQrCodeManager::OnMarkersChanged 方法,开发者可以使用类似 ARFoundation 的模式获取被跟踪标记的位置、方向和字符串数据,以下是简化的代码示例。
解码二维码
解码后的二维码字符串会存储在 SpacesARMarker.Data 中。每次检测到二维码时,SpacesARMarker 会被创建,当二维码跟踪丢失时则会被销毁。在访问 SpacesARMarker.Data 值之前,请确保 SpacesARMarker.IsMarkerDataAvailable 为 true,因为跟踪可能在二维码解码之前就已经开始。
跟踪二维码
启用 SpacesQRCodeManager 中的标记跟踪功能,将使子系统能够跟踪任何检测到的二维码的位置。如果不需要跟踪,可以关闭该功能以提高性能。
启用和禁用 SpacesQrCodeManager
启用或禁用 SpacesQrCodeManager 组件会分别启动和停止子系统。如果对 SpacesQrCodeManager 的变量进行了修改,需要重新启动子系统。只需禁用然后重新启用 SpacesQrCodeManager 组件,即可完成重新启动。