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