Table of Contents

Rendering 3D guidato da AR

Lo sviluppo di applicazioni AR deve risolvere un problema fondamentale: il rendering di AR content. Questo articolo usa planar image tracking come esempio per descrivere i moduli di base, il workflow e l'implementazione del rendering di un'applicazione AR.

Workflow tipico di un'applicazione AR

Un'applicazione AR tipica di solito riconosce immagini, oggetti o scene specifiche dalle camera images, ne traccia position e pose, e renderizza virtual content (3D models) secondo quella position e pose.

image tracking

Ad esempio, la figura sopra mostra un'applicazione AR per planar image tracking.

Il workflow dell'applicazione è mostrato di seguito.

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

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

Il workflow contiene i seguenti moduli.

Modulo Ruolo
Physical camera Fornisce una sequence di input image frames. Un image frame include l'image, il timestamp in cui l'image è stata generata e talvolta anche position e pose della camera nello spazio
Tracker Calcola position e pose del tracking target dagli image frames. Per tracking target diversi esistono tracker diversi, come planar image tracker e 3D object tracker
Renderer Renderizza la camera image e il 3D model corrispondente al tracked object sullo schermo. Su alcuni AR glasses, la camera image potrebbe non essere renderizzata e potrebbe essere renderizzato solo il 3D model

Rendering sui telefoni

Il rendering sui telefoni è diviso in due parti: rendering della camera image e rendering dei virtual objects.

Rendering della camera image

camera image

Durante il rendering della camera image, ci sono alcuni parametri da considerare.

  • Scaling mode

    Di solito la camera image deve riempire l'intero schermo o una finestra. In questo caso bisogna gestire il problema dell'aspect ratio diverso tra camera image e screen/window.

    Se allineiamo il centro della camera image con il centro di screen/window e manteniamo invariato l'aspect ratio, ci sono due scaling modes comuni: fit e fill.

    Scaling mode Effetto
    Fit Mostra tutto il content sullo schermo, ma lascia barre nere a sinistra e destra o sopra e sotto
    Fill Non lascia barre nere, ma ritaglia parte dell'image a sinistra e destra o sopra e sotto
  • Camera image rotation

    Sui telefoni, l'image registrata dalla physical camera di solito è fissa rispetto al corpo del dispositivo e non cambia con la screen display orientation. Tuttavia, i cambiamenti di orientamento del corpo del telefono influenzano il modo in cui definiamo alto, basso, sinistra e destra dell'image. Durante il rendering, anche la current screen display orientation influisce sull'orientamento dell'image visualizzata.

    Di solito durante il rendering è necessario determinare un rotation angle della camera image rispetto alla screen display orientation.

  • Camera image flipping

    In alcuni casi viene usata la fotocamera frontale. In questo caso di solito è necessario ribaltare l'image orizzontalmente, in modo che sembri uno specchio.

Rendering dei virtual objects

virtual object

Quando si renderizzano virtual objects su un telefono, i virtual objects devono essere allineati con la camera image. Questo richiede di posizionare sia la rendering camera sia gli objects in un virtual space che corrisponda completamente al real space, e di renderizzare usando lo stesso field of view e aspect ratio della physical camera. La camera image e i virtual objects subiscono perspective projection transforms identiche, con la differenza che la perspective projection transform della camera image avviene in gran parte nella physical camera, mentre la perspective projection transform dei virtual objects è interamente un processo computazionale.

Rendering sui headset

Il rendering sui headset è diverso da quello sui telefoni e va diviso in due casi.

  • VST

    Video See-Through indica una tecnologia AR in cui un headset cattura immagini tramite physical cameras e poi mostra camera images e virtual content sullo schermo del headset. Un esempio tipico è Vision Pro. Di solito, le perspective projection matrices di camera images e virtual content sono impostate dall'SDK fornito dal headset, e il codice esterno deve solo impostare position e pose del virtual content. La physical camera usata per tracking e la camera image renderizzata sullo schermo possono trovarsi in posizioni diverse, e durante il rendering vengono applicate coordinate transforms.

  • OST

    Optical See-Through indica una tecnologia AR in cui lo schermo del headset è trasparente e il headset mostra solo virtual content sullo schermo. Un esempio tipico è HoloLens. Di solito, la perspective projection matrix del virtual content è impostata dall'SDK fornito dal headset, e il codice esterno deve solo impostare position e pose del virtual content. La physical camera usata per tracking e la camera image renderizzata sullo schermo possono trovarsi in posizioni diverse, e durante il rendering vengono applicate coordinate transforms.

Guide specifiche per piattaforma

AR-driven 3D rendering è strettamente legato alla piattaforma. Consultare le seguenti guide per lo sviluppo in base alla piattaforma target: