Visualización de contenido en espacio 3D
Al usar AR, a menudo es necesario mostrar objetos virtuales. En ejemplos de prueba simples, se pueden usar formas geométricas básicas, pero al desarrollar para consumidores, generalmente se requiere mostrar modelos 3D de alta precisión y animaciones, y posiblemente activar eventos e interacciones al hacer clic en los nodos del modelo.
Modelos
Los modelos 3D populares actualmente generalmente consisten en una malla de triángulos (triangle mesh). Para que un modelo parezca realista, necesitamos asignar un material (material) a cada triángulo. Los materiales suelen implementar algún modelo de iluminación (lighting model), y su contenido está compuesto por texturas y parámetros del modelo de iluminación.
- Las texturas (texture) determinan el color base de cada punto en el triángulo. Las texturas de todos los triángulos se colocan en uno o más mapas de textura difusa (diffuse maps). En usos avanzados, también se pueden usar texturas para representar la dirección normal u otros parámetros en cada punto.
- El modelo de iluminación (lighting model) define cómo interactúa el objeto con la luz, siendo PBR uno común. Los modelos de iluminación generalmente se implementan usando shaders. Los parámetros del modelo de iluminación PBR incluyen color, metalicidad (metallic), rugosidad (roughness), etc.
En el desarrollo de aplicaciones, generalmente no se cargan modelos 3D directamente en OpenGL / Metal / Vulkan / Direct3D, sino que se utiliza un motor 3D para cargarlos. Los motores 3D requieren el uso de formatos específicos de modelos 3D, como el antiguo y legible formato obj/mtl, y el formato glTF, que es muy popular actualmente.
Animación
Para animar modelos, se utiliza animación esquelética (skeletal animation). Los huesos (bones) se refieren a nodos grandes del modelo 3D que mantienen un movimiento consistente durante movimientos de cuerpo rígido.
Para mostrar animación, es necesario actualizar constantemente la posición y orientación (matriz de transformación) de los nodos del modelo en tiempo de ejecución. La mayoría de los motores 3D proporcionan funciones de animación; solo es necesario editar la animación en un software de creación de animaciones y exportarla en un formato compatible con el motor 3D para usarla. El formato glTF mencionado anteriormente también incluye capacidades de animación.
Interacción
Cuando un usuario hace clic en un nodo del modelo, a veces es necesario activar eventos e interacciones. Generalmente, se nombran los huesos en la animación esquelética y se utilizan detección de colisiones (collision detection) o detección por rayos (raycasting) para activar eventos al hacer clic, devolviendo el nombre del hueso seleccionado. El manejo de eventos se puede realizar mediante scripts o código de aplicación.
Nota
Si le falta experiencia en el uso de motores 3D, le recomendamos encarecidamente que considere usar Unity para desarrollar su aplicación. EasyAR Sense Unity Plugin tiene un buen soporte para Unity. Si utiliza otro motor 3D, podría enfrentar problemas de soporte y menos recursos disponibles.