Table of Contents

Unity シーン内での Unity XR オブジェクトの自動切り替え

Unity の XR コンポーネント(AR Foundation を含む)がサポートできるデバイスは限られています。サポートされているデバイスで AR Foundation を使用しつつ、他の多数のデバイスで AR 機能を利用できるようにするため、EasyAR は Unity XR オブジェクトの自動切り替え機能を提供します。以下に、この機能がシーンオブジェクトに与える変更と使用方法について説明します。

開始する前に

機能説明

Unity の AR Foundation はモバイルデバイスでは ARCore および ARKit が基盤となっており、限られたデバイスでのみ使用可能で、特に多くの国産 Android スマートフォンでは使用できないため、通常はサポートされているデバイスでのみ AR Foundation および関連機能スクリプトを有効にすることをお勧めします。Unity XR オブジェクトの自動切り替え機能はこの操作を実現し、主にモバイル AR 向けに設計されており、ヘッドセットではデフォルト設定で機能は無効化されます。

完全な機能が有効な場合、

デフォルト設定では、機能は以下の条件で有効になります。

  • Windows/Mac 上で有効。
  • スイッチャー起動時に、モバイル AR(ARKit/ARCore)のローダーがアクティブな場合、有効。
  • スイッチャー起動時に、モバイルAR(ARKit/ARCore)以外の他のローダーが存在し、かつどのローダーもアクティブでない場合、無効。
注記

XR Interaction Toolkit のコンポーネントはこの機能の制御対象外ですが、EasyAR 内での動作保証はありません。理論的には、Unity.XR.CoreUtils.XROrigin GameObject とその Camera のみを使用する機能は正常に動作するはずです。動作が不安定な場合は、ARSession.ARCenterModeARSession.ARCenterMode.SessionOrigin に設定してみてください。それでも正常に動作しない場合は、カスタムの XR Interaction Toolkit コンポーネント制御を実装し、FrameSourceARFoundationFrameSource を継承していない場合に関連コンポーネントを無効にする必要があります。

設定方法

この機能は、Project Settings > EasyAR > Sense 内の Unity XR > Unity XR Auto Switch のオプションで有効または無効にできます。

alt text

図中のオプションは以下のように機能を設定します:

  • Editor:エディットモードオプション
  • Player:プレイモードオプション
    • Enable:ランタイム制御を有効にします。注意:このオプションをオフにすると、エディットモードで無効化されたコンポーネントはランタイムで復元されません。
    • Enable If Desktop:Windows/Mac 上で有効にします。
    • Enable If Mobile AR On Startup:スイッチャー起動時に、モバイル AR(ARKit/ARCore)のローダーがアクティブな場合、有効にします。通常、このオプションは Project Settings > XR Plug-in Management 内の Initialize XR on Startup が選択されている必要があります。
    • Disable If Non Mobile AR Post Startup:スイッチャー起動時に、モバイルAR(ARKit/ARCore)以外の他のローダーが存在し、かつどのローダーもアクティブでない場合、無効にします。通常、このオプションは Project Settings > XR Plug-in Management 内の Initialize XR on Startup が選択されていない場合に使用されます。
    • Restore AR Session When Disabled:機能が無効な場合、無効化されているすべての UnityEngine.XR.ARFoundation.ARSession(EasyAR によって無効化されたかどうかに関わらず)を復元(有効化)します。このオプションは通常、編集時に無効化されたコンポーネントを復元するために使用されます。

カスタム制御方法の使用

これらのコンポーネントの切り替えをカスタマイズする必要がある場合、または EasyAR の動作が特定のコンポーネントの正常な動作を妨げている場合は、これらのオプションをオフにし、以下の基本ルールに基づいてコンポーネント切り替えをカスタマイズしてください:

  1. エディタで UnityEngine.XR.ARFoundation.ARSession を無効にする(他のすべてのスクリプトより先に実行される)。
  2. AR Foundation が動作を開始する前に、すべての Unity XR Core コンポーネント、AR Foundation コンポーネント、および制御が必要な関連コンポーネントまたは機能を無効にする。
  3. easyar.ARSession.Assemble() プロセス中に ARCoreARFoundationFrameSource または ARKitARFoundationFrameSource が選択された場合、事前に無効にしたすべてのコンポーネントまたは機能を有効にする。これは StartSession() が完了する前に完了する必要があり、通常は easyar.ARSession.AssembleUpdate イベントのレスポンスで行うことを推奨します。
  4. easyar.ARSession.Assemble() プロセス中に他の FrameSource が選択された場合は、そのままにしておく。

関連トピック