画像トラッキング
この機能は、AR Foundationの画像トラッキングに基づいています。
画像トラッキングの基本的な情報と、AR FoundationのAR Tracked Image Manager
コンポーネントが何をするかについては、Unityのドキュメントを参照してください。
画像ターゲットは、XR Reference Image Library
を通して基礎となるXRプラグインに供給されます。
追加された画像には、後でトラッキングされたターゲットを特定するのに便利な名前と、true
に設定する必要がある重要なKeep Texture at Runtimeフラグがあります。これにより、サブシステムはトラッキングのためにテクスチャデータをSnapdragon Spaces Servicesに渡すことができます。
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でImage Trackingにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ) > OpenXR Feature Groups > Snapdragon Spaces > Image Tracking
機能の設定
この機能の設定は、OpenXRのプロジェクト設定のImage Trackingの項目内の右横の歯車アイコンをクリックすると表示されます。
画像トラッキング機能には2つの設定があります。
- Extended Range Mode:広範囲に最適化されたトラッキングを行います。
- Low Power Mode:低消費電力に最適化されたトラッキングを行います。
Spaces Reference Image Configurator
オプションの
Spaces Reference Image Configurator
コンポーネントは、ARTrackedImageManager
と同じGameObjectに追加することができます。このコンポーネントでは、トラッキング画像の追加設定を行えます。
トラッキングモード
Tracking Modeのフィールドでは、画像ごとに異なるトラッキングモードを設定できます。
Dynamic (Default)
:Dynamicモードは、トラッキングされた画像の位置がフレームごとに更新され、移動中のターゲットと静止したターゲットの両方で機能します。トラッキングされた画像が見つからない場合、位置や姿勢は報告されません。このモードでは、他のトラッキングモードに比べて消費電力が高くなります。Spaces Reference Image Configurator
コンポーネントが見つからない場合、全てのトラッキング画像はデフォルトでこのトラッキングモードを使用します。Static
:Staticモードは、静止した画像をトラッキングするのに役立ち、消費電力の削減とパフォーマンスの向上につながります。たとえば、床や壁に貼り付けられた画像がこれに該当します。このモードは、画像が見えなくなった後も、引き続き表示される必要があるARオブジェクトを表示し続けるのに便利です。Staticモードでトラッキ ングされた画像の位置は、画像が移動したか視界から外れたかに関係なく、更新されることはありません。Adaptive
:Adaptiveモードは静止した画像で動作しますが、トラッキングされた画像が動いた場合は、およそ5フレームごとに定期的に画像の位置を更新します。HMDが移動した場合、画像の位置はディスプレイのリフレッシュレートに合わせて更新されます。視界から外れた画像のトラッキングは最終的に失われます。このモードは、消費電力とトラッキング精度のバランスをとります。
トラッキングモード | トラッキングの開始タイミング | 画像位置の更新間隔 | トラッキングの終了タイミング |
---|---|---|---|
Dynamic (default) | 画像がカメラ画角内に入った時 | 全てのフレーム | 画像がカメラ画角外に出た時 |
Static | 画像がカメラ画角内に入った時 | 更新無し | 新しい画像がトラッキングされた場合 |
Adaptive | 画像がカメラ画角内に入った時 | 5フレームごと | 画像がカメラ画角外に出た時 |
アプリを起動すると、トラッキングされた画像は Spaces Reference Image Configurator
コンポーネントで定義されたトラッキングモードを使用します。
public SpacesReferenceImageConfigurator referenceImageConfigurator;
private Dictionary<TrackableId, ...> _trackedImages = new Dictionary<TrackableId, ...>();
...
string referenceImageName = ...; // referenceImageName to change Tracking Mode for
TrackableId trackableId = ...; // a TrackableId for an existing tracked instance of this image
...
// first, stop tracking any instances of the tracked image for which the Tracking Mode should be updated.
// if tracking is not stopped, the instance can (but is not guaranteed to) continue to be tracked using the old Tracking Mode for some time
referenceImageConfigurator.StopTrackingImageInstance(referenceImageName, trackableId);
...
// then, set the desired tracking mode for all future instances of the tracked image with that referenceImageName
referenceImageConfigurator.SetTrackingModeForReferenceImage(referenceImageName, SpacesImageTrackingMode.DYNAMIC);
referenceImageConfigurator.SetTrackingModeForReferenceImage(referenceImageName, SpacesImageTrackingMode.STATIC);
referenceImageConfigurator.SetTrackingModeForReferenceImage(referenceImageName, SpacesImageTrackingMode.ADAPTIVE);
トラッキング画像を変更(追加)する
画像トラッキングに使用する画像ターゲット(マーカー)をEditor上で変更する方法を紹介します。