二維碼跟蹤 (實驗性)

二維碼跟蹤示例

該示例演示了(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)代碼示例。

 

圖片21.png


圖片22.png


解碼二維碼

解碼後的(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ě)完成重新啓動。


圖片23.png


圖片24.png