Construire un ray tracer — 05 — Les coordonnées barycentriques

Le système de coordonnées propre au triangle : exprimer un point comme un mélange pondéré des trois sommets. À quoi ça sert — interpoler normales, couleurs et coordonnées de texture sur toute la surface d'un triangle.

05 — Les coordonnées barycentriques

Ce que tu vas apprendre

  • Ce que sont les coordonnées barycentriques d'un point dans un triangle
  • Leur propriété clé : trois poids qui somment à 1
  • Comment elles servent à interpoler n'importe quel attribut
  • Pourquoi elles transforment un maillage facetté en surface lisse

Prérequis


Möller-Trumbore renvoie un couple (u, v) : les coordonnées barycentriques du point d'impact. Loin d'être un sous-produit anecdotique, ce sont elles qui donnent vie à un maillage. Sans elles, une sphère faite de triangles ressemblerait à une boule à facettes ; avec elles, elle paraît parfaitement lisse. Voici comment.

Un point comme mélange de sommets

Les coordonnées barycentriques expriment un point P à l'intérieur d'un triangle comme une moyenne pondérée de ses trois sommets v0, v1, v2 :

P = w0·v0 + w1·v1 + w2·v2

Les trois poids w0, w1, w2 sont les coordonnées barycentriques, et ils vérifient toujours :

w0 + w1 + w2 = 1

C'est leur propriété fondamentale. Chaque poids dit « à quel point » le point penche vers le sommet correspondant. Au sommet v0, on a (1, 0, 0) ; au milieu de l'arête v1v2, on a (0, 0.5, 0.5) ; au centre de gravité (le barycentre, d'où le nom), (1/3, 1/3, 1/3).

            v0  (1,0,0)
            /\
           /  \
          / ·P \        P = w0·v0 + w1·v1 + w2·v2
         /      \       avec w0+w1+w2 = 1
        /________\
   v1 (0,1,0)   v2 (0,0,1)

Le lien avec le (u, v) de Möller-Trumbore : u et v sont deux des poids, et le troisième se déduit par w0 = 1 − u − v. Donc P = (1 − u − v)·v0 + u·v1 + v·v2. Le point est dans le triangle exactement quand les trois poids sont positifs.

Interpoler n'importe quel attribut

Voici la magie. La même combinaison de poids qui reconstruit la position reconstruit n'importe quelle valeur définie aux sommets. Si chaque sommet porte une normale, une couleur ou une coordonnée de texture, la valeur au point d'impact s'obtient en appliquant les mêmes poids :

normaleEnP = w0·N0 + w1·N1 + w2·N2     (puis on normalise)
couleurEnP = w0·C0 + w1·C1 + w2·C2
uvEnP      = w0·UV0 + w1·UV1 + w2·UV2

C'est de l'interpolation linéaire (article 09 de la série maths), mais sur un triangle plutôt que sur un segment. Les coordonnées barycentriques sont donc le pinceau qui étale en douceur les attributs des trois sommets sur toute la surface du triangle.

Le maillage lisse

C'est précisément ce qui sauve l'apparence d'un maillage. Un maillage n'est qu'une approximation à facettes d'une surface courbe. Si on éclairait chaque triangle avec une seule normale (celle de sa face plane), on verrait nettement chaque facette : l'objet aurait l'air taillé à la serpe. C'est l'ombrage plat (flat shading).

À la place, on stocke une normale par sommet (la moyenne des normales des faces voisines), et au point d'impact on interpole ces normales par les coordonnées barycentriques. La normale varie alors continûment sur tout le triangle, l'éclairage suit, et l'œil perçoit une surface lisse — même si la géométrie reste facettée. C'est l'ombrage doux (smooth shading, ou ombrage de Phong), et il ne coûte presque rien grâce aux barycentriques.

   flat shading (1 normale/face)     smooth shading (normales interpolées)
        /|/|/|/|  facettes              ╭───────────╮  lisse
       (on voit les triangles)         (les facettes disparaissent)

Les barycentriques sont la dernière brique théorique. À partir d'ici, on a tout pour manipuler de vrais objets : l'article suivant structure des milliers de triangles en un maillage.


Sources

  • Scratchapixel. Ray-Tracing: Rendering a Triangle (coordonnées barycentriques). scratchapixel.com
  • Marschner, S., & Shirley, P. (2021). Fundamentals of Computer Graphics (5ᵉ éd.), section « Barycentric Coordinates ». CRC Press.
  • Coordonnées barycentriques. Wikipedia

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.