EasyAR の Unity XR フレームワークサポート
EasyAR は AR 機能を提供するために Unity XR フレームワークに依存しませんが、Unity で EasyAR の AR 機能を使用する際に Unity XR フレームワークが提供する機能を活用できるよう、Unity XR フレームワークの一部コンポーネントパッケージをサポートしています。以下では、EasyAR の Unity XR フレームワークサポート状況と、AR Foundation の使用を検討すべき状況について説明します。
Unity XR サポート
Unity は プラグインフレームワークと一連の機能パッケージおよびツールキット を通じて XR 開発をサポートしています。EasyAR もこれらの Unity XR コンポーネントパッケージをサポートしており、Unity で EasyAR の AR 機能を使用する際に Unity XR フレームワークが提供する機能を活用できます。
EasyAR は以下の Unity XR コンポーネントパッケージをサポートします:
| 表示名 | パッケージ名 | 最低サポートバージョン | 必須か | 用途 |
|---|---|---|---|---|
| XR Core Utilities | com.unity.xr.core-utils | 2.0.0 | いいえ | Unity.XR.CoreUtils.XROrigin サポートを提供 |
| AR Foundation | com.unity.xr.arfoundation | 5.0.0 | いいえ | AR Foundation サポートを提供 |
| XR Plugin Management | com.unity.xr.management | 3.0.0 | いいえ | ARCore SDK 管理互換性およびランタイム XR Loader タイプ取得を提供 |
| XR Interaction Toolkit | com.unity.xr.interaction.toolkit | 2.0.0 | いいえ | 直接使用しない |
| PolySpatial visionOS | com.unity.polyspatial.visionos | 2.0.41 | いいえ | 直接使用しない |
| com.unity.xr.visionos | 2.0.41 | いいえ | 直接使用しない | |
| Apple ARKit XR Plugin | com.unity.xr.arkit | 5.0.0 | いいえ | 直接使用しない |
| com.unity.xr.arcore | 5.0.0 | いいえ | ARCore SDK 管理互換性を提供 |
注記
EasyAR は AR 機能を提供するために Unity XR フレームワークに依存しません。したがって、AR Foundation などの Unity XR コンポーネントを使用する必要がない場合は、これらのパッケージをインストールしなくても、EasyAR はサポート対象デバイスで正常に動作します。
AR Foundation サポート
AR Foundation は Unity が提供する AR 開発フレームワークであり、その AR 機能は下層システムまたはサードパーティによって実装され、ARCore、ARKit および一部ヘッドセットのサポートによく使用されます。
EasyAR と AR Foundation の関係
block
columns 6
block:groupApp:6
block:groupAppWrapper
space
App1["EasyAR<br>アプリ"]
space
App2["EasyAR + AR Foundation<br>アプリ"]
space
App3["AR Foundation<br>アプリ"]
end
end
block:groupSensePlugin:4
columns 1
SensePlugin["EasyAR Sense Unity Plugin"]
space
end
block:groupARF
columns 1
ARF["AR Foundation"]
space
end
block:groupXRI
columns 1
XRI["XR Interaction Toolkit"]
space
end
block:groupAREngineInterop
columns 1
AREngineInterop["EasyAR<br>AR Engine Interop"]
space
end
block:groupSense:3
columns 1
Sense["EasyAR Sense"]
block:groupSenseWrapper
Image["Image<br>tracker"]
Object["Sparse<br>SpatialMap"]
MotionTracker["Motion<br>tracker"]
MARCore["ARCore"]
MARKit["ARKit"]
Others["..."]
end
end
block:groupXRSubsystem:2
columns 1
XRSubsystem["XR Subsystems"]
XRSDK["Unity XR SDK"]
end
block:groupSystem:6
columns 1
System["System library"]
block:groupSystemWrapper
space
AREngine["AR Engine<br> Library "]
space
ARCore["ARCore<br> Library "]
space
ARKit["ARKit<br> Library "]
space
end
end
SensePlugin --> App1
SensePlugin --> App2
ARF --> App2
ARF --> App3
groupSense --> SensePlugin
groupAREngineInterop --> SensePlugin
AREngine --> groupAREngineInterop
XRSubsystem --> ARF
XRSubsystem --> XRI
ARCore --> MARCore
ARKit --> MARKit
ARCore --> XRSDK
ARKit --> XRSDK
style groupApp fill:none,stroke:none,stroke-width:0px
style groupAppWrapper fill:none,stroke:none,stroke-width:0px
style groupSensePlugin fill:none,stroke:none,stroke-width:0px
style groupARF fill:none,stroke:none,stroke-width:0px
style groupXRI fill:none,stroke:none,stroke-width:0px
style AREngineInterop fill:none,stroke:none,stroke-width:0px,color:#fff
style Sense fill:none,stroke:none,stroke-width:0px,color:#fff
style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
style XRSubsystem fill:none,stroke:none,stroke-width:0px,color:#fff
style System fill:none,stroke:none,stroke-width:0px
style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
class groupAREngineInterop EasyAR
class groupSense EasyAR
class SensePlugin EasyAR
classDef Unity fill:#636,stroke:#333,color:#fff
class groupXRSubsystem Unity
class ARF Unity
class XRI Unity
EasyAR と AR Foundation は独立した 2 つの AR フレームワークであり、EasyAR は AR 機能を実現するために AR Foundation に依存しません。EasyAR はシステム内の ARKit、ARCore などのシステムライブラリを通じてモーショントラッキング機能を実現することもできます。同時に、EasyAR は AR Foundation が提供しない 2 つのモーショントラッキング実装(EasyAR 自身の実装と AR Engine による実装)を提供し、AR Foundation よりも広範なデバイスサポートを実現しています。
また、EasyAR は AR Foundation ランタイムのデータを取得でき、AR Foundation ランタイムで提供されるモーショントラッキング機能を利用して他の AR 機能を駆動し、AR Foundation への互換性を提供します。これらの機能には以下が含まれます:
- Mega
- 疎空間マップ
- 密空間マップ
- モーションフュージョンを使用した画像トラッキングおよび物体トラッキング
モーショントラッキングと EasyAR 機能の関係の詳細については、モーショントラッキングと EasyAR 機能 を参照してください。
AR Foundation を使用すべき状況
ほとんどの場合、AR Foundation を使用せずとも、EasyAR は AR Foundation がサポートするよりも広範なデバイスで正常に動作します。通常、以下の 2 つの状況で AR Foundation の使用を検討できます:
EasyAR がカプセル化していない ARKit または ARCore 機能を使用する必要がある場合
ARCore または ARKit が提供する機能のうち EasyAR でカプセル化されていないものを使用する必要がある場合、AR Foundation を使用できます。例えば、AR Foundation は ARKit の顔トラッキングサポート ARFaceManager を提供しますが、EasyAR はこの機能をカプセル化していません。
システムに問題がある一部の Xiaomi スマートフォンで、EasyAR 実装のモーショントラッキングではなく ARCore を使用する場合
ARCore をサポートするすべての Xiaomi および Redmi スマートフォンで ARCore を使用する必要がある場合は、AR Foundation を有効化することを検討してください。一部の Xiaomi および Redmi スマートフォンはシステムに問題があるため、EasyAR の ARCore カプセル化はこれらのデバイス(Mi 9、Mi 10、Redmi K20、Redmi K30、Redmi K40 シリーズなど、完全なリストではなくデバイスサポートは継続的に更新)をサポートしません。これらのスマートフォンでは、デフォルト設定では ARCore が使用されず、EasyAR モーショントラッキングをサポートするデバイスでは EasyAR モーショントラッキングが使用されます。
AR Foundation を使用する場合、EasyAR の機能効果は最適ではありません。以下の 2 つの状況が存在します:
- EasyAR が直接サポートしない一部の Xiaomi および Redmi スマートフォンでは、EasyAR に入力されるデータはカラー画像ではなくグレースケール画像となり、一部のアルゴリズムの効果に影響します。デバイス自体の問題によるものであり、設定で解決することはできません。
- Mega を使用する場合、AR Foundation がデフォルトで使用する設定は最適ではありません。
注意
AR Foundation の ARCameraManager.currentConfiguration を変更することでより最適なデータ入力を取得できます。ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking を有効化すると、最適な ARCameraManager.currentConfiguration 選択が自動的に行われます。ただし、一部のスマートフォン(例:Xiaomi 10)自体に問題があり、設定変更後に画像を取得できない場合、EasyAR は使用不能になることに注意してください(アプリには画像背景が表示されますが EasyAR 機能は反応しません)。そのため、通常は有効化を推奨せず、使用する場合は EasyAR が使用不能になった際のフォールバック対策を準備する必要があります。
ヘッドセットサポート
Unity XR フレームワークは十分なデータインターフェースを提供しないため、EasyAR は Unity XR フレームワークを通じてヘッドセットをサポートしません。
Unity XR フレームワークをサポートするヘッドセット上では、EasyAR は XR Core Utilities を通じて Unity.XR.CoreUtils.XROrigin の使用をサポートしますが、ヘッドセットサポートを実現するために Unity XR フレームワークを使用しません。EasyAR は XR Interaction Toolkit の機能に影響を与えず、デバイスがサポートしていれば正常に使用できます。
一般的に、ヘッドセットメーカーは各々 SDK またはシステムインターフェースを提供してこれらのデータを取得します。EasyAR はシステムインターフェースおよびメーカー SDK を通じてヘッドセットをサポートします。これらの SDK が完全に公開されていない場合もありますが、EasyAR はメーカーと協力して完全なサポートを提供します。Unity でのヘッドセットサポート では、EasyAR がサポートするヘッドセットとその使用方法について説明しています。
次のステップ
- EasyAR プロジェクトで AR Foundation を有効化する方法 を学ぶ
- EasyAR プロジェクトでの AR Foundation シーン設定と使用方法 を理解する
- デバイスサポート状況に基づいて AR Foundation を自動切り替えする方法 を学ぶ