Table of Contents

Paquete de extensión para auriculares de EasyAR Unity

Este documento presenta los conceptos, los límites de capacidad y los conocimientos previos necesarios para crear paquetes de extensión para auriculares con EasyAR Unity.

Antes de comenzar

Qué es el paquete de extensión EasyAR Unity para auriculares

El paquete de extensión EasyAR Unity para auriculares es un paquete de Unity que incluye código y ejemplos para ayudarle a utilizar las funciones de EasyAR Sense en sus dispositivos de auriculares. A través de este paquete de extensión, puede integrar la mayoría de las funciones de EasyAR Sense (como seguimiento de imágenes, mapa espacial denso, etc.) en su dispositivo, aprovechando así las potentes funciones de RA que ofrece EasyAR.

Usar el paquete de extensión EasyAR Unity para auriculares es una de las formas de compatibilidad con auriculares de EasyAR. El siguiente diagrama muestra la arquitectura general de EasyAR en Unity y la posición del paquete de extensión para auriculares dentro de ella.

block
  columns 4
  block:groupApp:4
    block:groupAppWrapper
      space
      App1["EasyAR + Device A<br>App"]
      space
      App2["EasyAR<br>App"]
      space
      App3["EasyAR + Device B<br>App"]
    end
  end
  
  block:groupSensePluginExtension
    columns 1
    SensePluginExtension["EasyAR Sense Unity Plugin<br>Extension for Device A"]
    space
  end
  block:groupSensePlugin
    columns 1
    SensePlugin["EasyAR Sense Unity Plugin"]
    space
  end
  block:groupXRI
    columns 1
    XRI["XR Interaction Toolkit"]
    space
  end
  block:groupARF
    columns 1
    ARF["AR Foundation"]
    space
  end
  
  block:groupDeviceAUnity
    columns 1
    DeviceAUnity["Device A<br>Unity SDK"]
    space
  end
  block:groupSense
    columns 1
    Sense["EasyAR Sense"]
    block:groupSenseWrapper
      MDeviceB["Device B<br>CameraDevice"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["XR Subsystems"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:4
    columns 1
    System["Native Library"]
    block:groupSystemWrapper
      space
      DeviceA["Device A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      space
      DeviceB["Device B<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
  
  SensePluginExtension --> App1
  SensePlugin --> App1
  SensePlugin --> App2
  SensePlugin --> App3
  ARF --> App3
  XRI --> App1
  XRI --> App3
  groupSense --> SensePlugin
  groupDeviceAUnity --> SensePluginExtension
  SensePlugin --> SensePluginExtension
  DeviceA --> groupDeviceAUnity
  DeviceA --> XRSDK
  XRSubsystem --> ARF
  XRSubsystem --> XRI
  DeviceB --> MDeviceB
  DeviceB --> 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 DeviceAUnity fill:none,stroke:none,stroke-width:0px
  style Sense fill:none,stroke:none,stroke-width:0px,color
  style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
  style XRSubsystem fill:none,stroke:none,stroke-width:0px
  style System fill:none,stroke:none,stroke-width:0px
  style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePluginExtension fill:none,stroke:none,stroke-width:0px  

  classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
  class SensePluginExtension EasyAR

El diagrama enumera dos formas típicas de compatibilidad con auriculares: conectar a través del paquete de extensión Unity para auriculares con el SDK del dispositivo (Device A), y conectar directamente el SDK del dispositivo dentro de la biblioteca EasyAR Sense (Device B). Este documento se centra principalmente en el primer enfoque.

¿Puedo crear mi propio paquete de extensión de visor?

Actualmente, la industria de AR/VR/MR/XR aún no ha formado un esquema de interfaz muy unificado. Aunque OpenXR es un buen candidato, la evolución de la especificación y la implementación de la industria aún requieren tiempo. Por lo tanto, generalmente no es tan fácil que los dispositivos comerciales ejecuten EasyAR directamente; es muy probable que exista una falta de interfaces de datos. Con el desarrollo de la industria, algunos dispositivos emergentes también pueden tener un buen soporte de interfaz. Por ejemplo, en 2024, Apple abrió las interfaces relevantes para Vision Pro, que ya son suficientes para soportar la ejecución de EasyAR, aunque su uso aún requiere ciertos conocimientos profesionales.

Si no puede tomar una decisión, se recomienda contactar al fabricante del hardware o al departamento comercial de EasyAR para obtener soporte para el dispositivo correspondiente.

Si usted es un fabricante de hardware y desea admitir las funciones de EasyAR en su dispositivo, puede consultar el contenido de la documentación siguiente para crear un paquete de extensión de visor, permitiendo así que la mayoría de las funciones de EasyAR se ejecuten en su dispositivo. Este documento proporciona especificaciones de datos e interfaces sin restringir todos los detalles de implementación; cualquier método de implementación o definición de interfaz se puede discutir. Bienvenido a contactar a través de canales comerciales para comunicarse.

El hardware cubierto por este documento debe tener capacidad de seguimiento de movimiento o SLAM. Las funciones de EasyAR necesitan ejecutarse sobre una buena capacidad de seguimiento del dispositivo; generalmente no se recomienda depender de las funciones de EasyAR para optimizar el seguimiento del dispositivo, ya que esto crearía una dependencia cíclica que, en teoría, amplificaría los errores y haría que todo el sistema se volviera inestable. Si el dispositivo en sí no tiene capacidad de seguimiento de movimiento, el esquema de soporte no está cubierto por este documento. Si es necesario, comuníquese a través de canales comerciales.

Capacidades del paquete de extensión para auriculares

El objetivo del paquete de extensión para auriculares es permitir que la mayoría de las funciones de EasyAR Sense se ejecuten en su dispositivo. Para lograr este objetivo, necesita comprender las capacidades del paquete de extensión para auriculares.

Contenido del paquete de extensión del visor

Las extensiones que implementará son:

  • Un conjunto de código que utiliza la función de cámara personalizada para capturar datos de la API de su dispositivo y enviarlos a EasyAR Sense.
  • En Unity, la extensión del visor utiliza una fuente de datos de fotogramas externos y un flujo de datos EasyAR Sense definido por el EasyAR Sense Unity Plugin para simplificar el desarrollo de cámaras personalizadas.
  • En Unity, la extensión del visor es un Unity package que contiene scripts de tiempo de ejecución, scripts de editor y una muestra de extensión, que usted o EasyAR pueden distribuir a usuarios finales.
Consejo

Si no desea exponer los detalles de la integración a sistemas externos, puede contactar a EasyAR para discutirlo. La integración directa utilizando la interfaz C dentro de EasyAR Sense es factible y tiene precedentes.

Durante la implementación de la extensión, es posible que:

  • Modifique el diseño de la interfaz y la implementación interna de su SDK.
  • Discuta y confirme con su equipo los esquemas de adquisición y uso de datos.
  • Dedique mucho tiempo a la verificación de la corrección de los datos en lugar de escribir código.

Una vez completada la extensión, verá que:

  • La mayoría de las funciones de EasyAR Sense son utilizables en su dispositivo, aprovechando la capacidad de seguimiento de movimiento de su dispositivo.
  • Los servicios en la nube de EasyAR compatibles dentro de EasyAR Sense son utilizables en su dispositivo.
  • Solo se puede utilizar una licencia EasyAR XR. Las licencias Personal, Professional y Classic no funcionarán en su dispositivo.
  • Todas las limitaciones de las licencias EasyAR al usar cámaras personalizadas se aplican de la misma manera a su dispositivo.

Lo que no incluye el paquete de extensión para headset

Esta extensión no puede funcionar sin EasyAR Sense:

  • Esta extensión para headset no funciona de forma independiente; como dependencia, EasyAR Sense también es necesario. En Unity, se debe utilizar el EasyAR Sense Unity Plugin.
  • No llama directamente a las API de los servicios en la nube de EasyAR (como el servicio de localización EasyAR Mega); estas llamadas se realizan dentro de EasyAR Sense.
  • En Unity, no llama directamente a los métodos de interfaz para funciones de AR (como el seguimiento de imágenes); estos se completan dentro del EasyAR Sense Unity Plugin.
  • En Unity, no modifica los transform de los objetos en la escena o de los objetivos de seguimiento; esto se realiza dentro del EasyAR Sense Unity Plugin.

Esta extensión no puede funcionar sin el SDK de su dispositivo:

  • En Unity, la extensión para headset o el EasyAR Sense Unity Plugin no modifican el transform de la cámara en la escena; esto debe hacerse dentro del SDK de su dispositivo o en su ruta de dependencia.

Algunas funciones de EasyAR siguen sin estar disponibles mediante la extensión para headset:

  • La funcionalidad de Surface Tracking no estará disponible.
  • El seguimiento de movimiento propio de EasyAR no estará disponible.
  • La detección de planos (parte del seguimiento de movimiento de EasyAR) no estará disponible.

Cómo usar mega en mi dispositivo

Ejecutar Mega en el dispositivo es una preocupación para muchos usuarios. En Unity, el servicio Mega es un módulo funcional que opera sobre las capacidades fundamentales de EasyAR Sense. Por lo tanto, siempre que su dispositivo sea totalmente compatible con EasyAR Sense, Mega también será compatible.

Generalmente, no se recomienda comenzar verificando la compatibilidad del dispositivo con Mega ejecutando directamente el ejemplo de Mega. Esto se debe a que Mega utiliza de manera integral todos los datos de entrada y tiene una tolerancia relativamente alta a los errores en estos datos. Ejecutar el ejemplo de Mega directamente puede resultar en un rendimiento inadecuado debido a incompatibilidad de interfaz de datos o baja calidad de los mismos, dificultando identificar la causa raíz del problema y complicando futuras depuraciones.

Importante

El servicio Mega tiene ciertos requisitos sobre la capacidad de seguimiento de movimiento del dispositivo. Si esta capacidad es deficiente, el rendimiento de Mega se verá afectado. En escenarios AR de gran escala, es necesario prestar especial atención a las diferencias de rendimiento entre interiores y exteriores.

Importante

Mega generalmente sirve para escenarios de gran espacio, por lo que se debe prestar especial atención a los objetos a larga distancia y al efecto de visualización de los objetos al girar la cabeza o moverse. Si el sistema de visualización del dispositivo tiene errores significativos, incluso si Mega funciona correctamente, el usuario percibirá que los objetos virtuales no se adhieren correctamente a los objetos reales.

Conocimientos de fondo necesarios y configuración del equipo

Crear un paquete de extensión para headset no es una tarea sencilla. Requiere un trabajo profundo en múltiples áreas tanto de usted como de su equipo. Por lo general, completar una extensión de headset requiere la participación de desarrollo en Unity junto con miembros del equipo externos al desarrollo de Unity. Debido a la falta de estándares, modificar únicamente el motor 3D normalmente no basta para completar una extensión de headset; se recomienda involucrar desde el primer día a ingenieros de desarrollo de bajo nivel, como ingenieros de sistemas e ingenieros de SDK.

Desarrollar dispositivos AR/VR requiere conocimientos en dominios específicos. De manera similar, ejecutar y verificar EasyAR Sense en el dispositivo exigirá que usted o su equipo sean expertos en las siguientes áreas:

  • La estructura física y el sistema de renderizado de su dispositivo
  • Geometría del sistema de cámaras
  • Desarrollo de SDK
  • Habilidades habituales de depuración de Android, como adb (Mainland China, International)

Si está trabajando en Unity, también necesitará conocer:

Además, poseer algunos conocimientos en estas áreas le ayudará a comprender mejor el sistema, especialmente cómo enviar los datos correctos a EasyAR:

  • Desarrollo para Android (Mainland China, International)
  • Geometría visual, especialmente correspondencia de imágenes y reconstrucción 3D

Próximos pasos

En los próximos artículos, aprenderás el flujo completo para crear un paquete de extensión para head-mounted displays:

Temas relacionados