二維碼跟蹤示例
該示例演示了(le)如何在現實世界中檢測和(hé)跟蹤二維碼。要使用(yòng)此功能,必須在 OpenXR 插件設置中啓用(yòng)它,路徑爲:Project Settings > XR Plug-in Management > OpenXR (> Android Tab)。
示例工作原理(lǐ)
将 SpacesQrCodeManager 組件添加到 AR Session Origin GameObject 上,将啓用(yòng) Snapdragon Spaces 包中包含的(de)二維碼跟蹤子系統。該組件提供了(le)六個(gè)字段:
每當檢測到二維碼時(shí),Marker Prefab 對(duì)象都會被實例化(huà)。要使跟蹤功能正常工作,必須啓用(yòng)标記跟蹤。
标記跟蹤模式已設置爲所有被跟蹤的(de)标記。有關每種跟蹤模式的(de)詳細信息,請參見圖像跟蹤文檔。
跟蹤模式限制 Snapdragon Spaces Services 0.19.1 僅支持動态跟蹤模式。 |
跟蹤模式 | 添加 | 更新 | 移除 |
動态(默認) | 标記被檢測到 | 每幀更新 | 标記檢測丢失 |
靜态 | 标記被檢測到 | 從不更新 | 新标記被跟蹤 |
自适應 | 标記被檢測到 | 随頭部移動立即更新,并定期更新标記移動 | 标記檢測丢失 |
● 标記跟蹤字段用(yòng)于啓用(yòng)或禁用(yòng)該功能的(de)跟蹤能力。二維碼檢測将持續進行,但如果不需要,跟蹤功能可(kě)以被禁用(yòng)。
● 标記尺寸是指要檢測的(de)物(wù)理(lǐ)标記的(de)寬度和(hé)高(gāo)度(單位:米)。準确的(de)尺寸測量對(duì)姿态估計和(hé)增強現實内容的(de)準确放置至關重要。
● 最小二維碼版本和(hé)最大(dà)二維碼版本是指将被檢測的(de)二維碼版本。任何超出此範圍的(de)二維碼将不會被檢測或跟蹤。
通(tōng)過訂閱 SpacesQrCodeManager::OnMarkersChanged 方法,開發者可(kě)以使用(yòng)類似 ARFoundation 的(de)模式獲取被跟蹤标記的(de)位置、方向和(hé)字符串數據,以下(xià)是簡化(huà)的(de)代碼示例。
解碼二維碼
解碼後的(de)二維碼字符串會存儲在 SpacesARMarker.Data 中。每次檢測到二維碼時(shí),SpacesARMarker 會被創建,當二維碼跟蹤丢失時(shí)則會被銷毀。在訪問 SpacesARMarker.Data 值之前,請确保 SpacesARMarker.IsMarkerDataAvailable 爲 true,因爲跟蹤可(kě)能在二維碼解碼之前就已經開始。
跟蹤二維碼
啓用(yòng) SpacesQRCodeManager 中的(de)标記跟蹤功能,将使子系統能夠跟蹤任何檢測到的(de)二維碼的(de)位置。如果不需要跟蹤,可(kě)以關閉該功能以提高(gāo)性能。
啓用(yòng)和(hé)禁用(yòng) SpacesQrCodeManager
啓用(yòng)或禁用(yòng) SpacesQrCodeManager 組件會分(fēn)别啓動和(hé)停止子系統。如果對(duì) SpacesQrCodeManager 的(de)變量進行了(le)修改,需要重新啓動子系統。隻需禁用(yòng)然後重新啓用(yòng) SpacesQrCodeManager 組件,即可(kě)完成重新啓動。