Поддержка EasyAR для framework Unity XR
EasyAR не зависит от framework Unity XR для предоставления AR-функций, но может поддерживать часть component packages в framework Unity XR, чтобы при использовании AR-функций EasyAR в Unity можно было использовать возможности, предоставляемые framework Unity XR. Ниже описана поддержка EasyAR для framework Unity XR и ситуации, в которых можно рассмотреть использование AR Foundation.
Поддержка Unity XR
Unity поддерживает XR-разработку через plugin framework и набор feature packages и toolkits. EasyAR также поддерживает эти Unity XR component packages, чтобы при использовании AR-функций EasyAR в Unity можно было использовать возможности framework Unity XR.
EasyAR поддерживает следующие Unity XR component packages:
| Display name | Package name | Минимальная поддерживаемая версия | Обязательно | Назначение |
|---|---|---|---|---|
| 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 | Нет | Напрямую не используется |
| 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 не зависит от framework Unity XR для предоставления AR-функций. Поэтому, если нет потребности использовать компоненты Unity XR, такие как AR Foundation, эти packages можно не устанавливать; EasyAR всё равно будет нормально работать на поддерживаемых устройствах.
Поддержка AR Foundation
AR Foundation — это AR development framework, предоставляемый Unity. Его AR-функции реализуются через нижележащую систему или сторонние реализации и часто используются для поддержки ARCore, ARKit и некоторых headset.
Связь 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 — два независимых AR framework. EasyAR не зависит от AR Foundation для реализации своих AR-функций. EasyAR также может реализовывать motion tracking через системные библиотеки, такие как ARKit и ARCore. При этом EasyAR предоставляет две реализации motion tracking, которых нет в AR Foundation: собственную реализацию motion tracking EasyAR и реализацию motion tracking через AR Engine, что обеспечивает более широкую поддержку устройств по сравнению с AR Foundation.
В то же время EasyAR может получать runtime-данные AR Foundation и использовать предоставляемую AR Foundation runtime возможность motion tracking для запуска других AR-функций, обеспечивая совместимость с AR Foundation. Эти функции включают:
- Mega
- Sparse spatial map
- Dense spatial map
- Image tracking и object tracking с использованием motion fusion
См. motion tracking и функции EasyAR, чтобы подробнее понять связь motion tracking с функциями EasyAR.
Когда нужно использовать AR Foundation
В большинстве случаев AR Foundation можно не использовать; EasyAR будет нормально работать на более широком наборе устройств, чем поддерживает AR Foundation. Обычно AR Foundation можно рассмотреть в двух ситуациях:
Нужно использовать функции ARKit или ARCore, не обёрнутые EasyAR
Если некоторые нужные функции ARCore или ARKit не обёрнуты в EasyAR, можно использовать AR Foundation. Например, AR Foundation предоставляет поддержку face tracking ARKit через ARFaceManager, а EasyAR эту функцию не оборачивает.
Использование ARCore вместо реализованного EasyAR motion tracking на некоторых телефонах Xiaomi с системными проблемами
Если нужно использовать ARCore на всех телефонах Xiaomi и Redmi, поддерживающих ARCore, можно рассмотреть включение AR Foundation. Из-за системных проблем на некоторых телефонах Xiaomi и Redmi обёртка ARCore в EasyAR не поддерживает эти устройства, включая серии Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40 и другие (список неполный, поддержка устройств будет обновляться). На этих телефонах ARCore не будет использоваться в конфигурации по умолчанию; на телефонах с поддержкой EasyAR motion tracking будет использоваться EasyAR motion tracking.
При использовании AR Foundation результат функций EasyAR не является оптимальным. Есть две ситуации:
- На тех телефонах Xiaomi и Redmi, которые EasyAR напрямую не поддерживает, во входные данные EasyAR поступает grayscale image, а не цветное изображение; это влияет на некоторые алгоритмы. Из-за особенностей самих устройств это нельзя решить настройкой конфигурации.
- При использовании Mega конфигурация, которую AR Foundation использует по умолчанию, не является оптимальной.
Осторожно
Более качественные входные данные можно получить, изменив ARCameraManager.currentConfiguration в AR Foundation. Включение ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking позволяет автоматически выбрать лучшую ARCameraManager.currentConfiguration. Но следует учитывать, что некоторые телефоны сами имеют проблемы (например, Mi 10): после изменения конфигурации изображение может не получаться, и EasyAR не сможет использоваться (у приложения есть image background, но функции EasyAR никак не реагируют). Поэтому обычно включать это не рекомендуется; если использование необходимо, нужно подготовить fallback на случай, когда EasyAR недоступен.
Поддержка headset
Поскольку framework Unity XR не предоставляет достаточно полных data interfaces, EasyAR не поддерживает headset через framework Unity XR.
На headset, поддерживающих framework Unity XR, EasyAR через XR Core Utilities поддерживает использование Unity.XR.CoreUtils.XROrigin, но не использует framework Unity XR для реализации поддержки headset. EasyAR не влияет на функции XR Interaction Toolkit; если устройство поддерживает их, они могут использоваться нормально.
Как правило, производители headset предоставляют собственные SDK или системные interfaces для этих данных. EasyAR поддерживает headset через системные interfaces и SDK производителей. Иногда эти SDK не полностью публичны, и EasyAR сотрудничает с производителями для предоставления полной поддержки. Поддержка headset в Unity описывает headset, поддерживаемые EasyAR, и способы их использования.
Следующие шаги
- Узнайте, как включить AR Foundation в проекте EasyAR
- Узнайте о конфигурации scene и использовании AR Foundation в проектах EasyAR
- Узнайте, как автоматически переключать AR Foundation в зависимости от поддержки устройства