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
- Lea Compatibilidad de EasyAR con headsets para conocer los tipos de headsets ya admitidos por EasyAR y las funciones de EasyAR que pueden ejecutarse en headsets.
- Lea Compatibilidad de EasyAR con headsets en Unity para conocer la arquitectura general de la compatibilidad de EasyAR con headsets en Unity.
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> Library "]
space
space
DeviceB["Device B<br> Library "]
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 Sensedefinido porEasyAR Sense Unity Pluginpara 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 Sensepueden usarse en su dispositivo, aprovechando la capacidad de seguimiento de movimiento de su dispositivo. - Los servicios en la nube de EasyAR admitidos por
EasyAR Sensepueden 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 Sensetambien es necesario. En Unity, debe usarseEasyAR 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 Pluginno 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:
- Fundamentos de desarrollo Unity y uso de packages
- Desarrollo de Unity package
- Fundamentos del lenguaje C#, incluido IDisposable
Ademas, ciertos conocimientos en estos campos le ayudaran a comprender mejor el sistema, especialmente como enviar datos correctos a EasyAR:
- Desarrollo Android (China continental, internacional)
- Vision geometrica, especialmente correspondencia de imagenes y reconstruccion 3D
Pasos siguientes
En los articulos siguientes conocera el proceso completo de creacion de un paquete de extension de headset:
- Hacer que un headset admita EasyAR presenta como usar la plantilla para crear un nuevo paquete de extension de headset y completar el desarrollo basico de la extension de entrada
- Validacion de ejecucion (bring-up) presenta como verificar la correccion de la extension de entrada en el dispositivo
- Publicar el paquete de extension presenta como empaquetar y distribuir el paquete de extension de headset a usuarios posteriores