Table of Contents

Paquete de extensión de headset de EasyAR Unity

Este documento presenta los conceptos del paquete de extension de headset de EasyAR Unity, sus limites de capacidad y los conocimientos previos necesarios para crear un paquete de extension de headset.

Antes de empezar

Que es el paquete de extension de headset de EasyAR Unity

El paquete de extension de headset de EasyAR Unity es un Unity package que contiene una serie de codigo y ejemplos para ayudarle a usar las funciones de EasyAR Sense en su dispositivo headset. Mediante este paquete de extension, puede integrar la mayoria de las funciones de EasyAR Sense, como seguimiento de imagen y mapa espacial denso, en su dispositivo, y asi aprovechar las potentes funciones AR proporcionadas por EasyAR.

Usar el paquete de extension de headset de EasyAR Unity es una de las formas de compatibilidad de EasyAR con headsets. La figura siguiente muestra la arquitectura general de EasyAR en Unity y la posicion del paquete de extension de headset 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

La figura muestra dos formas tipicas de compatibilidad con headsets: integrar el SDK del dispositivo mediante el paquete de extension de headset de Unity (Device A), e integrar directamente el SDK del dispositivo en la biblioteca EasyAR Sense (Device B). Este documento presenta principalmente la primera.

Puedo crear mi propio paquete de extension de headset

Actualmente, la industria AR/VR/MR/XR aun no ha formado una solucion de interfaz muy unificada. Aunque OpenXR es un buen candidato, la evolucion de la especificacion y las implementaciones de la industria aun necesitan tiempo. Por eso, en general, no es tan facil ejecutar EasyAR directamente en dispositivos comerciales, y es muy probable que falten interfaces de datos. Con el desarrollo de la industria, algunos dispositivos emergentes tambien pueden contar con buen soporte de interfaces. Por ejemplo, en 2024 Apple abrio interfaces relacionadas con Vision Pro, suficientes para admitir la ejecucion de EasyAR, aunque su uso aun requiere conocimientos profesionales.

Si no puede hacer una valoracion, se recomienda contactar con el fabricante de hardware o con el equipo comercial de EasyAR para obtener el soporte de dispositivo correspondiente.

Si usted es fabricante de hardware y desea admitir las funciones de EasyAR en su dispositivo, puede consultar los documentos siguientes para crear un paquete de extension de headset y permitir que la mayoria de las funciones de EasyAR se ejecuten en su dispositivo. Aunque este documento proporciona especificaciones de datos e interfaces, no limita todos los detalles de implementacion. Cualquier metodo de implementacion o definicion de interfaz se puede discutir; le invitamos a comunicarse por canales comerciales.

El hardware cubierto por este documento debe tener capacidades propias de seguimiento de movimiento o SLAM. Las funciones de EasyAR deben ejecutarse sobre una buena capacidad de seguimiento del dispositivo. Normalmente no se recomienda depender de las funciones de EasyAR para optimizar el seguimiento del dispositivo, porque esto crea una dependencia circular que teoricamente amplifica el error y hace que el sistema global tienda a la inestabilidad. Si el dispositivo no tiene capacidad de seguimiento de movimiento, la solucion de soporte no entra en el alcance de este documento; si es necesario, puede comunicarse por canales comerciales.

Limites de capacidad del paquete de extension de headset

El objetivo del paquete de extension de headset es permitir que la mayoria de las funciones de EasyAR Sense se ejecuten en su dispositivo. Para lograrlo, debe conocer los limites de capacidad del paquete de extension de headset.

Contenido incluido en el paquete de extension de headset

La extension que implementara es:

  • Una serie de codigo que usa la funcion de camara personalizada para capturar datos desde la API de su dispositivo y enviarlos a EasyAR Sense.
  • En Unity, la extension de headset usa la fuente de datos de fotogramas externa y un conjunto de flujo de datos de EasyAR Sense definido por EasyAR Sense Unity Plugin para simplificar el desarrollo de camara personalizada.
  • En Unity, la extension de headset es un Unity package que contiene scripts de runtime, scripts de editor y samples de la extension. Usted o EasyAR pueden distribuirlo a usuarios posteriores.
Consejo

Si no desea exponer los detalles de integracion en sistemas externos, puede contactar con EasyAR para hablarlo. Es viable y hay precedentes de integracion directa mediante interfaz C dentro de EasyAR Sense.

Al implementar la extension, puede que deba:

  • Modificar el diseno de interfaz y la implementacion interna de su SDK.
  • Debatir y confirmar con su equipo la solucion de obtencion y uso de datos.
  • Dedicar mucho tiempo a verificar la correccion de los datos, mas que a escribir codigo.

