Поддержка EasyAR для фреймворка Unity XR
EasyAR не зависит от фреймворка Unity XR для предоставления AR-функций, но может поддерживать некоторые компонентные пакеты из фреймворка Unity XR, чтобы при использовании AR-возможностей EasyAR в Unity можно было задействовать функционал, предоставляемый фреймворком Unity XR. Ниже описана поддержка EasyAR фреймворка Unity XR и случаи, когда можно рассмотреть использование AR Foundation.
Поддержка Unity XR
Unity поддерживает разработку XR через свою плагин-систему и набор пакетов и инструментов. EasyAR также поддерживает эти пакеты Unity XR, чтобы при использовании AR-возможностей EasyAR в Unity можно было задействовать функционал фреймворка 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 | Нет | Не используется напрямую |
| 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 не зависит от фреймворка Unity XR для предоставления AR-функций. Поэтому, если нет потребности в использовании таких компонентов Unity XR, как AR Foundation, эти пакеты можно не устанавливать. EasyAR будет продолжать работать на поддерживаемых устройствах.
Поддержка AR Foundation
AR Foundation — это фреймворк для разработки AR от Unity, его 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["Трекер<br>изображений"]
Object["Разреженная<br>SpatialMap"]
MotionTracker["Трекер<br>движения"]
MARCore["ARCore"]
MARKit["ARKit"]
Others["..."]
end
end
block:groupXRSubsystem:2
columns 1
XRSubsystem["XR Подсистемы"]
XRSDK["Unity XR SDK"]
end
block:groupSystem:6
columns 1
System["Системная библиотека"]
block:groupSystemWrapper
space
AREngine["Библиотека<br>AR Engine"]
space
ARCore["Библиотека<br>ARCore"]
space
ARKit["Библиотека<br>ARKit"]
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-фреймворка. EasyAR не зависит от AR Foundation для реализации своих AR-функций. EasyAR также может использовать системные библиотеки, такие как ARKit, ARCore, для реализации возможностей отслеживания движения. Кроме того, EasyAR предоставляет две реализации отслеживания движения, отсутствующие в AR Foundation: собственную реализацию отслеживания движения EasyAR и реализацию через AR Engine, что обеспечивает более широкую поддержку устройств по сравнению с AR Foundation.
В то же время, EasyAR может получать данные среды выполнения AR Foundation и использовать предоставляемые ею возможности отслеживания движения для управления другими AR-функциями, обеспечивая совместимость с AR Foundation. Эти функции включают:
- Mega
- Разреженная пространственная карта (sparse spatial map)
- Плотная пространственная карта (dense spatial map)
- Отслеживание изображений и объектов с использованием слияния движения (motion fusion)
Более подробную информацию о связи отслеживания движения и функций EasyAR можно найти в разделе Отслеживание движения и функции EasyAR.
Когда стоит использовать AR Foundation
В большинстве случаев можно обойтись без AR Foundation, так как EasyAR будет работать на более широком спектре устройств, чем поддерживает AR Foundation. Обычно рассмотреть использование AR Foundation стоит в двух случаях:
Необходимость использования функций ARKit или ARCore, не инкапсулированных в EasyAR
Если вам нужны некоторые функции, предоставляемые ARCore или ARKit, которые не инкапсулированы в EasyAR, можно использовать AR Foundation. Например, AR Foundation предоставляет поддержку отслеживания лиц в ARKit (ARFaceManager), которую EasyAR не инкапсулирует.
Использование реализации отслеживания движения через ARCore, а не EasyAR, на некоторых телефонах Xiaomi с проблемами в системе
Если необходимо использовать ARCore на всех поддерживающих его телефонах Xiaomi и Redmi, можно включить AR Foundation. Из-за проблем в системе на некоторых телефонах Xiaomi и Redmi, инкапсуляция ARCore в EasyAR не поддерживает эти устройства, включая серии Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40 и другие (список неполный, поддержка устройств постоянно обновляется). На этих телефонах в конфигурации по умолчанию ARCore использоваться не будет; на устройствах, поддерживающих отслеживание движения от EasyAR, будет использоваться оно.
Использование AR Foundation не обеспечивает оптимальную работу функций EasyAR. Существует два случая:
- На части телефонов Xiaomi и Redmi, которые EasyAR не поддерживает напрямую, EasyAR получает данные в оттенках серого, а не в цвете, что влияет на эффективность некоторых алгоритмов. Из-за проблем самих устройств это нельзя решить настройкой.
- При использовании Mega конфигурация, используемая AR Foundation по умолчанию, не является оптимальной.
Осторожно
Можно изменить ARCameraManager.currentConfiguration в AR Foundation для получения более качественных входных данных. Включение ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking автоматически выберет наилучшую ARCameraManager.currentConfiguration. Однако следует учитывать, что некоторые телефоны (например, Xiaomi 10) имеют собственные проблемы и после изменения конфигурации не могут получать изображения, что сделает EasyAR непригодным (у приложения будет фоновое изображение, но функции EasyAR не будут реагировать). Поэтому обычно не рекомендуется включать эту опцию. Если вы все же решите ее использовать, необходимо предусмотреть стратегию отката на случай, если EasyAR перестанет работать.
Поддержка гарнитур
Поскольку фреймворк Unity XR не предоставляет достаточно полных интерфейсов данных, EasyAR не использует его для поддержки гарнитур.
На гарнитурах, поддерживающих фреймворк Unity XR, EasyAR будет поддерживать использование Unity.XR.CoreUtils.XROrigin через XR Core Utilities, но не использует фреймворк Unity XR для реализации поддержки гарнитур. EasyAR не влияет на функциональность XR Interaction Toolkit, который будет работать нормально, если устройство его поддерживает.
Как правило, производители гарнитур предоставляют собственные SDK или системные интерфейсы для этих данных, и EasyAR поддерживает гарнитуры через системные интерфейсы и SDK производителей. Иногда эти SDK не являются полностью открытыми, и EasyAR сотрудничает с производителями для обеспечения полной поддержки. В разделе Поддержка гарнитур в Unity описаны поддерживаемые EasyAR гарнитуры и способы их использования.
Следующие шаги
- Узнайте, как включить AR Foundation в проекте EasyAR
- Узнайте о настройке сцены и использовании AR Foundation в проекте EasyAR
- Узнайте, как автоматически переключать AR Foundation в зависимости от поддержки устройств