Ejecución de la verificación de la extensión del visor montado en cabeza
La parte más crítica y también la más desafiante para hacer funcionar EasyAR en un dispositivo es garantizar la corrección de los datos de entrada. Cuando se ejecuta EasyAR por primera vez en un dispositivo nuevo, más del 90% de los problemas son causados por datos incorrectos.
Si es posible, se recomienda verificar directamente la corrección de los datos utilizando algunos métodos de prueba solo con el dispositivo y sus interfaces, sin la presencia de EasyAR. Este documento presenta algunos métodos empíricos utilizando las funciones de EasyAR para verificar datos. Este proceso puede ayudar a comprender los datos de fotograma de entrada externa, pero debido a que EasyAR en sí también introduce errores, usar este sistema acoplado para verificar la corrección de los datos no es la opción óptima.
Antes de comenzar
- Completa el desarrollo de Hacer que el visor admita EasyAR.
- Lee Inicio rápido para aprender a usar EasyAR Sense Unity Plugin.
- Aprende cómo usar ejemplos de visores.
- Comprende la configuración de proyecto Android.
Ejecutar ejemplos de funciones básicas
Al ejecutar EasyAR por primera vez en un dispositivo, es necesario asegurarse de ejecutar estas funciones en orden, especialmente sin apresurarse a ejecutar Mega, ya que Mega tiene cierta tolerancia a fallos, y los problemas pueden ser difíciles de detectar cuando se ejecuta durante períodos cortos o en escenarios de realidad única.
Observa la información de sesión mostrada frente a ti, asegúrate de que no ocurra nada inesperado y verifica que el recuento de frames aumente continuamente.
Ejecuta
Image, es decir, la función de seguimiento de imágenes, y compara su rendimiento con el de un teléfono móvil (se recomienda usar un iPhone como estándar). Presta atención al estado del seguimiento y a la visualización de la cobertura del objetivo.Cuando la fusión de movimiento no está activada, el seguimiento de imágenes tendrá una sensación de retraso notable, lo cual es esperado. Lo importante es que el movimiento sea correcto y que la posición se alinee cuando el dispositivo se detenga.
Ejecuta
Dense, es decir, la función de mapa espacial denso, y compara su rendimiento con el de un teléfono móvil (se recomienda usar un iPhone como estándar). Presta atención a la posición de la malla, la velocidad de generación y la calidad.Si la tasa de frames de los datos de entrada es baja, la velocidad de generación de la malla disminuirá, pero la calidad no se verá significativamente afectada.
Esta función no puede ejecutarse en algunos dispositivos Android, y la calidad de la malla también variará según el dispositivo.
Importante
La extensión de entrada utilizada por el paquete de extensión para visores es una implementación de cámara personalizada.
Al usar productos de prueba (licencia personal, licencia XR de prueba o servicio Mega de prueba, etc.) en cámaras personalizadas o dispositivos de visualización, EasyAR Sense dejará de responder después de 100 segundos (los usuarios de Mega pueden ajustar la duración después de la aprobación a través del equipo comercial de EasyAR) cada vez que se inicie. No existe esta limitación al usar versiones pagadas de EasyAR Sense y el servicio EasyAR Mega pagado.
Si Image y Dense funcionan igual o mejor que en un teléfono móvil, entonces la mayoría de las funciones de EasyAR deberían funcionar correctamente en el dispositivo, y puedes comenzar a probar Mega.
Solución de problemas en ejecución: descomposición del problema
Si no puedes reproducir los mismos resultados que en el teléfono, aquí tienes un proceso detallado de descomposición del problema que puedes seguir para encontrar la causa raíz. Se recomienda monitorear siempre la salida de los system logs.
Paso cero: Comprender los errores del sistema del dispositivo de visualización
¿Recuerdas los requisitos de seguimiento de movimiento y visualización descritos en Preparar el dispositivo para AR/MR?
Importante
Los errores de seguimiento de movimiento/VIO siempre afectarán la estabilidad de los algoritmos de EasyAR de diferentes maneras.
Importante
Los errores del sistema de visualización pueden hacer que los objetos virtuales y los objetos reales no se alineen perfectamente.
En algunos casos con errores significativos, los objetos virtuales pueden parecer flotar por encima o por debajo de los objetos reales, y luego parecer "derivar" constantemente. Este fenómeno se puede observar en el Pico 4E, incluso sin usar EasyAR y solo abriendo su propia VST.
Paso 1: Verificar el estado de funcionamiento de la sesión
Mensajes de la interfaz de usuario Las funciones o datos necesarios para que el estado de la sesión se muestre como normal:
- La
Disponibilidaddel ExternalFrameSource- La
Cámara virtualdel ExternalFrameSource
Si no puedes ver la información del estado de la sesión, intenta cambiar la opción a Log y luego lee el estado de la sesión y el nombre de la fuente de fotogramas que se está utilizando en los registros del sistema.
Puedes intentar eliminar todos los demás frame sources bajo el nodo ARSession y luego ver si hay algún cambio.
Paso dos: confirmar el recuento de fotogramas de cámara recibidos por EasyAR
Funcionalidades o datos que deben funcionar correctamente:
- La ruta de los
datos de fotogramas de cámaradesde ExternalFrameSource en la capa de código de Unity (excluyendo la corrección de los datos y la ruta de datos hacia la capa nativa)
Este valor debería aumentar con el tiempo; de lo contrario, se mostrará un mensaje de advertencia después de unos segundos.
Si se descubre que este número no aumenta, debe solucionarse primero.
Paso 3: Grabar EIF en el dispositivo y luego reproducirlo en el editor de Unity
Funciones o datos que deben funcionar correctamente:
- La ruta de entrada de
datos de fotograma de cámarade ExternalFrameSource a la capa nativa (sin incluir la corrección de los datos)raw camera image dataen losdatos de fotograma de cámaratimestampen losdatos de fotograma de cámara(no incluye puntos de tiempo ni sincronización de datos)
Haga clic en EIF para comenzar la grabación. Haga clic de nuevo para detenerla.
Consejo
Debe detener la grabación correctamente para obtener un archivo EIF indexable aleatoriamente.
Es mejor usar una escena limpia de EasyAR o los ejemplos de EasyAR al reproducir datos EIF en el editor de Unity, para evitar configuraciones incorrectas en la escena.
Puede ver la reproducción de los datos de fotograma de cámara en el editor de Unity. Los datos de imagen no son de igualdad de bytes; existe codificación con pérdidas en todo el flujo.
EasyAR utiliza parámetros de distorsión en los cálculos pero no aplica corrección de distorsión a la imagen al mostrarla. Por lo tanto, si se introducen estos datos, al reproducir un archivo EIF en Unity, se observarán datos sin corrección de distorsión, lo cual es esperado.
Consejo
Modifique la relación de aspecto de la ventana del juego de Unity para que coincida con la entrada; de lo contrario, los datos se recortarán al mostrarse.
Si la reproducción de datos es demasiado rápida o lenta, es necesario verificar la entrada de timestamp.
Nota
Puede hacer muchas cosas con EIF; puede ejecutar seguimiento de imágenes y mapa espacial denso en el editor de Unity usando EIF. Tenga en cuenta que el efecto visual durante la ejecución en el dispositivo podría ser diferente.
Paso cuatro: Ejecutar seguimiento de imágenes con eif
Funciones o datos obligatorios:
raw camera image dataendatos de fotograma de cámaraintrinsicsendatos de fotograma de cámara(la precisión no está totalmente garantizada, ya que el algoritmo tolera cierto margen de error)
Para ejecutar el ejemplo ImageTracking_Targets con eif en el editor de Unity, es necesario grabar un eif donde la imagen sea detectable.
Nota
El seguimiento de imágenes requiere que el objetivo ocupe una proporción significativa de la imagen. Si no se detecta, intenta acercar el dispositivo al objetivo.
Si el seguimiento falla repetidamente o los objetos virtuales aparecen lejos del objetivo en la imagen, es probable que existan problemas con los intrinsics.
Si los datos de imagen presentan distorsión, es posible que los objetos virtuales no cubran perfectamente el objetivo de seguimiento. Esto es normal. El efecto es más notable cuando el objetivo está cerca del borde de la imagen.
Paso 5: Ejecutar el seguimiento de imágenes en el dispositivo
Funcionalidades o datos que deben funcionar correctamente:
- El sistema de visualización propio del dispositivo
raw camera image dataen losdatos del fotograma de la cámaraintrinsicsen losdatos del fotograma de la cámara(la precisión absoluta no está garantizada, ya que el algoritmo tolera cierto margen de error)extrinsicsen losdatos del fotograma de la cámara- Consistencia de coordenadas del
device poseentre losdatos del fotograma de la cámaray losdatos del fotograma de renderizado- Diferencia de tiempo del
device poseentre losdatos del fotograma de la cámaray losdatos del fotograma de renderizado
Nota
El seguimiento de imágenes requiere que el objetivo ocupe una proporción significativa de la imagen completa. Si no se puede rastrear la imagen, intenta acercar la cabeza a la misma.
El seguimiento de imágenes requiere que la longitud horizontal de la imagen coincida con el tamaño del objeto en el mundo real. En el ejemplo, se necesita rastrear una imagen cuya longitud horizontal llene el lado largo de una hoja A4 en orientación horizontal. Por lo tanto, no rastreéis imágenes mostradas en la pantalla de un ordenador a menos que uséis una regla y ajustéis la longitud horizontal de la imagen al tamaño A4 según esta.
Si el seguimiento de imágenes es perfecto usando el EIF pero difiere en el dispositivo, es necesario resolver esto antes de continuar con otras pruebas. Solucionar problemas en pasos posteriores es mucho más difícil.
Si el objeto virtual aparece flotando lejos del objeto real, incluso cuando la persona permanece inmóvil, es muy probable que los intrinsics o extrinsics sean incorrectos, o que el device pose en los datos del fotograma de la cámara y los datos del fotograma de renderizado no estén en el mismo sistema de coordenadas, o que el sistema de visualización haya introducido este error.
Si el objeto virtual se mueve continuamente al mover la cabeza y parece tener retraso, existe una alta probabilidad de que el device pose no sea saludable. Esto ocurre frecuentemente en varios casos (sin excluir la posibilidad de otros problemas):
- Los datos del
device posey losraw camera image datano están sincronizados en el tiempo. - Se utilizó la misma pose en los
datos del fotograma de la cámaray losdatos del fotograma de renderizado.
Paso 6: Usar EIF y ejecutar el mapa espacial denso en el dispositivo
Funcionalidades o datos que deben funcionar correctamente:
- El propio sistema de visualización del dispositivo
raw camera image dataen losdatos del fotograma de la cámaraintrinsicsen losdatos del fotograma de la cámara(la precisión de los datos no está completamente garantizada, ya que el algoritmo tiene cierta tolerancia a errores)extrinsicsen losdatos del fotograma de la cámaradevice poseen losdatos del fotograma de la cámara
Si la generación de la malla es extremadamente lenta y/o la reconstrucción del suelo está irregular con baches, es muy probable que haya un problema con el device pose. También es posible que el sistema de coordenadas de la pose sea incorrecto o que el momento temporal de la pose no sea el correcto.
Consejo
Si la frecuencia de fotogramas de entrada es baja, la generación de la malla también será más lenta, pero la calidad no se degradará notablemente. Este comportamiento es esperado.
Normalmente no es muy fácil discernir la posición exacta de la malla, por lo que los errores del sistema de visualización pueden no ser observables cuando se usa el mapa espacial denso.
Ejecuta el ejemplo de mega
Lee lo siguiente para aprender cómo usar Mega en Unity. Si aún no tienes acceso al servicio Mega, contacta al equipo comercial de EasyAR para obtener una prueba.
- Introducción a easyar mega
- ¿Está disponible mi biblioteca de localización?
- Usa los ejemplos de easyar mega unity para empezar rápido
Luego ejecuta Mega en el dispositivo y compara los resultados con los de un teléfono móvil (se recomienda iphone como referencia). Presta atención a:
- Si los objetos se muestran en la posición correcta
- Si objetos distantes (a 10 m o más) se muestran con posición y tamaño correctos
- Si objetos fuera del centro visual muestran posición y tamaño correctos
- Si al girar la cabeza los objetos mantienen posición y tamaño correctos
Solución de problemas en funcionamiento
Funciones o datos que deben operar correctamente:
- Sistema de visualización propio del dispositivo
- Todos los datos en
datos de fotograma de cámaraydatos de fotograma de renderizado
Tras completar la verificación de las funciones de seguimiento de imágenes y mapa espacial denso, teóricamente EasyAR Mega debería estar soportado. Si el rendimiento en el visor es notablemente peor que en el móvil, preste atención a lo siguiente:
- Revise los datos de
poseytimestampendatos de fotograma de cámaraydatos de fotograma de renderizado - Supervise la salida del sistema de seguimiento de movimiento/VIO. El panda debajo de
XR Originserá una buena referencia
Además, es crucial centrarse en el sistema de visualización propio del dispositivo, especialmente en la representación de objetos a distancia, fuera del centro de visión o al girar la cabeza. Estos escenarios suelen pasarse por alto en las pruebas internas, pero los problemas generalmente siguen originándose en el sistema de visualización del propio dispositivo. Debe comunicar estos problemas y sus posibles impactos a EasyAR, estableciendo expectativas realistas para los desarrolladores.
Importante
Los usuarios prestarán mucha atención a estos problemas de visualización, y muchos dispositivos no pueden ofrecer una visualización perfecta en entornos de gran escala. EasyAR no puede solucionar problemas inherentes al sistema de visualización del dispositivo; esto requiere iteraciones por parte del fabricante. Mientras tanto, los usuarios deberán entender estas limitaciones.
Próximos pasos
Temas relacionados
Ejemplos que pueden ejecutarse en teléfonos móviles:
- Ejemplo de seguimiento de imágenes ImageTracking_Targets, permite comprender el rendimiento esperado de la función Seguimiento de imágenes
- Ejemplo de mapa espacial denso SpatialMap_Dense_BallGame, permite comprender el rendimiento esperado de la función Mapa del espacio denso
- Ejemplo de fusión de movimiento ImageTracking_MotionFusion, permite comprender el rendimiento esperado de la función Fusión deportiva
- Ejemplo Mega MegaBlock_Basic, permite comprender el rendimiento esperado de la función Mega