Despues de completar la extension, vera que:

  • La mayoria de las funciones de EasyAR Sense pueden usarse en su dispositivo, aprovechando la capacidad de seguimiento de movimiento de su dispositivo.
  • Los servicios en la nube de EasyAR admitidos por EasyAR Sense pueden usarse en su dispositivo.
  • Solo se puede usar la license EasyAR XR. Las license personal, profesional y clasica no pueden usarse en su dispositivo.
  • Todas las restricciones de las license de EasyAR al usar camara personalizada se aplican de la misma forma a su dispositivo.

Contenido no incluido en el paquete de extension de headset

Esta extension no puede usarse separada de EasyAR Sense:

  • Esta extension de headset no se ejecuta de forma independiente. Como dependencia, EasyAR Sense tambien es necesario. En Unity, debe usarse EasyAR Sense Unity Plugin.
  • No llama directamente a las API de servicios en la nube de EasyAR, como el servicio de localizacion EasyAR Mega. Estas llamadas se completan dentro de EasyAR Sense.
  • En Unity, no llama directamente a metodos de interfaz de funciones AR, como seguimiento de imagen. Estos se completan dentro de EasyAR Sense Unity Plugin.
  • En Unity, no modifica el transform de objetos de la escena ni de targets de seguimiento. Estos se completan dentro de EasyAR Sense Unity Plugin.

Esta extension no puede usarse separada del SDK de su dispositivo:

  • En Unity, la extension de headset o EasyAR Sense Unity Plugin no modifican el transform de la camara en la escena. Esto debe completarse en el SDK de su dispositivo o en su ruta de dependencias.

Hay algunas funciones de EasyAR que siguen sin poder usarse mediante la extension de headset:

  • La funcion de seguimiento de superficie no estara disponible.
  • El seguimiento de movimiento propio de EasyAR no estara disponible.
  • La deteccion de planos, que forma parte del seguimiento de movimiento de EasyAR, no estara disponible.

Como usar Mega en mi dispositivo

Ejecutar Mega en un dispositivo es una preocupacion de muchos usuarios. En Unity, el servicio Mega es un modulo funcional que se ejecuta sobre muchas funciones basicas de EasyAR Sense, por lo que siempre que su dispositivo admita completamente EasyAR Sense, Mega tambien estara admitido.

En general, no se recomienda ejecutar directamente el ejemplo de Mega en el dispositivo al principio para verificar la compatibilidad del dispositivo con Mega, porque Mega usa de forma integral todos los datos de entrada y tolera bastante error en esos datos. Ejecutar directamente el ejemplo de Mega probablemente provocara resultados poco razonables por desajustes de interfaz de datos o baja calidad de datos, y no permitira determinar donde esta el problema, lo que dificultara mucho la depuracion posterior.

Importante

El servicio Mega tiene ciertos requisitos para la capacidad de seguimiento de movimiento del dispositivo. Si la capacidad de seguimiento de movimiento del dispositivo no es buena, el rendimiento de Mega tambien se vera afectado. En escenas AR de gran escala, tambien debe prestarse especial atencion a las diferencias entre interior y exterior.

Importante

Mega suele servir a escenas de gran espacio, por lo que debe prestarse especial atencion al efecto de visualizacion de objetos lejanos y de objetos al girar la cabeza o moverse. Si el error del sistema de visualizacion del dispositivo es grande, aunque Mega funcione correctamente, el usuario sentira que los objetos virtuales no encajan correctamente con los objetos reales.

Conocimientos previos y configuracion del equipo

Crear un paquete de extension de headset no es una tarea sencilla y requiere que usted y su equipo trabajen en profundidad en varios campos. En general, para completar una extension de headset, ademas de la participacion de desarrolladores Unity, se necesita invertir personal del equipo ajeno al desarrollo Unity. Debido a la falta de estandares, normalmente no basta con modificar solo sobre el motor 3D para completar una extension de headset. Se recomienda involucrar desde el primer dia a ingenieros de sistemas, ingenieros SDK y otros desarrolladores de bajo nivel.

Crear dispositivos AR/VR requiere conocimientos de dominio. De forma similar, ejecutar y verificar EasyAR Sense en un dispositivo requerira que usted o su equipo sean expertos en los campos siguientes:

  • Estructura fisica y sistema de renderizado de su dispositivo
  • Geometria del sistema de camara
  • Desarrollo SDK
  • Habilidades generales de debug en Android, como adb (China continental, internacional)

Si trabaja en Unity, tambien debe conocer:

Ademas, ciertos conocimientos en estos campos le ayudaran a comprender mejor el sistema, especialmente como enviar datos correctos a EasyAR:

Pasos siguientes

En los articulos siguientes conocera el proceso completo de creacion de un paquete de extension de headset:

Temas relacionados