Table of Contents

Unity シーンで Unity XR オブジェクトを自動切り替えする

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

開始する前に

機能紹介

Unity の AR Foundation はスマートフォン上では内部実装が ARCore と ARKit であるため、限られたデバイスでしか使用できず、特に多くの中国国内向け Android スマートフォンでは使用できません。そのため通常は、対応デバイスでのみ AR Foundation と関連機能 script を有効にすることが推奨されます。Unity XR オブジェクトの自動切り替え機能はこの操作を実現するもので、主に mobile AR 向けに設計され、ヘッドセットではデフォルト設定で無効になります。

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

デフォルト設定では、機能が有効になる条件は次のとおりです。

  • Windows/Mac で有効。
  • switcher 起動時に mobile AR(ARKit/ARCore)の loader が active の場合、有効。
  • switcher 起動時に mobile AR(ARKit/ARCore)以外の loader が存在するが、active な loader が 1 つもない場合、無効。
注記

XR Interaction Toolkit のコンポーネントはこの機能によって制御されません。また、それらが EasyAR で使用可能かどうかは検証されていません。理論上、Unity.XR.CoreUtils.XROrigin GameObject とその Camera のみを使用する機能は正常に動作するはずです。動作が異常な場合は、ARSession.ARCenterModeARSession.ARCenterMode.SessionOrigin に設定してみてください。それでも正常に動作しない場合は、独自の XR Interaction Toolkit コンポーネント制御を実装し、FrameSourceARFoundationFrameSource を継承していないときに関連コンポーネントを無効にする必要があります。

設定方法

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

alt text

図中のオプションの動作は次のとおりです:

  • Editor: 編集モードオプション
  • Player: runtime モードオプション
    • Enable: runtime 制御を有効化します。注意: このオプションをオフにすると、編集モードで無効化されたコンポーネントは runtime で復元されません。
    • Enable If Desktop: Windows/Mac で有効化します。
    • Enable If Mobile AR On Startup: switcher 起動時に mobile AR(ARKit/ARCore)の loader が active の場合、有効化します。通常、このオプションでは Project Settings > XR Plug-in ManagementInitialize XR on Startup が選択されている必要があります。
    • Disable If Non Mobile AR Post Startup: switcher 起動時に mobile AR(ARKit/ARCore)以外の loader が存在するが、active な loader が 1 つもない場合、無効化します。通常、このオプションは Project Settings > XR Plug-in ManagementInitialize XR on Startup が未選択のときに使用されます。
    • Restore AR Session When Disabled: 機能が無効な場合、無効化されたすべての UnityEngine.XR.ARFoundation.ARSession を復元(有効化)します(EasyAR によって無効化されたかどうかに関係ありません)。このオプションは通常、編集時に無効化されたコンポーネントを復元するために使用されます。

カスタム制御方法を使用する

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

  1. エディターで UnityEngine.XR.ARFoundation.ARSession を無効化します(実行順序が他のすべての script より早いため)
  2. AR Foundation が動作を開始する前に、すべての Unity XR Core コンポーネント、AR Foundation コンポーネント、および制御が必要な関連コンポーネントまたは機能を無効化します
  3. easyar.ARSession.Assemble() の過程で ARCoreARFoundationFrameSource または ARKitARFoundationFrameSource が選択された場合、以前に無効化したすべてのコンポーネントまたは機能を StartSession() 完了前に有効化します。通常は easyar.ARSession.AssembleUpdate イベント応答内で完了することをお勧めします
  4. easyar.ARSession.Assemble() の過程で他の FrameSource が選択された場合は、そのままにします

関連トピック