Table of Contents

Soporte de EasyAR para el marco de trabajo XR de Unity

EasyAR no depende del marco de trabajo XR de Unity para proporcionar funciones de AR, pero puede admitir algunos paquetes de componentes del marco de trabajo XR de Unity. Esto permite aprovechar las funciones proporcionadas por el marco de trabajo XR de Unity cuando se utilizan las capacidades de AR de EasyAR en Unity. A continuación, se describe la compatibilidad de EasyAR con el marco de trabajo XR de Unity y en qué casos se podría considerar usar AR Foundation.

Soporte de Unity XR

Unity admite el desarrollo de XR a través de su marco de trabajo de complementos y un conjunto de paquetes de características y herramientas. EasyAR también admite estos paquetes de componentes de Unity XR para permitir el uso de las funciones proporcionadas por el marco de trabajo XR de Unity cuando se emplean las capacidades de AR de EasyAR.

EasyAR admite los siguientes paquetes de Unity XR:

Nombre para mostrar Nombre del paquete Versión mínima admitida ¿Es necesario? Propósito
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 para AR Foundation
XR Plugin Management com.unity.xr.management 3.0.0 No Proporciona compatibilidad con la administración de SDK de ARCore y obtención del tipo XR Loader en tiempo de ejecución
XR Interaction Toolkit com.unity.xr.interaction.toolkit 2.0.0 No No se utiliza directamente
PolySpatial visionOS com.unity.polyspatial.visionos 2.0.41 No No se utiliza directamente
com.unity.xr.visionos 2.0.41 No No se utiliza directamente
Apple ARKit XR Plugin com.unity.xr.arkit 5.0.0 No No se utiliza directamente
Google ARCore XR Plugin com.unity.xr.arcore 5.0.0 No Proporciona compatibilidad con la administración de SDK de ARCore
Nota

EasyAR no depende del marco de trabajo XR de Unity para proporcionar funciones de AR. Por lo tanto, cuando no hay necesidad de usar componentes de Unity XR como AR Foundation, no es necesario instalar estos paquetes, y EasyAR seguirá funcionando correctamente en dispositivos compatibles.

Soporte para AR Foundation

AR Foundation es el marco de trabajo de desarrollo de AR proporcionado por Unity. Sus capacidades de AR se implementan a través de sistemas subyacentes o de terceros, y se utiliza comúnmente para admitir ARCore, ARKit y algunos visores.

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["Biblioteca del sistema"]
    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 marcos de trabajo de AR independientes; EasyAR no depende de AR Foundation para implementar sus funciones de AR. EasyAR también puede utilizar bibliotecas del sistema como ARKit o ARCore para proporcionar capacidades de seguimiento de movimiento. Además, EasyAR ofrece dos implementaciones de seguimiento de movimiento que AR Foundation no proporciona: la propia implementación de seguimiento de movimiento de EasyAR y la implementación a través de AR Engine, lo que brinda un soporte más amplio de dispositivos en comparación con AR Foundation.

Al mismo tiempo, EasyAR puede obtener datos en tiempo de ejecución de AR Foundation y utilizar sus capacidades de seguimiento de movimiento para impulsar otras funciones de AR, proporcionando así compatibilidad con AR Foundation. Estas funciones incluyen:

  • Mega
  • Mapa espacial disperso
  • Mapa espacial denso
  • Seguimiento de imágenes y objetos mediante fusión de movimiento

Se puede consultar Seguimiento de movimiento y funciones de EasyAR para obtener información detallada sobre la relación entre el seguimiento de movimiento y las funciones de EasyAR.

Cuándo se debe usar AR Foundation

En la mayoría de los casos, no es necesario usar AR Foundation, ya que EasyAR funcionará correctamente en un rango más amplio de dispositivos que los admitidos por AR Foundation. Generalmente, se puede considerar el uso de AR Foundation en dos situaciones:

  1. Cuando se necesitan funciones de ARKit o ARCore no encapsuladas por EasyAR

    Si se requieren funciones específicas de ARCore o ARKit que no están encapsuladas en EasyAR, se puede usar AR Foundation. Por ejemplo, AR Foundation proporciona soporte para el seguimiento facial de ARKit ARFaceManager, que EasyAR no encapsula.

  2. Cuando se usa el seguimiento de movimiento implementado por ARCore en lugar de EasyAR en algunos teléfonos Xiaomi con problemas del sistema

    Si se desea usar ARCore en todos los teléfonos Xiaomi y Redmi compatibles, se puede considerar habilitar AR Foundation. Debido a problemas en el sistema de algunos teléfonos Xiaomi y Redmi, la encapsulación de ARCore de EasyAR no admite estos dispositivos, incluyendo las series Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40, entre otros (la lista no es exhaustiva y el soporte de dispositivos se actualiza continuamente). En estos teléfonos, en la configuración predeterminada no se usará ARCore; en su lugar, se utilizará el seguimiento de movimiento de EasyAR en dispositivos compatibles.

El rendimiento de las funciones de EasyAR no es óptimo cuando se usa AR Foundation. Existen dos situaciones:

  1. En los teléfonos Xiaomi y Redmi no admitidos directamente por EasyAR, los datos de entrada son imágenes en escala de grises en lugar de imágenes en color, lo que afecta la eficacia de algunos algoritmos. Esto no se puede solucionar mediante configuración debido a los problemas inherentes del dispositivo.
  2. Cuando se usa Mega, la configuración predeterminada utilizada por AR Foundation no es la óptima.
Precaución

Es posible modificar ARCameraManager.currentConfiguration de AR Foundation para obtener datos de entrada más óptimos. Habilitar ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking selecciona automáticamente la mejor ARCameraManager.currentConfiguration. Sin embargo, algunos teléfonos (como el Xiaomi 10) tienen problemas propios y no pueden obtener imágenes después de modificar la configuración, lo que provoca que EasyAR no funcione (la aplicación muestra un fondo de imagen, pero las funciones de EasyAR no responden). Por lo tanto, generalmente no se recomienda habilitar esta opción, y si se usa, se debe implementar un plan de contingencia para cuando EasyAR no funcione.

Soporte para dispositivos de visualización

Debido a que el marco de trabajo XR de Unity no proporciona interfaces de datos suficientemente completas, EasyAR no admite dispositivos de visualización a través del marco de trabajo XR de Unity.

En dispositivos de visualización compatibles con el marco de trabajo XR de Unity, EasyAR admite el uso de Unity.XR.CoreUtils.XROrigin a través de XR Core Utilities, pero no utiliza el marco de trabajo XR de Unity para implementar el soporte de dispositivos de visualización. EasyAR no afecta las funciones de XR Interaction Toolkit, que se pueden usar normalmente siempre que el dispositivo sea compatible.

Generalmente, los fabricantes de dispositivos de visualización proporcionan SDK o interfaces del sistema para ofrecer estos datos, y EasyAR admite los dispositivos de visualización a través de interfaces del sistema y SDK de los fabricantes. A veces, estos SDK no son completamente públicos, por lo que EasyAR colabora con los fabricantes para brindar soporte completo. Soporte para dispositivos de visualización en Unity describe los dispositivos de visualización admitidos por EasyAR y cómo usarlos.

Próximos pasos

Temas relacionados


  1. En Unity 6 y versiones posteriores, la versión mínima admitida es 2.0.4. En Unity 2022.3, la versión mínima admitida es 1.2.3; no se admiten las versiones 1.3.x.