Table of Contents

Escolher um engine 3D antes do desenvolvimento de realidade aumentada

O primeiro passo no desenvolvimento AR é escolher um engine 3D adequado. Este capítulo explica por que um engine 3D é necessário, quais engines 3D são comuns no desenvolvimento AR e suas respectivas vantagens e desvantagens.

Por que AR precisa de um engine 3D

Realidade aumentada não é simplesmente sobrepor imagens 2D ou 3D à visualização da câmera, mas sim um sistema 3D em tempo real. Suas capacidades principais também podem incluir:

  • Modelagem da câmera real

    Para que os objetos virtuais renderizados pareçam mais realistas no mundo real, a matriz de projeção da câmera no engine 3D usado para renderização precisa ser ajustada conforme os parâmetros usados pela imagem da câmera real, como intrínsecos, extrínsecos e modelo de distorção.

  • Gerenciamento do sistema de coordenadas espaciais

    Gerenciamento unificado da posição e pose de dispositivos, ambiente, conteúdo AR e outros elementos, incluindo seleção, configuração e conversão entre coordenadas do mundo, coordenadas da câmera e coordenadas do dispositivo.

  • Renderização 3D em tempo real

    Implementa oclusão realista entre objetos virtuais e ambiente com base na profundidade da cena estimada em tempo real ou na mesh reconstruída, e simula sombras com algoritmos de estimativa de iluminação para obter uma fusão realista entre conteúdo virtual e real.

  • Gerenciamento de recursos e lifecycle

    Gerencia recursos e conteúdo AR virtuais, cobrindo o lifecycle de carregamento, exibição e descarregamento.

Essas capacidades constituem as responsabilidades centrais de um engine 3D típico. Portanto, escolher um engine 3D apropriado conforme os requisitos específicos do projeto é um dos pré-requisitos necessários para implementar rapidamente efeitos AR.

Engines 3D comuns

EasyAR oferece suporte a vários engines 3D, incluindo engines 3D comuns como Unity, Unreal ou desenvolvimento native. EasyAR fornece exemplos e documentação de desenvolvimento para Unity e Native.

Unity

Unity é posicionado como um engine 3D em tempo real de uso geral e atualmente é a primeira escolha da maioria dos desenvolvedores AR. Unity oferece suporte nativo ao desenvolvimento multiplataforma para Windows/macOS e iOS/Android/visionOS. O ecossistema Unity é maduro, com documentação e exemplos completos.

Native

Em comparação com o uso de engines empacotados de alto nível, como Unity, desenvolver AR diretamente com APIs gráficas native, como OpenGL, Vulkan e Metal, tem as seguintes vantagens: menos dependências do sistema, ambiente de runtime extremamente simplificado e personalização profunda de modelos de câmera e algoritmos subjacentes. O desenvolvimento com APIs native tem altos custos de engenharia e manutenção, carece de editores e ferramentas de depuração maduros, tem baixa eficiência de iteração e alta dificuldade multiplataforma. Não favorece a entrega rápida em nível de produto e geralmente é usado para implementar funções simples.

Web

Web não requer instalação e pode ser usado diretamente no navegador, tornando a distribuição e o alcance de usuários extremamente baratos. É naturalmente multiplataforma, adequado para lançamento rápido e acesso de usuários em larga escala, e tem um limiar de desenvolvimento relativamente baixo com um ecossistema frontend maduro.

Atualmente, Web ainda é relativamente limitado em aplicações AR. As principais limitações são que o desempenho é restringido por navegadores e security sandbox, o suporte a capacidades centrais de AR como motion tracking, occlusion e iluminação precisa é insuficiente, o acesso às capacidades do dispositivo é limitado, e estabilidade e consistência são difíceis de garantir. Portanto, Web AR é adequado para apresentação leve e marketing, mas não para aplicações AR complexas de alta precisão e forte interação.

Leitura adicional