Elegir un motor 3D antes de desarrollar realidad aumentada
El primer paso en el desarrollo de AR es seleccionar un motor 3D adecuado. Este capítulo explica por qué se necesita un motor 3D, los motores 3D comunes en el desarrollo de AR y sus ventajas y desventajas.
Por qué AR necesita un motor 3D
La realidad aumentada no es simplemente superponer imágenes 2D o 3D sobre el video de la cámara. Es un sistema tridimensional en tiempo real, cuyas capacidades centrales también pueden incluir:
- Modelado de cámara real Para que los objetos virtuales renderizados parezcan más reales, es necesario ajustar la matriz de proyección de la cámara en el motor 3D utilizado para la renderización según los parámetros utilizados por la imagen real de la cámara (por ejemplo, parámetros intrínsecos y extrínsecos, modelo de distorsión, etc.).
- Gestión del sistema de coordenadas espaciales Gestionar de manera unificada la posición y orientación entre dispositivos, entorno, contenido AR, etc., encargándose de la selección, configuración y transformación entre coordenadas mundiales, coordenadas de la cámara y coordenadas del dispositivo.
- Renderizado 3D en tiempo real Lograr efectos de oclusión realistas entre objetos virtuales y el entorno según la profundidad de la escena estimada en tiempo real o mallas reconstruidas, simular sombras según algoritmos de estimación de iluminación y lograr efectos convincentes de fusión entre lo real y lo virtual.
- Gestión de recursos y ciclo de vida Gestionar recursos y contenido AR virtuales, cubriendo su carga, visualización, descarga y otro manejo del ciclo de vida.
Estas capacidades constituyen las responsabilidades centrales de un motor 3D típico. Por lo tanto, según los requisitos específicos del proyecto, elegir un motor 3D adecuado es un requisito previo necesario para lograr efectos AR rápidamente.
Motores 3D comunes
EasyAR admite múltiples motores 3D, incluidos motores comunes como Unity, Unreal o desarrollo nativo (Native). EasyAR proporciona ejemplos y documentación de desarrollo para Unity y Native.
Unity
Unity se posiciona como un motor 3D en tiempo real de propósito general y es la primera opción para la mayoría de los desarrolladores de AR en la actualidad. Unity admite de forma nativa desarrollo multiplataforma para Windows/macOS así como iOS/Android/visionOS, entre otros. El ecosistema de Unity es maduro, con documentación y ejemplos completos.
Native
En comparación con el uso de motores de alto nivel como Unity, desarrollar AR directamente sobre API gráficas nativas (como OpenGL, Vulkan, Metal) ofrece ventajas que pueden resumirse como sigue: dependencia reducida del sistema, entorno de ejecución extremadamente ligero y capacidad de personalización profunda del modelo de cámara y algoritmos de bajo nivel. Sin embargo, el desarrollo con API nativas tiene un alto costo de ingeniería y mantenimiento, carece de editores y herramientas de depuración maduros, tiene baja eficiencia de iteración, gran dificultad para la multiplataforma y no favorece la entrega rápida a nivel de producto. Suele utilizarse para implementar funcionalidades simples.
Web
Web no requiere instalación, se puede usar directamente desde el navegador, con costos de distribución y alcance extremadamente bajos. Es multiplataforma por naturaleza, adecuado para lanzamientos rápidos y acceso a gran escala de usuarios. El umbral de desarrollo es relativamente bajo y el ecosistema frontend es maduro.
Actualmente, Web en aplicaciones AR sigue siendo bastante limitado, principalmente porque el rendimiento, restringido por el navegador y el sandbox de seguridad, ofrece soporte insuficiente para capacidades centrales de AR como el seguimiento de movimiento, oclusión, iluminación precisa, etc. Además, el acceso a capacidades del dispositivo está restringido y la estabilidad y consistencia son difíciles de garantizar. Por lo tanto, Web AR es adecuado para "exhibición y marketing ligeros", no para aplicaciones AR complejas que requieran alta precisión e interacción fuerte.