Table of Contents

Visualización de contenido espacial 3D

Al usar AR, normalmente es necesario mostrar objetos virtuales. En sample de prueba simples se pueden usar geometrías sencillas, pero al desarrollar para consumidores generalmente se deben mostrar modelos 3D y animaciones de alta precisión, y puede que se activen eventos e interacciones al hacer clic en nodos del modelo.

Modelos

Los modelos 3D populares actualmente suelen estar compuestos por triangle mesh. Para que el modelo se vea realista, debemos asignar material a cada triángulo. Un material suele implementar algún lighting model, y su contenido se compone de texture y parámetros del lighting model.

  • Texture determina el color base de cada punto de un triángulo. Las texture de todos los triángulos se colocan en una o varias diffuse texture. En algunos usos avanzados, texture también puede usarse para representar la dirección normal u otros parámetros de cada punto.
  • Lighting model define cómo interactúa un objeto con la luz. Un ejemplo común es PBR. Lighting model suele implementarse con shader. Los parámetros de un PBR lighting model incluyen color, metallic, roughness, etc.

En el desarrollo de aplicaciones, los modelos 3D normalmente no se cargan directamente sobre OpenGL / Metal / Vulkan / Direct3D, sino que se cargan con un 3D engine. Un 3D engine requiere algunos formatos específicos de modelo 3D, como el formato obj / mtl, de larga historia y relativamente legible, y el formato glTF, actualmente popular.

Animación

Para que el modelo se mueva, se necesita skeletal animation. Bones se refiere a grandes nodos del modelo 3D que mantienen un movimiento coherente durante el movimiento rigid-body.

Para mostrar animación, se debe actualizar continuamente en runtime la posición y pose (transformation matrix) de los nodos del modelo. La mayoría de los 3D engine ofrecen funciones de animación. Solo hay que editar la animación en software de creación de animaciones y exportarla en un formato compatible con el 3D engine para poder usarla allí. El formato glTF mencionado también incluye funciones de animación.

Interacción

Cuando el usuario hace clic en un nodo del modelo, a veces se deben activar eventos e interacciones. Normalmente se nombran los bones en skeletal animation y se usa collision detection o ray detection para activar eventos al hacer clic y devolver el nombre del bone clicado. El manejo de eventos puede realizarse con scripts o código de aplicación.

Nota

Si carece de experiencia usando 3D engine, se recomienda encarecidamente considerar Unity para desarrollar la aplicación. EasyAR Sense Unity Plugin ofrece buen soporte para Unity. Si usa otros 3D engine, puede enfrentarse a menor soporte y menos recursos disponibles.