QR 码跟踪

在开始之前,我们建议先阅读 QR 码跟踪概述文章,其中包含概述、设备支持表和最佳做法。

检测 QR 码

添加网络摄像头功能

需要将功能 webcam 添加到清单以检测 QR 码。 由于在用户环境中检测到的代码中的数据可能包含敏感信息,因此需要此功能。

可以通过调用 QRCodeWatcher.RequestAccessAsync() 来请求权限:

C#:

await QRCodeWatcher.RequestAccessAsync();

必须在构造 QRCodeWatcher 对象之前请求权限。

虽然 QR 码检测需要 webcam 功能,但检测是使用设备的跟踪相机进行的。 与使用设备的照片/视频 (PV) 相机进行检测相比,这可以提供更宽广的检测 FOV 和更长的电池续航时间。

通过使用 NuGet for Unity 安装 NuGet 包,可以在 Unity 中使用 QR 码检测 API,而无需导入 MRTK。 若要大致了解其工作原理,请下载示例 Unity 应用。 示例应用包含有关在 QR 码和关联数据(例如 GUID、物理大小、时间戳和解码数据)上显示全息方块的示例。

使用 OpenXR

使用 OpenXR 插件时,请从 QR API 抓取 SpatialGraphNodeId,并使用 Microsoft.MixedReality.OpenXR.SpatialGraphNode API 来定位 QR 码。

作为参考,我们在 GitHub 上提供了一个 QR 跟踪示例项目,其中包含 SpatialGraphNode API 的更详细用法解释。

获取 QR 码的坐标系

检测到的每个 QR 码都会公开一个空间坐标系,该坐标系与快速检测方块左上角的 QR 码一致:

QR code coordinate system

转换为 Unity 坐标后,Z 轴指向纸张外部,由左手控制。

另请参阅