二维码跟踪 (实验性)

二维码跟踪示例

该示例演示了如何在现实世界中检测和跟踪二维码。要使用此功能,必须在 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 的模式获取被跟踪标记的位置、方向和字符串数据,以下是简化的代码示例。

 

图片21.png


图片22.png


解码二维码

解码后的二维码字符串会存储在 SpacesARMarker.Data 中。每次检测到二维码时,SpacesARMarker 会被创建,当二维码跟踪丢失时则会被销毁。在访问 SpacesARMarker.Data 值之前,请确保 SpacesARMarker.IsMarkerDataAvailable 为 true,因为跟踪可能在二维码解码之前就已经开始。


跟踪二维码

启用 SpacesQRCodeManager 中的标记跟踪功能,将使子系统能够跟踪任何检测到的二维码的位置。如果不需要跟踪,可以关闭该功能以提高性能。

 

启用和禁用 SpacesQrCodeManager

启用或禁用 SpacesQrCodeManager 组件会分别启动和停止子系统。如果对 SpacesQrCodeManager 的变量进行了修改,需要重新启动子系统。只需禁用然后重新启用 SpacesQrCodeManager 组件,即可完成重新启动。


图片23.png


图片24.png