Table of Contents

適切なセンターモードの選択

コンテンツ制作において、適切なセンターモードを選択することは非常に重要です。以下の内容を通じて、センターモードの取得と変更方法、および適切なセンターモード選択の推奨事項を学びます。

開始する前に

  • AR session の概要 を通じて、session の基本概念、構成要素、およびワークフローを理解してください。
  • AR session のセンターモード を通じて、センターモードの基本概念と、シーン内のオブジェクトの運動挙動への影響を理解してください。

利用可能なセンターモードの取得

session 実行時、現在の session で利用可能なセンターモードのみが Inspector パネルの Center ドロップダウンメニューに表示されます。session が起動していない場合、すべてのセンターモードが表示されます。

alt text

この図は、エディタで CameraDeviceFrameSource を使用した際の session で利用可能なセンターモードを示しています。

スクリプトでは、session のアセンブリが成功した後、ARSession.AvailableCenterMode プロパティを通じて、現在の session で利用可能なセンターモードのリストを取得できます。

例えば、以下のコードは特定のセンターモードが現在の session で利用可能かどうかを判断する方法を示しています:

if (Session.AvailableCenterMode.Contains(mode))
{
    // mode は現在の session で利用可能
}

センターモードの変更

Inspector パネルを開き、Center ドロップダウンメニューから必要なセンターモードを選択します。

alt text

スクリプトでは、ARSession.CenterMode プロパティを通じてセンターモードを変更できます。

例えば、以下のコードは利用可能なセンターモード間で循環切り替えを行う方法を示しています:

while (true)
{
    Session.CenterMode = (ARSession.ARCenterMode)(((int)Session.CenterMode + 1) % Enum.GetValues(typeof(ARSession.ARCenterMode)).Length);
    if (Session.AvailableCenterMode.Contains(Session.CenterMode)) { break; }
}

session はフレーム更新ごとに現在のセンターモードが有効かどうかを判断します。有効な場合、session は直ちに新しいセンターモードの使用を試みます。

上記の動画では、session は最初 FirstTarget モードを使用しており、中心オブジェクトはクリスマスツリー(明るい青色の点群)です。その後、手動でセンターモードを Camera モードに変更すると、中心オブジェクトがカメラ(青色の円錐体)に変わります。動画内容の詳細な説明については AR session のセンターモード を参照してください。

session 更新時、変更後のセンターモードが現在の session で無効な場合、CenterMode プロパティは自動的に最初の利用可能なセンターモード(通常は FirstTarget または SessionOrigin)にリセットされ、ログに警告メッセージが出力されます:

Center mode {Value} is unavailable in this session, reset to {NewValue}.

センターモードの選択方法

現実世界のオブジェクトとの位置合わせは AR コンテンツ制作の核となる要件であり、センターモードは session がシーン内の他のオブジェクトの位置と向きを計算する際の基準点となるオブジェクトを決定します。したがって、適切なセンターモードの選択はコンテンツ制作にとって非常に重要です。

一般的な推奨事項

