Unity XR フレームワークに対する EasyAR のサポート
EasyAR は AR 機能を提供するために Unity XR フレームワークに依存していませんが、Unity で EasyAR の AR 機能を使用するときに Unity XR フレームワークが提供する機能を利用できるよう、Unity XR フレームワーク内の一部のコンポーネントパッケージをサポートできます。以下では、EasyAR の Unity XR フレームワーク対応状況と、どのような場合に AR Foundation の使用を検討できるかを説明します。
Unity XR サポート
Unity は plugin framework と一連の feature package および toolkit によって 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 管理互換性と runtime XR Loader タイプ取得を提供 |
| XR Interaction Toolkit | com.unity.xr.interaction.toolkit | 2.0.0 | いいえ | 直接使用しない |
| PolySpatial visionOS | com.unity.polyspatial.visionos | 2.0.41 | いいえ | 直接使用しない |
| Apple visionOS XR Plugin | com.unity.xr.visionos | 2.0.41 | いいえ | 直接使用しない |
| Apple ARKit XR Plugin | com.unity.xr.arkit | 5.0.0 | いいえ | 直接使用しない |
| Google ARCore XR Plugin | 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>App"]
space
App2["EasyAR + AR Foundation<br>App"]
space
App3["AR Foundation<br>App"]
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 などのシステムライブラリを通じて motion tracking 能力を実装することもできます。同時に、EasyAR は AR Foundation にはない 2 種類の motion tracking 実装、すなわち EasyAR 自身の motion tracking 実装と AR Engine による motion tracking 実装を提供し、AR Foundation より広範なデバイスサポートを提供します。
また、EasyAR は AR Foundation runtime のデータを取得し、AR Foundation runtime が提供する motion tracking 能力を利用して他の AR 機能を駆動できるため、AR Foundation との互換性を提供します。これらの機能には以下が含まれます:
- Mega
- Sparse spatial map
- Dense spatial map
- motion fusion を使用する image tracking と object tracking
motion tracking と EasyAR 機能の関係の詳細については、motion tracking と EasyAR 機能を参照してください。
AR Foundation を使用する必要がある場合
ほとんどの場合、AR Foundation を使用しなくても、EasyAR は AR Foundation がサポートするより広い範囲のデバイスで正常に動作します。通常、次の 2 つの場合に AR Foundation の使用を検討できます:
EasyAR がラップしていない ARKit または ARCore 機能を使用する必要がある場合
使用したい ARCore または ARKit の一部機能が EasyAR でラップされていない場合、AR Foundation を使用できます。例えば AR Foundation は ARFaceManager によって ARKit face tracking をサポートしますが、EasyAR はこの機能をラップしていません。
一部のシステム問題がある Xiaomi スマートフォンで、EasyAR 実装の motion tracking ではなく ARCore を使用する場合
ARCore をサポートするすべての Xiaomi および Redmi スマートフォンで ARCore を使用する必要がある場合、AR Foundation の有効化を検討できます。一部の Xiaomi および Redmi スマートフォンのシステム問題により、EasyAR の ARCore ラッパーはこれらのデバイスをサポートしていません。これには Mi 9、Mi 10、Redmi K20、Redmi K30、Redmi K40 などのシリーズが含まれます(ここに挙げたものは完全な一覧ではなく、デバイスサポートは継続的に更新されます)。これらのスマートフォンでは、デフォルト設定では ARCore は使用されず、EasyAR motion tracking をサポートするスマートフォンでは EasyAR motion tracking が使用されます。
AR Foundation を使用する場合、EasyAR の機能効果は最適ではありません。次の 2 つの場合があります:
- EasyAR が直接サポートしない一部の Xiaomi および Redmi スマートフォンでは、EasyAR に入力されるデータはカラー画像ではなくグレースケール画像であり、一部アルゴリズムの効果に影響します。これはデバイス自体の問題であるため、設定では解決できません。
- Mega 使用時、AR Foundation のデフォルト設定は最適ではありません。
注意
AR Foundation の ARCameraManager.currentConfiguration を変更することで、より良い入力データを取得できます。ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking を有効にすると、最適な ARCameraManager.currentConfiguration の選択を自動で完了できます。ただし、一部のスマートフォン自体(例えば Mi 10)には問題があり、設定変更後に画像を取得できず、EasyAR が使用できなくなる場合があります(アプリには画像背景があるが EasyAR 機能が反応しない)。そのため通常は有効化を推奨しません。使用する必要がある場合は、EasyAR が使用できないときの fallback を用意してください。
ヘッドセットサポート
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 scene 設定と使用方法を理解する
- デバイスサポート状況に基づいて AR Foundation を自動切り替えする方法を理解する