Table of Contents

Поддержка 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 стоит в двух случаях:

  1. Необходимость использования функций ARKit или ARCore, не инкапсулированных в EasyAR

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

  2. Использование реализации отслеживания движения через 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. Существует два случая:

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

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

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


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