多くの場合、FirstTarget または SpecificTarget モードを使用し、target を中心とすることはコンテンツ制作にとってより扱いやすいです。これにより、target の下に配置されたコンテンツの基準点は、XR Origincamera の移動による不要な影響(物理システムの計算への影響など)を受けることなく静止した状態を保ちます。ただし、これは絶対ではありません。具体的には:

  • 選択方法がわからない場合は、デフォルト値である FirstTarget を使用する
    ほとんどの AR 機能には誤差があり、実行中にこの誤差が継続的に修正されるため、現実世界で相対的に静止しているように見えるオブジェクト(スパース空間マップの target や モーショントラッキングの XR Origin など)は、仮想空間内で相対運動を起こす可能性があります。この場合、target を中心として使用することは、XR Origin を使用するよりもコンテンツ制作のニーズに合致します。

  • 複数の target が同時にトラッキングされている場合
    複数の target が同時にトラッキングされている場合も、計算誤差により、現実世界のオブジェクトが相対的に静止していても、これらの target 間に相対運動が生じる可能性があります。中心オブジェクトの選択は実際のニーズに基づいて判断する必要があり、通常 FirstTarget モードがより適切な選択です。

  • SessionOrigin モードを使用する場合
    SessionOrigin は、モーショントラッキングのみが実行されているシナリオに適しており、この場合 XR Origin が唯一の基準点です。また、ヘッドセットメーカーがモーショントラッキングの基準点を正しく実装していないといった特殊な状況でも、Unity のワールド中心を強制するために SessionOrigin モードの使用が必要になります。

  • Camera モードの使用シナリオ
    Camera モードは、物理カメラが固定されているシナリオ(固定カメラを使用したカード対戦型 AR など)により適しており、この場合 Camera モードを使用するとコンテンツ制作が容易になります。

異なる AR 機能で一般的に使用されるセンターモード

一部の AR 機能を単独で使用する場合、特定のセンターモードがより一般的に使用されます。以下の表は、各 AR 機能に対応する一般的なセンターモードを示しています:

機能 一般的なセンターモード
Mega FirstTarget または SpecificTarget
モーショントラッキング SessionOrigin
平面検出 SessionOrigin
スパース空間マップ FirstTarget または SpecificTarget
高密度空間マップ SessionOrigin
表面トラッキング FirstTarget または SpecificTarget
画像トラッキング FirstTarget、SpecificTarget または Camera
画像クラウド認識 FirstTarget、SpecificTarget または Camera
オブジェクトトラッキング FirstTarget、SpecificTarget または Camera

クロスデバイスで考慮すべき問題

クロスデバイスの AR アプリケーションを開発する際は、異なるデバイスがサポートするセンターモードの状況を考慮する必要があります。

  • スマートフォンとタブレットのみを対象とする場合、通常大きな問題はありません。SessionOrigin を使用する必要がある場合は、モーショントラッキングが実行可能であることを確認してください。
  • ヘッドセットを使用する必要がある場合は特に注意が必要です:
    • 利用可能なセンターモード を参照し、使用予定のデバイスがサポートするセンターモードを確認してください。サードパーティ製拡張機能を使用する場合は、それらが使用する OriginType に注意してください。
    • Rokid デバイスを使用する場合は、UXR の使用をできるだけ避けてください。XRI を使用すると、ほとんどのセンターモードが利用可能であることを確認できます。
    • FirstTarget および SpecificTarget モードをサポートしていないヘッドセットでは、Mega や画像トラッキングなどのほとんどの機能を使用しても、Unity のワールド座標系に対してコンテンツを静止させることは難しいことに注意する必要があります。

すべてのセンターモードで正しく表示されるコンテンツ

警告

Unity AR では、Unity のワールド座標系に存在し、session コンポーネントに応じて transform が調整されていないオブジェクトは、正しく表示されない可能性があります。

ワールド座標系に配置されたモデルの位置と向きは、現実世界のどのオブジェクトとも対応関係がない可能性があり、実際の実行効果は偶然正常に見えることもあれば、空中に浮いているように見えたり、あちこち動いたりする可能性があります。

すべてのセンターモードでコンテンツを正しく表示させるには、以下の正しい方法をとる必要があります:

  • 表示するコンテンツを常に対応する target ノードの下に配置するか、XR Origin ノードの下に配置する(コンテンツが XR Origin の動きに追従する必要がある場合)。
  • または、手動でコンテンツと target または XR Origin の位置と向きを合わせるが、ARSession.PostSessionUpdate イベントの後に操作する必要がある。
注記

これによりすべてのコンテンツ要素が正常に動作する保証はありません。Unity の一部の機能(物理システムなど)はワールド座標系でのみ動作するため、適切なセンターモードの選択は依然として重要です。

関連トピック