Unity AR のトラッキング対象 -- target
target は Unity でさまざまな追跡可能なオブジェクトを表します。以下の内容を通じて、Unity AR におけるトラッキング対象 target の基本概念、状態、ライフサイクルを理解できます。
開始前
- ARSession の概要を通じて、session の基本概念、構成、ワークフローを理解します。
target とは
target とは、AR 機能によって認識およびトラッキングされるオブジェクトの Unity における表現です。現実世界では、これらのオブジェクトは画像、3D オブジェクト、空間マップなどです。これらのオブジェクトを認識してトラッキングすることで、AR アプリケーションは現実世界に仮想コンテンツを重ね、豊かなインタラクティブ体験を実現できます。
現実世界で静止している target もあります。たとえば壁のポスターです。
この動画は、画像トラッキングを実行している簡単な AR シーンを示しています。動画の左側は
Hierarchyビュー、中央はSceneビュー、右側はGameビューです。動画はシミュレーション実行データを使用し、Unity Editor のPlayモードで録画されています。Gameビューの内容は、ユーザーが現実世界でスマートフォンを通して見る内容と同じです。この動画では、target (ImageTarget) が現実世界の名刺を表しています。その上に黄色い球を配置し、動きを観察しやすくしています。target は現実世界でもシーン内でも位置が固定されており、ユーザーを表すカメラ、つまり青い錐体が、現実世界でのユーザーの移動に応じて移動することが分かります。白い錐体は、過去一定時間のカメラ位置と向きの軌跡を切り取ったものです。黄色い球は target (ImageTarget) ノードの下にあり、これもこの種のシーンにおける典型的なオブジェクト構成です。
現実世界で移動できる target もあります。たとえばバスのポスターです。
この動画は同じシーンを示していますが、今回は現実世界で target、つまり名刺を動かしました。target が移動すると、黄色い球が名刺に追従して動き、
Gameビュー内の球のマークも名刺に貼り付いたままであることが分かります。
理解しやすくするため、上の 2 つの動画では ImageTarget の gizmo 表示をオフにし、どちらも SessionOrigin center mode を使用しています。この 2 つの動画では、Scene ビュー内のオブジェクトの動きは現実世界と同じです。実際の AR シーンでは、この動きの関係はさらに複雑です。
異なる center mode での target の挙動
Unity では、すべての AR tracking の中心参照点を session center と呼び、session 実行中にこの中心を決定するルールを center mode と呼びます。center mode が異なると、target の挙動も異なります。
SessionOrigin center mode では、target を任意に移動することはできません。
SessionOrigin モードは、motion tracking を持つシーンでのみ存在できます。
このモードは前述の簡単なシーンで target とカメラの現実世界での動きをよく示せますが、実際の AR シーンではあまり一般的ではありません。このモードでは session が target の動きを制御し、motion tracking や AR 機能自体の計算誤差により、target が完全に固定されていることを保証するのは困難です。この場合、コンテンツのルートノードは target に追従して動く必要があり、Unity システム内のコンテンツ挙動、たとえば物理システムに影響を与えることがあります。
FirstTarget または SpecificTarget center mode で、target がちょうど中心として選ばれたオブジェクトである場合、その target は任意に移動できます。
一般に FirstTarget モードがよく使われます。このモードでは、最初にトラッキングされたオブジェクトがシーン内で session に制御されないことを保証できます。target を移動する必要がなければ、それは固定されたままであり、現実シーン内の対応するオブジェクトが動いているかどうかには関係しません。
FirstTarget または SpecificTarget center mode で target が中心として選ばれたオブジェクトではない場合、および Camera center mode では、target を任意に移動することはできません。
複数のオブジェクトを同時にトラッキングする場合、現実環境でそれらのオブジェクトが相対的に固定されていても、計算誤差があるため、同時に session の制御を受けない target は 1 つだけです。このとき、設定によっては、他の target が動くかどうかは保証されません。現実では動いていなくても、シーン内ではわずかに動く可能性があります。複数オブジェクトを同時にトラッキングする際はこの挙動を十分に考慮し、コンテンツ戦略を適切に調整する必要があります。
center mode およびシーン内オブジェクトの動き方については、Center mode を詳しく参照してください。
target の状態
target の状態は、現在の session における target の認識とトラッキング状況を反映します。一般的な状態は次のとおりです。
- Tracked: target は正常に認識およびトラッキングされています。AR アプリケーションはその上に仮想コンテンツを重ねることができ、コンテンツは現実世界のオブジェクトに貼り付きます。
- Not Tracked: target は現在認識またはトラッキングされていません。AR アプリケーションがその上に仮想コンテンツを重ね続けても、コンテンツは現実世界のオブジェクトに貼り付きません。
また、状態変化時には次の events で応答できます。
- TargetFound: target が正常に認識およびトラッキングされたときに発生します。
- TargetLost: target が tracking 状態を失ったときに発生します。
target のライフサイクル
Unity AR シーンでは、target は通常、対応する frame filter コンポーネントによって管理されます。frame filter は frame source からの画像データを処理し、その中の target を認識してトラッキングします。一方、frame filter のライフサイクルは session に依存します。AR 機能によって実装に違いはありますが、多くの場合、session の開始時に target がロードされ、ロード後は session に制御されます。session の停止時に target はアンロードされ、次の session で使用されるか手動削除されるまでその場に残ります。
次のステップ
- target 状態を取得してみる
- さまざまな AR 機能で対応する target を使用してみる