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