Table of Contents

Rendering 3D impulsado por AR

El desarrollo de aplicaciones AR debe resolver un problema fundamental: el rendering de AR content. Este artículo usa planar image tracking como ejemplo para describir los módulos básicos, el workflow y la implementación de rendering de una aplicación AR.

Workflow típico de una aplicación AR

Una aplicación AR típica suele reconocer imágenes, objetos o escenas específicas a partir de camera images, hacer tracking de su posición y pose, y renderizar virtual content (3D models) según esa posición y pose.

image tracking

Por ejemplo, la figura anterior muestra una aplicación AR de planar image tracking.

El workflow de la aplicación se muestra a continuación.

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

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

El workflow contiene los siguientes módulos.

Módulo Función
Physical camera Proporciona una secuencia de input image frames. Un image frame incluye la image, el timestamp en que se generó la image y, a veces, también la posición y pose de la camera en el espacio
Tracker Calcula la posición y pose del tracking target a partir de image frames. Según el tracking target, existen distintos trackers, como planar image tracker y 3D object tracker
Renderer Renderiza la camera image y el 3D model correspondiente al tracked object en la pantalla. En algunas AR glasses, puede que no se renderice la camera image y solo se renderice el 3D model

Rendering en teléfonos

El rendering en teléfonos se divide en dos partes: rendering de la camera image y rendering de virtual objects.

Rendering de la camera image

camera image

Hay varios parámetros a los que prestar atención al renderizar la camera image.

  • Scaling mode

    Normalmente la camera image debe llenar toda la pantalla o una ventana. En ese caso, debe manejarse la diferencia de aspect ratio entre la camera image y la screen/window.

    Si alineamos el centro de la camera image con el centro de la screen/window y mantenemos el aspect ratio sin cambios, hay dos scaling modes comunes: fit y fill.

    Scaling mode Efecto
    Fit Muestra todo el content en pantalla, pero deja barras negras a izquierda y derecha o arriba y abajo
    Fill No deja barras negras, pero recorta parte de la image a izquierda y derecha o arriba y abajo
  • Camera image rotation

    En teléfonos, la image registrada por la physical camera suele estar fija respecto al cuerpo del dispositivo y no cambia con la screen display orientation. Sin embargo, los cambios de orientación del cuerpo del teléfono afectan cómo definimos arriba, abajo, izquierda y derecha de la image. Durante el rendering, la screen display orientation actual también afecta la orientación de la image mostrada.

    Normalmente, durante el rendering se debe determinar un rotation angle de la camera image respecto a la screen display orientation.

  • Camera image flipping

    En algunos casos se usa la cámara frontal. Entonces normalmente es necesario invertir la image horizontalmente para que parezca un espejo.

Rendering de virtual objects

virtual object

Al renderizar virtual objects en un teléfono, los virtual objects deben alinearse con la camera image. Esto requiere colocar tanto la rendering camera como los objects en un virtual space que corresponda por completo al real space, y renderizar usando el mismo field of view y aspect ratio que la physical camera. La camera image y los virtual objects pasan por perspective projection transforms idénticas, excepto que la mayor parte de la perspective projection transform de la camera image ocurre dentro de la physical camera, mientras que la perspective projection transform de virtual objects es completamente un proceso de cálculo.

Rendering en headsets

El rendering en headsets difiere del rendering en teléfonos y debe dividirse en dos casos.

  • VST

    Video See-Through es una tecnología AR en la que el headset captura imágenes mediante physical cameras y luego muestra la camera image y virtual content en la pantalla del headset. Un ejemplo típico es Vision Pro. Normalmente, las perspective projection matrices de camera images y virtual content las configura el SDK proporcionado por el headset, y el código externo solo necesita configurar la posición y pose del virtual content. La physical camera usada para tracking y la camera image renderizada en pantalla pueden estar en posiciones diferentes, y se aplican coordinate transforms durante el rendering.

  • OST

    Optical See-Through es una tecnología AR en la que la pantalla del headset es transparente y el headset solo muestra virtual content en la pantalla. Un ejemplo típico es HoloLens. Normalmente, la perspective projection matrix de virtual content la configura el SDK proporcionado por el headset, y el código externo solo necesita configurar la posición y pose del virtual content. La physical camera usada para tracking y la camera image renderizada en pantalla pueden estar en posiciones diferentes, y se aplican coordinate transforms durante el rendering.

Guías específicas de plataforma

El AR-driven 3D rendering está estrechamente relacionado con la plataforma. Consulte las siguientes guías para desarrollar según su plataforma objetivo: