メインコンテンツまでスキップ
バージョン: 1.0.1

QRコードトラッキング

機能の有効化

この機能を使用するには、以下のOpenXRのプロジェクト設定でQR Code Trackingにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ) > OpenXR Feature Groups > Snapdragon Spaces > QR Code Tracking
alt text

Spaces QR Code Manager

alt text
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 VersionMaximum 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.IsMarkerDataAvailabletrueであることを確認してください。

QRコードのトラッキング

SpacesQRCodeManagerのMarker Trackingをオンにすると、サブシステムが検出されたQRコードのポーズを追跡できるようになります。使用していないときは、パフォーマンスを上げるためにオフにしてください。

SpacesQrCodeManagerの有効化と無効化

SpacesQrCodeManagerコンポーネントを有効および無効にすると、それぞれサブシステムが開始および停止します。

SpacesQrCodeManager変数に変更がある場合は、サブシステムの再起動が必要です。再起動するには、SpacesQrCodeManagerコンポーネントを無効にし、再度有効にしてください。

TIP

Marker Trackingを有効または無効にする場合、サブシステムを再起動する必要はありません。

SpacesQrCodeManager manager;

manager.enabled = false;
manager.markerSize = new Vector2(20.0f, 20.0f);
manager.markerTrackingMode = MarkerTrackingMode.Dynamic;
manager.enabled = true;

既知の問題

不安定に重複したQRコード

QRコードトラッキングは、特にQRコードがカメラの視野の外側にある場合、数分間追跡した後に不安定に重複したQRコードの追跡を開始することがあります。