Vous êtes sur la page 1sur 6

L’image sans illumination (Lighting)

Modèle d’éclairement local


Illumination locale
(Shading)

Alexandre Meyer
http://bat710.univ-lyon1.fr/~ameyer/cours Comment calculer la couleur de chaque partie
1 des objets? Cours de synthèse d’images 2

1 couleur constante 1 couleur par sommet


glColor3f( 0, 0, 1); On donne une couleur différente à chaque
Draw_Cube(); sommet du cube

B Rb, Vb, Bb

Interpolation
A
C
Ra, Va, Ba Rc, Vc, Bc

Cours de synthèse d’images 3 Cours de synthèse d’images 4

Interpolation On aimerait une lumière


 Les couleurs de A,B,C sont connus
 Puis la couleur du pixel S est calculée par
interpolation bilinéaire. Pour le rouge RS :

7 C

6
5
B
4
Q S
3 T
2
1
0
A Illumination
0 1 2 3 4 5 6 7 8 Idem pour GS et BS
Cours de synthèse d’images 5 Cours de synthèse d’images 6

1
Illumination classique Illumination classique
 Illumination locale Exemple finale
 K proportion de lumière réfléchie VS absorbée par le matériaux
 Valide pour ray-tracing et pour
rendu projectif (Z-Buffer) Couleur de
l’objet

 Modèle de Phong  R   Ra   Ri    Ro 
       m 
 
 Empirique (plausible mais loin d’une simulation    a  a  i
G = K × G + G × (K d (N.L) + K s (H.N) )  ×  Go 
 B  B  B   B 
physique)     a   i  Diffus Spéculaire  o 
 3 longueur d’ondes : Red, Green & Blue Ambiant
 Illumination = Ambient + Diffus + Speculaire Couleur de la lumière (ex soleil)

Couleur de la lumière ambiante (ex ciel)


Cours de synthèse d’images 7 Cours de synthèse d’images 8

Lumière ambiante (Ambient Light) Lumière ambiante (Ambient Light)


 Lumière ambiante est définie pour toute la scène (Ra, Ga, Ba)
 Chaque objet réfléchit seulement une portion de cette
lumière (Ka)
 Approximation d’illumination globale
 D’où
 Même sans lumière directe, un objet est éclairé
 Constant sur tout l’objet

 R   Ra   Ri    Ro 
       m   
 G  = K a ×  Ga  +  Gi  × (K d (N.L) + K s (H.N) ) ×  Go 
 B  B  B    Bo 
    a  i
Ambiant

Cours de synthèse d’images 9 Couleur de la lumièreCours


ambiante (ex ciel)
de synthèse d’images 10

L’image - Ambient Loi de Lambert

 Lumière réfléchie de manière diffuse


 Suppose uniforme dans toutes les directions
 Surface de ce type = surface Lambertienne
 Angle d’arrivée de la lumière est important

Cours de synthèse d’images 11 Cours de synthèse d’images 12

2
Loi de Lambert Lumière diffuse (Diffuse Light)

N  L’intensité normalisée de la lumière arrivant sur


la surface (lumière incidente)
L
d’
d  La lumière réfléchie selon la loi de Lambert
θ

 L = direction de la lumière  La proportion de lumière réfléchie VS lumière


 N = normal de la surface
absorbée (Kd)
 Lumière incidente est proportionnelle à d
 d est proportionnel à cos Θ = N.L
Intensité réfléchie est proportionnelle à cos Θ
Cours de synthèse d’images 13 Cours de synthèse d’images 14

Diffus Plusieurs lumière ?

Couleur de
 Additionne le terme diffus
Ii
l’objet
m
 R 
  
 Ra   Ri 
   
   a  a  i
m 
  Ro 
  Ir = kaIa + Σj =1kdIi,j (N.L j)
G = K × G + G × (K d (N.L) + K s (H.N) )  ×  Go 
 B  B  B   B 
    a   i  Diffus Spéculaire  o   Ii,j est l’intensité de la lumière incidente j
Ambiant
Couleur de la lumière (ex soleil)
 lj est le vecteur indiquant la direction vers
Couleur de la lumière ambiante (ex ciel) la lumière j

Cours de synthèse d’images 15 Cours de synthèse d’images 16

Image - Diffus Parfaitement spéculaire

θ θ

 On ne verrait pratiquement jamais le reflet


spéculaire

Cours de synthèse d’images 17 Cours de synthèse d’images 18

