Table of Contents

Rendering 3D orientado por AR

O desenvolvimento de aplicações AR precisa resolver um problema fundamental: o rendering de AR content. Este artigo usa planar image tracking como exemplo para descrever os módulos básicos, o workflow e a implementação de rendering de uma aplicação AR.

Workflow típico de uma aplicação AR

Uma aplicação AR típica geralmente reconhece imagens, objetos ou scenes específicos a partir de camera images, rastreia sua posição e pose, e renderiza virtual content (3D models) de acordo com essa posição e pose.

image tracking

Por exemplo, a figura acima mostra uma aplicação AR de planar image tracking.

O workflow da aplicação é mostrado abaixo.

flowchart TD
    CameraDevice[Camera Device]
    Tracker[Tracker]
    Renderer[Renderer]

    CameraDevice -->|Image Frame| Tracker
    Tracker -->|Image Frame + Tracked Pose| Renderer

O workflow contém os seguintes módulos.

Módulo Função
Physical camera Fornece uma sequence de input image frames. Um image frame inclui a image, o timestamp em que a image foi gerada e, às vezes, também a posição e pose da camera no espaço
Tracker Calcula a posição e pose do tracking target a partir dos image frames. Dependendo do tracking target, existem vários trackers, como planar image tracker e 3D object tracker
Renderer Renderiza a camera image e o 3D model correspondente ao tracked object na tela. Em alguns AR glasses, a camera image pode não ser renderizada, e apenas o 3D model é renderizado

Rendering em telefones

O rendering em telefones é dividido em duas partes: rendering da camera image e rendering de virtual objects.

Rendering da camera image

camera image

Ao renderizar a camera image, há alguns parâmetros que precisam de atenção.

  • Scaling mode

    Normalmente a camera image precisa preencher toda a tela ou uma janela. Nesse caso, é necessário lidar com a diferença de aspect ratio entre a camera image e a screen/window.

    Se alinharmos o centro da camera image com o centro da screen/window e mantivermos o aspect ratio inalterado, há dois scaling modes comuns: fit e fill.

    Scaling mode Efeito
    Fit Mostra todo o content na tela, mas deixa barras pretas à esquerda e à direita ou acima e abaixo
    Fill Não deixa barras pretas, mas corta parte da image à esquerda e à direita ou acima e abaixo
  • Camera image rotation

    Em telefones, a image registrada pela physical camera geralmente é fixa em relação ao corpo do dispositivo e não muda com a screen display orientation. Mas mudanças na orientação do corpo do telefone afetam como definimos cima, baixo, esquerda e direita da image. Durante o rendering, a screen display orientation atual também afeta a orientação da image exibida.

    Normalmente, durante o rendering, é necessário determinar um rotation angle da camera image em relação à screen display orientation.

  • Camera image flipping

    Em alguns casos, a câmera frontal é usada. Nesse momento, a image geralmente precisa ser invertida horizontalmente para parecer um espelho.

Rendering de virtual objects

virtual object

Ao renderizar virtual objects em um telefone, os virtual objects precisam se alinhar com a camera image. Isso exige colocar tanto a rendering camera quanto os objects em um virtual space que corresponda completamente ao real space, e renderizar usando o mesmo field of view e aspect ratio da physical camera. A camera image e os virtual objects passam por perspective projection transforms idênticas, exceto que a maior parte da perspective projection transform da camera image ocorre dentro da physical camera, enquanto a perspective projection transform dos virtual objects é inteiramente um processo computacional.

Rendering em headsets

O rendering em headsets é diferente do rendering em telefones e precisa ser dividido em dois casos.

  • VST

    Video See-Through é uma tecnologia AR em que o headset captura images por physical cameras e depois exibe as camera images e o virtual content na tela do headset. Um exemplo típico é Vision Pro. Normalmente, as perspective projection matrices das camera images e do virtual content são configuradas pelo SDK fornecido pelo headset, e o código externo só precisa configurar a posição e pose do virtual content. A physical camera usada para tracking e a camera image renderizada na tela podem estar em posições diferentes, e coordinate transforms são aplicadas durante o rendering.

  • OST

    Optical See-Through é uma tecnologia AR em que a tela do headset é transparente e o headset exibe apenas virtual content na tela. Um exemplo típico é HoloLens. Normalmente, a perspective projection matrix do virtual content é configurada pelo SDK fornecido pelo headset, e o código externo só precisa configurar a posição e pose do virtual content. A physical camera usada para tracking e a camera image renderizada na tela podem estar em posições diferentes, e coordinate transforms são aplicadas durante o rendering.

Guias específicos de plataforma

AR-driven 3D rendering está intimamente relacionado à plataforma. Consulte os guias a seguir para desenvolver de acordo com sua plataforma alvo: