AR Session の center mode
Center mode は Unity AR の中核概念です。これは、session が runtime 中にすべての AR tracking の reference point、つまり center object としてどのオブジェクトを選択するか、また session 内のどのオブジェクトが自由に移動できるかを決定します。以下の内容を通じて、center mode の基本概念と、scene 内オブジェクトの移動挙動への影響を理解できます。
始める前に
- AR Session introduction を通じて、session の基本概念、構成、workflow を理解してください。
- Camera を通じて、AR scenes における camera の役割、および正しい AR 体験を保証するために session が camera のプロパティをどのように制御するかを理解してください。
- XR Origin を通じて、XR Origin の基本概念、構成、lifecycle を理解してください。
- Target を通じて、target の基本概念、states、lifecycle を理解してください。
Center object と center mode
1 つの session では、1 つまたは複数の異なる AR 機能が同時に実行される可能性があります。これらの AR 機能は異なるオブジェクトを tracking する場合があり、同時に motion tracking 機能を使用してデバイス自身の位置と向きを tracking する場合もあります。
scene 内オブジェクトの移動挙動が期待どおりになるように、session はすべての AR tracking の中心として reference point を選択する必要があります。この reference point の Unity scene における表現が center object (CenterObject) です。Center mode (CenterMode) は、session runtime 中にこの center object がどのオブジェクトであるかを決定するルールです。
session の中心は、次のいずれかのオブジェクトにできます。
- tracking されている target
- XR Origin
- Camera
Center mode は、session がどのオブジェクトを center object として選択するか、およびこのオブジェクトが自由に移動できるかを決定します。このオブジェクト以外のオブジェクト、非中心の camera、XR Origin、target を含むものは、session によって制御され、center object を reference point として移動します。
Unity では、session は次の 4 種類の center モードをサポートします。
| 名前 | 図 | 説明 |
|---|---|---|
| FirstTarget SpecificTarget |
![]() |
target を中心として使用し、その target は自由に移動できます。そのうち、
|
| SessionOrigin | ![]() |
XR Origin を中心として使用し、XR Origin は自由に移動できます。 session 内の camera と target は session によって制御され、中心 XR Origin を基準点として移動します。 |
| Camera | ![]() |
camera を中心として使用し、camera は自由に移動できます。 session 内の XR Origin と target は session によって制御され、中心 camera を基準点として移動します。 |
図には 3 つの物体があります。青い球体は XR Origin、青い錐体は camera、黄色の画像は target を表します。center モードごとに、session は異なる物体を中心物体として選択します。図には対応する物体のローカル座標系が表示されています。
ヒント
AR Foundation の使用経験がある場合、AR Foundation には同様の概念が存在しないことに気付くかもしれません。実際には、AR Foundation の動作パターンは SessionOrigin center モードと一致しています。
session では、target と camera の相対運動関係は現在の session によって制御されます。XR Origin と camera の相対運動関係は、現在の session または AR Foundation などのサードパーティ framework によって制御されます。center モードが存在することで、異なる実行環境でも session が scene 内の物体の運動挙動を正しく制御できます。
たとえば、AR Foundation または Unity XR ベースのヘッドセット SDK が XR Origin と camera の相対運動関係を制御している場合、Unity XR framework の設計上、XR Origin は session によって制御されて移動できますが、camera はできません。このとき session は center モードを FirstTarget、SpecificTarget、または SessionOrigin に制限します。これにより、session にとって中心は XR Origin または特定の target になり、Unity XR framework にとって中心は引き続き XR Origin となるため、システム全体が正しく動作できます。
警告
Unity AR では、Unity ワールド座標系に存在し、session コンポーネントに従って transform が調整されていない物体は、正しく表示されない可能性があります。session は中心物体の位置と向きに基づいて scene 内の他の物体の位置と向きを調整するため、session によって制御されない物体があると、その位置と向きが session の計算結果と一致せず、予期しない挙動につながる可能性があります。
たとえば、ワールド座標系にパンダモデルを配置した場合、そのパンダモデルの位置と向きは現実世界のどの物体にも対応しない可能性があり、空中に浮いていたり、あちこち動いているように見えることがあります。
正しい方法は、表示するコンテンツを常に特定の target ノードの下に置くこと、またはコンテンツが XR Origin の動きに追従する必要がある場合は XR Origin ノードの下に置くことです。これにより、コンテンツの位置と向きは session の計算結果に基づいて調整され、現実世界に正しく重ねて表示されます。
コンテンツと target または XR Origin の位置と向きを手動で合わせることは可能ですが、正しいタイミングで操作する必要があります。適切な center モードを選択する を参照してください。
有効な center モード
すべての center モードがあらゆる状況で有効なわけではありません。session は現在の実行環境と選択された frame source に基づいて、どの center モードが有効かを決定し、scene 内の物体の運動挙動を正しく制御できるようにします。ARSession.AvailableCenterMode プロパティを使用して、現在の session の有効な center モード一覧を取得できます。
最終的に選択された frame source に応じて、session の有効な center モードには次のような場合があります。
| frame source | camera が制御される | motion データあり | origin 設計あり | 有効な center モード |
|---|---|---|---|---|
|
はい | いいえ | - |
|
|
はい | はい | はい |
camera がXR Origin の子ノードではない場合のみ有効 |
|
いいえ | はい | はい |
|
|
いいえ | はい | はい |
|
|
いいえ | はい | いいえ |
|
FramePlayer を使用する場合を除き、有効な center モードは session の組み立て時に決定されます。FramePlayer を使用する場合、有効な center モードは session 実行中に各フレームデータが出力されるたび、そのデータに motion 情報が含まれているかどうかに基づいて動的に決定されます。
異なる center modes の特性
次に、一連のサンプル動画を通じて、異なる center modes 下でのオブジェクトの移動挙動を示します。
動画の内容は次のとおりです。
現実世界には、2 種類の異なる trackable objects があります。
- 1 つは クリスマスツリーで、静止しています。これは sparse spatial map 機能によって tracking されます。
- もう 1 つは A4 用紙で、あらかじめ画像が印刷されています。これは移動できます。これは image tracking 機能によって tracking されます。
動画を録画するとき、observer、つまりスマートフォンはクリスマスツリーの右後方から開始し、クリスマスツリーの周囲を移動します。A4 用紙は observer の前方で左右に揺れます。
観察しやすくするため、scene 内の異なるオブジェクトにいくつかの markers を追加しました。
- クリスマスツリー: tracking 状態のとき、その占有空間に 明るい青色の point cloud が重ねられます。tracking が失われると、これらの markers は消えます。
- A4 用紙: tracking 状態のとき、その真上に パンダ が重ねられます。
Gameview には、A4 用紙の内容とサイズが完全に同じ画像も追加で表示されます。tracking が失われると、これらの markers は消えます。- XR Origin: その位置に 青い球体 が配置されています
- Camera: その位置に 青い円錐 が配置され、円錐の主軸は camera の視線方向と一致しています。
これらの動画は、simulated runtime data を使用して Unity editor の Play mode で録画されています。動画の左側は Scene view、右側は Game view です。Game view の内容は、現実世界でユーザーがスマートフォンで見る内容と同じです。
FirstTarget と SpecificTarget center modes
FirstTarget と SpecificTarget の center モードは、特定の target を中心物体として使用するモードです。この 2 つのモードでは、中心の target 以外に、session 内の camera、XR Origin、および他の target はすべて session によって制御され、中心 target を基準点として移動します。
一部の target は現実世界で移動できます。たとえば動画内の A4 用紙です。
上の動画では、中心物体は image tracking 機能で追跡された A4 用紙です。外部操作がないため、A4 用紙 (パンダ) は静止しており、camera (青い錐体)、XR Origin (青い球体)、クリスマスツリー (明るい青色の point cloud) が移動していることが分かります。
一部の target は現実世界で静止しています。たとえば動画内のクリスマスツリーです。
上の動画では、中心物体は sparse spatial map 機能で追跡されたクリスマスツリーです。外部操作がないため、クリスマスツリー (明るい青色の point cloud) は静止しており、camera (青い錐体) と A4 用紙 (パンダ) が移動していることが分かります。XR Origin (青い球体) も移動していませんが、これはクリスマスツリーに対して静止しているためです。
この 2 つのモードでは、基準点となる中心 target は自由に移動できます。このとき session 内の camera、XR Origin、および他の target も一緒に移動し、それらの transform は外部から制御できません。
上の動画では、中心物体は image tracking 機能で追跡された A4 用紙です。手動で A4 用紙 (パンダ) を移動したため、camera (青い錐体)、XR Origin (青い球体)、クリスマスツリー (明るい青色の point cloud) も一緒に移動していることが分かります。注意すべき点として、このとき
Gameview に表示される内容は変化しません。camera の位置と向きが A4 用紙および他の物体に対して変化していないためです。
FirstTarget と SpecificTarget モードの違いは、runtime 中に中心 target が変化する可能性があるものの、変化時の中心選択方法が異なる点です。この点を説明するには、tracking 成功と tracking 喪失のプロセスを考慮する必要があります。
session の中心物体が変化した場合、ARSession.CenterObject は常に現在の中心物体を反映しますが、ARSession.CenterMode は変化しません。
FirstTarget center mode の center 変化
FirstTarget center モードでは、session は常に最初に追跡された target を中心にします。この target の tracking が失われると、session は中心を再選択します。session が別の target を追跡中、または新たに追跡した場合、その別の target が新しい中心物体として選択されます。
中心の再選択は、次の場合に発生します。
現在のフレームで tracking 状態の
targetが 1 つもない
このとき SessionOrigin モードが有効であれば、session は SessionOrigin モードにフォールバックし、XR Originを中心物体として選択します。そうでなければ session は Camera モードにフォールバックし、cameraを中心物体として選択します。現在のフレームで tracking 状態の
targetがあり、前のフレームでは tracking 状態のtargetが 1 つもなかった
このとき session は、追跡されているtargetの 1 つを中心物体として選択します。現在のフレームで tracking 状態の
targetがあり、前のフレームの中心targetが現在のフレームで tracking を失った
このとき session は、追跡されているtargetの 1 つを新しい中心物体として選択します。
上の動画では、最初の中心物体は image tracking 機能で追跡された A4 用紙です。A4 用紙 (パンダ) の tracking が失われると、session が中心物体を再選択することが分かります。このときクリスマスツリー (明るい青色の point cloud) が新しい中心物体になります。動画の最後で A4 用紙は再び追跡されますが、クリスマスツリーがすでに中心物体であるため、中心物体にはなりません。
SpecificTarget center モードでの中心変化
SpecificTarget center モードでは、session は常に指定された target を中心にします。この target の tracking が失われると、session は中心を再選択しますが、他の target を新しい中心物体として選択することはありません。session がこの指定された target を再び追跡すると、それは引き続き中心物体として選択されます。
中心の再選択は、次の場合に発生します。
現在のフレームで指定された
targetが追跡されていない
このとき SessionOrigin モードが有効であれば、session は SessionOrigin モードにフォールバックし、XR Originを中心物体として選択します。そうでなければ session は Camera モードにフォールバックし、cameraを中心物体として選択します。現在のフレームで指定された
targetが tracking 状態であり、前のフレームでは指定されたtargetが追跡されていなかった
このとき session は、指定されたtargetを中心物体として選択します。
上の動画では、中心物体は image tracking 機能で追跡された A4 用紙として指定されています。A4 用紙 (パンダ) の tracking が失われても、session は他の
targetを新しい中心物体として選択しないことが分かります。このときクリスマスツリー (明るい青色の point cloud) は中心物体になりません。動画の最後で A4 用紙は再び追跡され、中心物体に戻ります。
SessionOrigin center モード
SessionOrigin center モードは、XR Origin を中心物体として使用するモードです。このモードでは、session 内の camera と target は session によって制御され、中心 XR Origin を基準点として移動します。
上の動画では、中心物体は XR Origin です。外部操作がないため、XR Origin (青い球体) は静止しており、camera (青い錐体) と A4 用紙 (パンダ) が移動していることが分かります。クリスマスツリー (明るい青色の point cloud) も移動していませんが、これは XR Origin に対して静止しているためです。
このモードでは、基準点となる中心 XR Origin は自由に移動できます。このとき session 内の camera と target も一緒に移動し、それらの transform は外部から制御できません。
上の動画では、中心物体は XR Origin です。手動で XR Origin (青い球体) を移動したため、camera (青い錐体)、クリスマスツリー (明るい青色の point cloud)、A4 用紙 (パンダ) も一緒に移動していることが分かります。注意すべき点として、このとき
Gameview に表示される内容は変化しません。camera の位置と向きが XR Origin および他の物体に対して変化していないためです。
SessionOrigin モードでは XR Origin が有効である必要があるため、このモードでは中心物体は変化しません。
Camera center モード
camera center モードは、camera を中心物体として使用するモードです。このモードでは、session 内の XR Origin と target は session によって制御され、中心 camera を基準点として移動します。
上の動画では、中心物体は camera です。外部操作がないため、camera (青い錐体) は静止しており、XR Origin (青い球体)、クリスマスツリー (明るい青色の point cloud)、A4 用紙 (パンダ) が移動していることが分かります。
このモードでは、基準点となる中心 camera は自由に移動できます。このとき session 内の XR Origin と target も一緒に移動し、それらの transform は外部から制御できません。
上の動画では、中心物体は camera です。手動で camera (青い錐体) を移動したため、XR Origin (青い球体)、クリスマスツリー (明るい青色の point cloud)、A4 用紙 (パンダ) も一緒に移動していることが分かります。注意すべき点として、このとき
Gameview に表示される内容は変化しません。camera の位置と向きが XR Origin および他の物体に対して変化していないためです。
Camera モードでは camera が有効である必要があるため、このモードでは中心物体は変化しません。