3
Spéculaire « imparfait » (Phong) Composante spéculaire
Couleur de la
source de lumière x ks (H.N)m
 E = direction de l’œil
(Eye)

N H  N = normal
E

 L = direction de la lumiere
L
 H = (E+L)/2  m = brillance (shininess)
surface
 m grand : petit reflet spéculaire (highlight)
 m petit : highlight plus étalé
Cours de synthèse d’images 19 Cours de synthèse d’images 20

Ambient, diffus & spéculaire Image - Spéculaire


petit et gros reflet spéculaire
m petit
 Plusieurs source lumineuse : somme les termes diffus et
spéculaires
 C’est ici qu’on clampe les valeurs entre 0 et 1 pour
pouvoir les afficher sur un moniteur
Couleur de
Ii l’objet
 R   Ra   Ri    Ro 
       m 
 
 G  = K a ×  Ga  +  Gi  × (K d × (N.L) + K s × (H.N) ) ×  Go 
 B  B  B   B 
    a   i  Diffus Spéculaire   o 
Ambiant
m grand
Couleur de la lumière (ex soleil)

Couleur de la lumièreCours
ambiante (ex ciel)
de synthèse d’images 21 Cours de synthèse d’images 22

1 normale par polygone


 1 normale par polygone
→ Couleur uniforme pour tout le polygone

Oui mais en pratique comment


on fait avec des polygones? Problème :
on voit les facettes!!
1 normale par face?
1 normale par sommet?

23 Cours de synthèse d’images 24

4
1 normale par sommet Gouraud Shading
 On calcule une normale par sommet  Gouraud calcule la couleur
 Moyenne des normales des faces adjacentes  I=ambient+diffus (Sans terme spéculaire)
 Pour chaque sommet du polygone
 Interpolation bilinéaire des couleurs au moment du
remplissage
 fait une interpolation des couleur le long des arêtes du polygones
Normale rouge = moyenne  fait une seconde interpolation lors du remplissage du polygone
des normales bleues  Cf transparent 5 de ce cours

 Parce que ceci coute moins cher que de calculer I


pour chaque pixel du polygone

Cours de synthèse d’images 25 Cours de synthèse d’images 26

Gouraud Shading Gouraud Shading


 Problèmes avec interpolation des couleurs
et donc avec Gouraud Shading
 Couleur non constante avec la rotation des points
 Possibilité de manquer la tache spéculaire

Flat shading Gouraud shading


•1 normale par face •1 normale par sommet
(les normales bleues) (la normale rouge est la moyenne des normales
•Une couleur par face bleues)
•Calcul la couleur en chaque sommets Si la tache spéculaire est au centre d’un triangle, elle n’apparaît
•Interpole pendant le remplissage du polygone
pas dans la couleur des sommets qui sont trop loin. La tache
Spéculaire n’est donc pas visible avec Gouraud!
Cours de synthèse d’images 27 Cours de synthèse d’images 28

Phong Shading Gouraud VS Phong Shading


 Phong calcule la couleur en chaque pixel
 I=ambient+diffus+speculaire
 Pour trouver la normale en chaque pixel il interpolation les
normales au moment du remplissage

La normale bleue est une


interpolation des normales
noires

 Recapture la tache spéculaire au centre du polygone


 Inclus la composante spéculaire
 Possible en hard avec les Pixel shader (depuis ~2000)
Gauche: pas d’interpolation (1 normale par surface) Droite: Phong (interpolation des normales

Cours de synthèse d’images 29 Milieu: Gouraud (Interpolation des couleurs)Cours de synthèse d’images 30

5
Conclusions OpenGL
 Couleur d’un pixel  Definir une source de lumière
 Ambiant
 Diffuse GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
 Spéculaire glLightfv(GL_LIGHT0, GL_POSITION, light_position);
 Plusieurs sources glEnable(GL_LIGHTING);
 Besoin glEnable(GL_LIGHT0);
 Ombres
 Modèle plus réaliste de reflection (BRDF) La couleur de la source vaut 1,1,1 par defaut
 Illumination globale

Cours de synthèse d’images 31 Cours de synthèse d’images 32

OpenGL
Donner une couleur diffuse et spéculaire à un
objet

GLfloat mat_diffus[] = { 1.0, 1.0, 1.0, 1.0 };


GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess[] = { 50.0 };

glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUS, mat_diffus);


glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, mat_shininess);

Draw_Cube();

Cours de synthèse d’images 33

Vous aimerez peut-être aussi