Exposição de conteúdo 3D
Ao usar AR, geralmente é necessário exibir objetos virtuais. Em exemplos de teste simples, podem ser usados corpos geométricos básicos, mas ao desenvolver para consumidores, normalmente é necessário exibir modelos e animações 3D de alta precisão, podendo acionar eventos e interações ao clicar nos nós do modelo.
Modelos
Os modelos 3D populares atuais geralmente são compostos por uma malha triangular (triangle mesh). Para que o modelo pareça realista, precisamos atribuir um material (material) a cada triângulo. Os materiais geralmente implementam um modelo de iluminação específico, cujo conteúdo é composto por texturas e parâmetros do modelo de iluminação.
- As texturas (texture) determinam a cor base de cada ponto no triângulo. As texturas de todos os triângulos são colocadas em um ou mais mapas de difusão. Em usos avançados, as texturas também podem representar a direção da normal ou outros parâmetros em cada ponto.
- O modelo de iluminação (lighting model) define como o objeto interage com a luz, sendo comum o PBR. Os modelos de iluminação geralmente são implementados usando shaders. Os parâmetros do modelo de iluminação PBR incluem cor, metalicidade, rugosidade, etc.
No desenvolvimento de aplicativos, geralmente não se carrega modelos 3D diretamente no OpenGL / Metal / Vulkan / Direct3D, mas sim em um motor 3D para fazer o carregamento. O motor 3D exigirá o uso de formatos específicos de modelos 3D, como o formato obj/mtl, histórico e mais legível, ou o formato glTF, atualmente mais popular.
Animação
Para colocar o modelo em movimento, é necessária a animação esquelética. Ossos (bones) referem-se a grandes nós do modelo 3D que se movem consistentemente como um corpo rígido.
Exibir animação requer a atualização contínua em tempo de execução da posição e orientação (matriz de transformação) dos nós do modelo. A maioria dos motores 3D fornece funcionalidade de animação. Basta editar a animação em um software de criação de animação e exportá-la em um formato suportado pelo motor 3D para usá-lo. O formato glTF mencionado também inclui recursos de animação.
Interação
Quando o usuário clica em um nó do modelo, às vezes é necessário acionar eventos e interações. Geralmente, os ossos (bones) da animação esquelética são nomeados, e a detecção de colisão ou ray-casting é usada para, ao clicar, acionar um evento e retornar o nome do osso clicado. O tratamento do evento pode ser feito usando scripts ou código de aplicativo.
Nota
Se você não tem experiência com motores 3D, é altamente recomendável considerar usar o Unity para desenvolver seu aplicativo. O EasyAR Sense Unity Plugin oferece bom suporte para o Unity. Se você usar outros motores 3D, pode enfrentar problemas de suporte e recursos disponíveis limitados.