QRコードトラッキング
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でQR Code Trackingにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ) > OpenXR Feature Groups > Snapdragon Spaces > QR Code Tracking
Spaces QR Code Manager
SpacesQrCodeManagerコンポーネントをXR Originゲームオブジェクトに追加すると、Snapdragon Spacesパッケージに含まれるQRコードトラッキングのサブシステムが有効になります。このコンポーネントには6つのフィールドがあります。
- Markerのプレハブオブジェクトは、QRコードが検出されるたびにインスタンス化されます。トラッキングは、Marker Trackingが有効な場合にのみ機能します。
Marker Tracking Mode
は、トラッキングされるすべてのマーカーに対して設定されます。各Tracking Mode
の詳細については、画像トラッキングのトラッキングモードをご覧ください。
トラッキングモード | 開始タイミング | マーカー位置の更新間隔 | 終了タイミング |
---|---|---|---|
Dynamic (default) | マーカーが検出された時 | 全てのフレーム | マーカーの検出がロストした時 |
Static | マーカーが検出された時 | 更新無し | 新しいマーカーがトラッキングされた時 |
Adaptive | マーカーが検出された時 | ARグラスが動いたら即座に、マーカーが動いたら定期的に行う | マーカーの検出がロストした時 |
Marker Tracking
:この機能のトラッキング機能を有効または無効にします。QRコード検出は継続的に実行されますが、必要ない場合はトラッキングを無効にすることができます。Marker Size
:検出される物理マーカーの幅と高さをメートル単位で指定します。正確な測定は、正確なポーズ推定とその後のARオブジェクトの配置に不可欠です。Minimum QR Version
とMaximum QR Version
:検出されるQRコードのバージョンです。この範囲外のQRコードは検出も追跡もされません。
SpacesQrCodeManager::OnMarkersChanged
メソッドにサブスクライブすることで、開発者は使い慣れたARFoundationパターンを使用して、トラッキングされたマーカーの位置、向き、文字列データを取得できます。
private override void Start() {
FindObjectOfType<SpacesQrCodeManager>().markersChanged += OnMarkersChanged;
}
private void OnMarkersChanged(SpacesMarkersChangedEventArgs args) {
foreach (var marker in args.added) {
...
}
foreach (var marker in args.updated) {
...
}
foreach (var marker in args.removed) {
...
}
}
QRコードの推奨事項と制限事項
- QRコードの認識距離
- QRコードのバージョンが高くなると、最大認識距離が短くなります。
- 1メートル以上の距離から確実に認識するには、バージョン番号が1~6のQRコードを使用することをお勧めします。
- QRコードの認識角度
- QRコードは、最大45度の視野角で検出できます。
- QRコードのデザイン
- アーティスティックなQRコードのサポートには制限があります。白地に黒の標準的な長方形のモジュールパターンが最も簡単に認識されます。ロゴはサポートされていますが、GenAIのQRコードは機能しない可能性があります。
- QRコードの表示方法
- 無反射紙にQRコードを印刷すると、QRコードの検出と解読が向上します。
- スマートフォンやPC等のディスプレイに表示する場合はディスプレイの輝度に注意する必要があります。肉眼では問題なくても、ARグラスのカメラ上では白飛びしてしまい認識できない可能性があります。白飛びしているかの確認には「カメラフレームへのアクセス」のサンプルで確認することが出来ます。
- QRコードのサイズ
- QRコードのサイズは、ドットパターン外の白縁の領域を含めずに測定してください。
QRコードのデコード
デコードされたQRコード文字列は、SpacesARMarker.Data
に格納されます。
SpacesARMarker
はQRコードが検出されるたびに作成され、QRコードのトラッキングが失われると破棄されます。
QRコードがデコードされる前にトラッキングが実行される可能性があるため、SpacesARMarker.Data
の値にアクセスする前に、SpacesARMarker.IsMarkerDataAvailable
がtrue
であることを確認してください。