Hacer que el headset sea compatible con EasyAR
Este artículo explica cómo usar la plantilla del paquete de extensión para headsets de EasyAR Sense Unity Plugin para desarrollar un paquete de extensión de EasyAR compatible con dispositivos tipo headset.
Antes de empezar
Antes de entrar en el desarrollo, es necesario entender primero cómo usar EasyAR Sense Unity Plugin.
- Inicio rápido
- Ejecuta el ejemplo de AR Session, el ejemplo de seguimiento de imágenes ImageTracking_Targets y el ejemplo de mapa espacial denso SpatialMap_Dense_BallGame; su comportamiento en teléfonos y en headsets es similar.
El desarrollo del plugin para headset implicará funciones básicas, por lo que conviene conocer primero estos temas:
- Conocer AR Session
- Conocer fuente de fotogramas y fuente de fotogramas externa
Además, también es necesario estar familiarizado con cómo desarrollar un paquete de Unity.
Preparar el dispositivo para AR/MR
Preparar el sistema de seguimiento de movimiento/VIO
Asegúrate de que el error de seguimiento del dispositivo esté controlado. Algunas funciones de EasyAR, como Mega, pueden reducir en cierta medida el error acumulado del dispositivo, pero un gran error local también hará que los algoritmos de EasyAR sean inestables. En general, esperamos que la deriva de VIO esté dentro del 1‰.
Preparar el sistema de visualización
Asegúrate de que cuando un objeto virtual con el mismo tamaño y contorno que un objeto real se coloca en el mundo virtual, y la relación de transformación relativa entre él y la cámara virtual es la misma que la relación de transformación entre el objeto real correspondiente y el dispositivo en el mundo real, el objeto virtual pueda mostrarse alineado sobre el objeto real y que mover el dispositivo o girar la cabeza no rompa el resultado visual. Puedes tomar como referencia el efecto de Vision Pro.
Preparar el SDK del dispositivo
Asegúrate de que ya exista una API que pueda proporcionar datos de fotogramas de entrada externos. Estos datos deben generarse a partir de dos y solo dos instantes de tiempo dentro del sistema, y hay que garantizar que no aparezcan situaciones en las que los datos no puedan alinearse.
Usar la plantilla del paquete de extensión para headset
Importa EasyAR Sense Unity Plugin (paquete com.easyar.sense) a través de la ventana Package Manager de Unity, usando instalación desde un archivo tarball local. Descomprime la plantilla de extensión para headset (paquete com.easyar.sense.ext.hmdtemplate) en el directorio Packages del proyecto de Unity y renombra la carpeta Samples~ a Samples.
En ese momento deberías ver una estructura de directorios como esta:
.
├── Assets
└── Packages
└── com.easyar.sense.ext.hmdtemplate
├── CHANGELOG.md
├── Documentation~
├── Editor
├── LICENSE.md
├── package.json
├── Runtime
└── Samples
└── Combination_BasedOn_HMD
Consejo
Si hace falta, puedes usar cualquier método permitido por Unity para importar EasyAR Sense Unity Plugin y alojar la plantilla de extensión para headset.
Si no usas la plantilla, también puedes consultar la guía de Unity para crear paquetes personalizados para crear un nuevo paquete.
Si el SDK del dispositivo no está organizado como un paquete de Unity, debes descomprimir la plantilla de extensión para headset en la carpeta Assets del proyecto de Unity y, después, eliminar del contenido descomprimido el archivo package.json y cualquier archivo con sufijo .asmdef. Ten en cuenta que, en este modo de uso, los usuarios que combinen el SDK del dispositivo con EasyAR no podrán obtener una dependencia de versión razonable.
Completar la extensión de entrada en tiempo de ejecución
Siguiendo el método de crear una extensión de entrada para datos de movimiento de dispositivo e imagen, modifica Runtime/HMDTemplateFrameSource.cs y completa la extensión de entrada para headset. Este es el trabajo de desarrollo principal del paquete de extensión.
Completar el menú del editor
Modifica la cadena "HMD Template" de la clase MenuItems por el nombre del dispositivo. Si necesitas otras funciones personalizadas del editor, también puedes añadir otros scripts.
Cuando el desarrollador selecciona AR Session (EasyAR) en la vista Hierarchy y hace clic con el botón derecho, aparecerán estos elementos de menú:
EasyAR Sense>Extensions>Frame Source : [Device Name]: añade una fuente de fotogramas de ese dispositivo a la sesión actual.EasyAR Sense>Extensions>Frame Source : [Device Name (keep it only)]: añade una fuente de fotogramas de ese dispositivo a la sesión actual y deja solo una.

Completar el ejemplo de aplicación
El ejemplo se encuentra en Samples/Combination_BasedOn_HMD. Para simplificar, la plantilla de ejemplo no incluye código; todas las funciones de AR se pueden completar solo con el contenido de la escena y la configuración.
Añade a la escena contenido que admita la ejecución en el dispositivo.
Consejo
Si hace falta, también puedes hacerlo al revés: usar una escena que pueda ejecutarse en el dispositivo y luego añadir los componentes de EasyAR y otros objetos del ejemplo a la escena.
Modifica los objetos diseñados para colocarse debajo del origen de la sesión.
Si la escena define un origen de sesión, mueve
EasyARPandayUIdebajo del nodo de origen.
EasyARPandaproporcionará una referencia del comportamiento de seguimiento del movimiento del dispositivo, lo que ayuda a identificar la causa cuando el seguimiento es inestable.El texto entre paréntesis en el nombre de estos objetos es una pista para el desarrollador de la extensión y puede eliminarse:
(Move into Origin if there is any)(Move into Origin if there is any, set constraint source to your rendering camera)
Configura el comportamiento del botón
HUD.Establece la constraint source de
UIcomo la cámara virtual para asegurar que los botones delHUDfuncionen como se espera.
Configura la función de raycast de
Canvas.Modifica el
Canvasbajo el nodoUIpara asegurarte de que el raycast funcione y de que todos los botones y conmutadores de la UI funcionen como se espera.La plantilla ya añade previamente en el nodo
Canvasel Tracked Device Graphic Raycaster del XR Interaction Toolkit; después de importar el paquete correspondiente podrás verlo.
Si al ejecutar en el dispositivo no usas XR Interaction Toolkit, verás un aviso similar al siguiente sobre un script faltante; puedes eliminarlo y añadir el componente raycaster que necesite el dispositivo.

Siguientes pasos
- Antes de terminar de completar el paquete de extensión, primero debes ejecutar la verificación de arranque (bring-up) de la extensión de entrada
- Una vez completado todo, puedes preparar la publicación del paquete de extensión