Table of Contents

Soporte de EasyAR para el framework Unity XR

EasyAR no depende del framework Unity XR para proporcionar funciones AR, pero puede admitir algunos paquetes de componentes del framework Unity XR, de modo que al usar las funciones AR de EasyAR en Unity se puedan aprovechar las capacidades que ofrece Unity XR. A continuación se presenta el soporte de EasyAR para Unity XR y en qué casos se puede considerar usar AR Foundation.

Soporte de Unity XR

Unity admite el desarrollo XR mediante su plugin framework y una serie de feature packages y toolkits. EasyAR también admite estos paquetes de componentes Unity XR, de modo que al usar las funciones AR de EasyAR en Unity se puedan aprovechar las capacidades del framework Unity XR.

EasyAR admite los siguientes paquetes de componentes Unity XR:

Nombre mostrado Nombre del paquete Versión mínima soportada Obligatorio Uso
XR Core Utilities com.unity.xr.core-utils 2.0.0 No Proporciona soporte para Unity.XR.CoreUtils.XROrigin
AR Foundation com.unity.xr.arfoundation 5.0.0 No Proporciona soporte de AR Foundation
XR Plugin Management com.unity.xr.management 3.0.0 No Proporciona compatibilidad de administración de ARCore SDK y obtiene el tipo de XR Loader en runtime
XR Interaction Toolkit com.unity.xr.interaction.toolkit 2.0.0 No No se usa directamente
PolySpatial visionOS com.unity.polyspatial.visionos 2.0.41 No No se usa directamente
Apple visionOS XR Plugin com.unity.xr.visionos 2.0.41 No No se usa directamente
Apple ARKit XR Plugin com.unity.xr.arkit 5.0.0 No No se usa directamente
Google ARCore XR Plugin com.unity.xr.arcore 5.0.0 No Proporciona compatibilidad de administración de ARCore SDK
Nota

EasyAR no depende del framework Unity XR para proporcionar funciones AR. Por lo tanto, cuando no se necesitan componentes Unity XR como AR Foundation, estos paquetes no tienen que instalarse y EasyAR seguirá funcionando normalmente en dispositivos soportados.

Soporte de AR Foundation

AR Foundation es el framework de desarrollo AR proporcionado por Unity. Sus funciones AR se implementan mediante el sistema subyacente o terceros, y se usa con frecuencia para soportar ARCore, ARKit y algunos headsets.

Relación entre EasyAR y 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 y AR Foundation son dos frameworks AR independientes. EasyAR no depende de AR Foundation para implementar sus funciones AR. EasyAR también puede implementar motion tracking mediante bibliotecas del sistema como ARKit y ARCore. Al mismo tiempo, EasyAR proporciona dos implementaciones de motion tracking que AR Foundation no tiene: la implementación propia de EasyAR y la implementación proporcionada por AR Engine, ofreciendo un soporte de dispositivos más amplio que AR Foundation.

Además, EasyAR puede obtener datos de AR Foundation runtime y usar la capacidad de motion tracking que ofrece AR Foundation runtime para impulsar otras funciones AR, proporcionando compatibilidad con AR Foundation. Estas funciones incluyen:

  • Mega
  • Sparse spatial map
  • Dense spatial map
  • Image tracking y object tracking con motion fusion

Consulte motion tracking y funciones de EasyAR para conocer con más detalle la relación entre motion tracking y las funciones de EasyAR.

Cuándo es necesario usar AR Foundation

En la mayoría de los casos no es necesario usar AR Foundation; EasyAR funciona normalmente en una gama de dispositivos más amplia que la soportada por AR Foundation. Normalmente puede considerarse AR Foundation en las dos situaciones siguientes:

  1. Se necesitan funciones de ARKit o ARCore que EasyAR no ha encapsulado

    Si algunas funciones de ARCore o ARKit que necesita no están encapsuladas en EasyAR, puede usar AR Foundation. Por ejemplo, AR Foundation proporciona soporte para face tracking de ARKit mediante ARFaceManager, y EasyAR no encapsula esta función.

  2. Usar ARCore, en lugar del motion tracking implementado por EasyAR, en algunos teléfonos Xiaomi con problemas del sistema

    Si necesita usar ARCore en todos los teléfonos Xiaomi y Redmi que soportan ARCore, puede considerar habilitar AR Foundation. Debido a problemas del sistema en algunos teléfonos Xiaomi y Redmi, la encapsulación ARCore de EasyAR no soporta estos dispositivos, incluidas las series Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40, etc. (la lista no es completa y el soporte de dispositivos seguirá actualizándose). En estos teléfonos, ARCore no se usará con la configuración predeterminada; en teléfonos que soportan EasyAR motion tracking se usará EasyAR motion tracking.

Al usar AR Foundation, el efecto de las funciones EasyAR no es óptimo. Existen dos casos:

  1. En esa parte de teléfonos Xiaomi y Redmi no soportados directamente por EasyAR, los datos de entrada para EasyAR son imágenes en escala de grises en lugar de imágenes en color, lo que afecta a algunos algoritmos. Debido a problemas del propio dispositivo, esto no puede resolverse mediante configuración.
  2. Al usar Mega, la configuración que AR Foundation usa por defecto no es óptima.
Precaución

Puede obtener datos de entrada mejores modificando ARCameraManager.currentConfiguration de AR Foundation. Habilitar ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking puede completar automáticamente la selección de la mejor ARCameraManager.currentConfiguration. Pero debe tener en cuenta que algunos teléfonos (por ejemplo Mi 10) tienen problemas propios: después de modificar la configuración no se pueden obtener imágenes y EasyAR no podrá usarse (la aplicación tiene fondo de imagen, pero las funciones EasyAR no reaccionan). Por ello normalmente no se recomienda habilitarlo; si necesita usarlo, prepare una estrategia de fallback para cuando EasyAR no pueda usarse.

Soporte de headsets

Como el framework Unity XR no proporciona interfaces de datos suficientemente completas, EasyAR no soporta headsets a través del framework Unity XR.

En headsets que soportan el framework Unity XR, EasyAR soporta el uso de Unity.XR.CoreUtils.XROrigin mediante XR Core Utilities, pero no usa el framework Unity XR para implementar el soporte de headsets. EasyAR no afecta a las funciones de XR Interaction Toolkit; siempre que el dispositivo lo soporte, puede usarse normalmente.

En general, cada fabricante de headsets proporciona su propio SDK o interfaces del sistema para proporcionar estos datos. EasyAR soporta headsets mediante interfaces del sistema y SDK de fabricantes. A veces estos SDK no son completamente públicos, y EasyAR coopera con los fabricantes para proporcionar soporte completo. Soporte de headsets en Unity presenta los headsets soportados por EasyAR y cómo usarlos.

Próximos pasos

Temas relacionados


  1. En Unity 6 y versiones posteriores, la versión mínima soportada es 2.0.4. En Unity 2022.3, la versión mínima soportada es 1.2.3 y 1.3.x no está soportada.