Table of Contents

Поддержка 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      ARCore["ARCore<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      ARKit["ARKit<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"] 
      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 можно рассмотреть в двух ситуациях:

  1. Нужно использовать функции ARKit или ARCore, не обёрнутые EasyAR

    Если некоторые нужные функции ARCore или ARKit не обёрнуты в EasyAR, можно использовать AR Foundation. Например, AR Foundation предоставляет поддержку face tracking ARKit через ARFaceManager, а EasyAR эту функцию не оборачивает.

  2. Использование 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 не является оптимальным. Есть две ситуации:

  1. На тех телефонах Xiaomi и Redmi, которые EasyAR напрямую не поддерживает, во входные данные EasyAR поступает grayscale image, а не цветное изображение; это влияет на некоторые алгоритмы. Из-за особенностей самих устройств это нельзя решить настройкой конфигурации.
  2. При использовании 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, и способы их использования.

Следующие шаги

Связанные темы


  1. В Unity 6 и более новых версиях минимальная поддерживаемая версия: 2.0.4. В Unity 2022.3 минимальная поддерживаемая версия: 1.2.3; 1.3.x не поддерживается.