Table of Contents

Rendering 3D piloté par AR

Le développement d'applications AR doit résoudre un problème fondamental : le rendering du AR content. Cet article utilise planar image tracking comme exemple pour décrire les modules de base, le workflow et l'implémentation du rendering d'une application AR.

Workflow typique d'une application AR

Une application AR typique reconnaît généralement des images, des objets ou des scènes spécifiques à partir de camera images, suit leur position et leur pose, puis rend le virtual content (3D models) selon cette position et cette pose.

image tracking

Par exemple, la figure ci-dessus montre une application AR de planar image tracking.

Le workflow de l'application est présenté ci-dessous.

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

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

Le workflow contient les modules suivants.

Module Rôle
Physical camera Fournit une sequence de input image frames. Un image frame comprend l'image, le timestamp auquel l'image a été générée et parfois aussi la position et la pose de la camera dans l'espace
Tracker Calcule la position et la pose du tracking target à partir des image frames. Selon le tracking target, il existe différents trackers, par exemple planar image tracker et 3D object tracker
Renderer Rend la camera image et le 3D model correspondant au tracked object sur l'écran. Sur certaines AR glasses, la camera image peut ne pas être rendue, et seul le 3D model est rendu

Rendering sur téléphone

Le rendering sur téléphone se divise en deux parties : rendering de la camera image et rendering des virtual objects.

Rendering de la camera image

camera image

Lors du rendering de la camera image, plusieurs paramètres doivent être pris en compte.

  • Scaling mode

    En général, la camera image doit remplir tout l'écran ou une fenêtre. Dans ce cas, il faut gérer la différence d'aspect ratio entre la camera image et screen/window.

    Si l'on aligne le centre de la camera image avec le centre de screen/window tout en conservant l'aspect ratio, il existe deux scaling modes courants : fit et fill.

    Scaling mode Effet
    Fit Affiche tout le content à l'écran, mais laisse des bandes noires à gauche et à droite ou en haut et en bas
    Fill Ne laisse pas de bandes noires, mais rogne une partie de l'image à gauche et à droite ou en haut et en bas
  • Camera image rotation

    Sur téléphone, l'image enregistrée par la physical camera est généralement fixe par rapport au corps de l'appareil et ne change pas avec la screen display orientation. Cependant, les changements d'orientation du téléphone influencent notre définition du haut, du bas, de la gauche et de la droite de l'image. Pendant le rendering, la screen display orientation courante influence également l'orientation de l'image affichée.

    En général, pendant le rendering, il faut déterminer un rotation angle de la camera image par rapport à la screen display orientation.

  • Camera image flipping

    Dans certains cas, la caméra frontale est utilisée. Il faut alors généralement inverser horizontalement l'image pour qu'elle ressemble à un miroir.

Rendering des virtual objects

virtual object

Lors du rendering de virtual objects sur téléphone, les virtual objects doivent être alignés avec la camera image. Cela exige de placer à la fois la rendering camera et les objects dans un virtual space qui correspond entièrement au real space, et de rendre avec le même field of view et le même aspect ratio que la physical camera. La camera image et les virtual objects subissent des perspective projection transforms identiques, à ceci près que la majeure partie de la perspective projection transform de la camera image se produit dans la physical camera, tandis que la perspective projection transform des virtual objects est entièrement un processus de calcul.

Rendering sur headsets

Le rendering sur headsets diffère de celui sur téléphone et doit être divisé en deux cas.

  • VST

    Video See-Through désigne une technologie AR où un headset capture des images via des physical cameras, puis affiche les camera images et le virtual content sur l'écran du headset. Vision Pro en est un exemple typique. En général, les perspective projection matrices des camera images et du virtual content sont définies par le SDK fourni par le headset, et le code externe n'a qu'à définir la position et la pose du virtual content. La physical camera utilisée pour tracking et la camera image rendue à l'écran peuvent se trouver à des positions différentes, et des coordinate transforms sont appliquées pendant le rendering.

  • OST

    Optical See-Through désigne une technologie AR où l'écran du headset est transparent et où le headset affiche uniquement le virtual content sur l'écran. HoloLens en est un exemple typique. En général, la perspective projection matrix du virtual content est définie par le SDK fourni par le headset, et le code externe n'a qu'à définir la position et la pose du virtual content. La physical camera utilisée pour tracking et la camera image rendue à l'écran peuvent se trouver à des positions différentes, et des coordinate transforms sont appliquées pendant le rendering.

Guides spécifiques aux plateformes

Le AR-driven 3D rendering est étroitement lié à la plateforme. Consultez les guides suivants pour développer selon votre plateforme cible :