Ombrage Phong

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Le terme ombrage de Phong désigne à la fois le modèle d'illumination de Phong et l'interpolation de Phong, deux algorithmes de traitement 3D en infographie. Tous les deux furent développés par Bui Tuong Phong et publiés en 1973.

Modèle d'illumination de Phong[modifier | modifier le code]

Description du modèle[modifier | modifier le code]

L'illumination de Phong est un modèle local, c'est-à-dire que le calcul se fait en chaque point. Ce modèle empirique n'a rien d'exact, mais permet de calculer de manière crédible la lumière réfléchie par le point étudié, pour cela il combine trois éléments : la lumière ambiante, la lumière diffuse (modèle lambertien) et la lumière spéculaire (voir Réflexion optique).

Le but est de calculer l'intensité lumineuse qui va être émise par réflexion par le point étudié, éclairé par une source supposée ponctuelle, dans une direction précise (celle de l'observateur). Pour cela, la lumière est séparée en trois composantes :

  1. La composante ambiante représente les parasites provenant d'autre chose que la source considérée, la lumière réfléchie par d'autres points par exemple. La lumière ambiante est supposée égale en tout point de l'espace.
  2. La lumière incidente est réfléchie dans toutes les directions. La composante diffuse indique l'intensité qui repart en tenant compte de l'inclinaison avec laquelle la lumière incidente arrive sur la surface, mais en supposant que l'intensité est la même quelle que soit la direction que prend le rayon réfléchi.
  3. Malgré tout, il y a plus de lumière renvoyée dans la direction de la réflexion géométrique (celle dans laquelle repartirait le rayon en arrivant sur un miroir). Le rôle de la composante spéculaire est d'en tenir compte.
Illustration du modèle de Phong : l'intensité totale est la somme des trois composantes décrites ci-dessus.

Paramètres[modifier | modifier le code]

Définition des différents vecteurs
  • On définit pour chaque matériau des constantes caractéristiques :
k_a \in [0,1] : constante liée à la composante ambiante, la proportion de lumière renvoyée.
k_d \in [0,1] : constante liée à la composante diffuse.
k_s \in [0,1] : constante liée à la composante spéculaire.
\alpha \gg 1 : constante liée à la brillance du matériau : plus \alpha est grand, plus la surface est brillante. Cette constante peut prendre des valeurs élevées, 10 100 ou plus.

(Les valeurs indiquées sont juste un ordre de grandeur)

  • On appelle i_a, i_d et i_s l'intensité des lumières incidentes ambiante, diffuse et spéculaire. I_a, I_d, I_s et I les intensités réfléchies, I étant le total.
  • On définit les vecteurs suivants : \vec L pour la lumière, \vec N pour la normale à la surface, \vec V pour la direction de vue de l'observateur et \vec R pour la direction dans laquelle serait réfléchie la lumière sur un miroir.
    \vec R se déduit par la relation \vec R = 2(\vec N \cdot \vec L)\vec N - \vec L = 2\cos \theta \vec N - \vec L

Tous ces vecteurs doivent être normalisés pour que les produits scalaires donnent juste le cosinus de l'angle entre les vecteurs.

Formules[modifier | modifier le code]

La composante ambiante, I_a est simplement donnée par :

I_a = i_a.k_a

La composante diffuse, I_d est donnée par :

I_d = i_d k_d (\vec L \cdot \vec N) = i_d k_d \cos \theta
De la même manière que le Soleil chauffe plus au zénith, I_d est maximale lorsque la lumière arrive sur la surface selon la direction normale, c'est-à-dire \vec L = \vec N

La composante spéculaire, I_s est donnée par :

I_s = i_s k_s (\vec R \cdot \vec V)^\alpha = i_s k_s \cos^\alpha \Omega
Si \vec V = \vec R, I_s est maximale. Plus \alpha est grand plus les tâches lumineuses seront petites.

L'intensité réfléchie totale est ainsi :

I = I_a + I_d + I_s

Pour plusieurs sources lumineuses, on obtient comme formule complète :

I = i_a k_a + \sum_{n \in \{sources\} } \Big( i_{d,n} k_d (\vec L_n \cdot \vec N) + i_{s,n} k_s (\vec R_n \cdot \vec V)^\alpha \Big)

Application à l'infographie[modifier | modifier le code]

Lorsqu'on souhaite appliquer cet algorithme en infographie, on sépare les composantes rouge/vert/bleu de la couleur de la texture pour le point considéré. Puis on applique la formule à i_d = i_s = i_{couleur} pour les trois couleurs.

Les failles du modèle de Phong[modifier | modifier le code]

La composante spéculaire se base sur deux vecteurs directionnels, l'observateur et la lumière, et interdit toute radiosité du modèle. Ce modèle est empirique et n'est fondé sur aucune théorie physique, mais uniquement sur les observations de Phong. Ce modèle ne prévoit pas la diffusion de la lumière avec la distance

L'interpolation de Phong[modifier | modifier le code]

Une sphère interpolée et rendue selon Phong

Cette méthode, à mettre en parallèle avec l'interpolation de Gouraud, produit de bons résultats de rendus, souvent plus réalistes que son prédécesseur.

Le principal problème de l'ombrage de Gouraud, c'est qu'il ne calcule que les sommets (vertex) des polygones : une source lumineuse spéculaire placée au centre d'un triangle n'apparaîtra pas. Ce problème est réglé avec l'interpolation de Phong.

Soient trois sommets distincts : v1, v2 et v3, ayant pour vecteurs unitaires normaux n1, n2 et n3. Comme pour l'interpolation de Gouraud, celle-ci se fait de façon linéaire sur toute la surface du triangle v_1v_2v_3, seulement elle se fait depuis les trois vecteurs normaux des sommets, c'est-à-dire que nous interpolons en fait les vecteurs normaux au lieu des couleurs.

À la différence de l'interpolation de Gouraud cependant, le calcul ne se fait pas sur 3 points par surface, mais pour tous les points d'une surface - ou plus raisonnablement, sur plusieurs subdivisions de points. Cette méthode, bien plus lente, est parfois traitée par le matériel directement, via les shaders.

Articles connexes[modifier | modifier le code]