Vous êtes sur la page 1sur 7

15/06/2013

Perception des objets

Synthèse d’images et programmation 3D sous OpenGL: La perception des objets dans une scène 3D dépond
de l’intensité de la couleur de la source lumineuse et
Illumination de la matière qui forme les objets. Les rayons
lumineux sont reflétés par les objets et atteignent
finalement notre œil.
M. AIT KBIR
Départ. Génie Informatique FST de Tanger

1 M. A IT KBIR 2

Sources de lumière Loi de la réflexion


§ Source ponctuelle: supposée placée en un point précis et rayonnant La loi de la réflexion montre que quand un rayon lumineux
la lumière radialement. est reflété par une surface, l' angle d' incidence est égal à
§ Source directionnelle: supposée placé à l' infini et éclairant la scène l' angle de réflexion.
avec des rayons parallèles à une direction donnée.
§ Projecteur ou spot: caractérisé par sa position, sa direction
(éclairage dans un cône) et sa fonction d‘éclairage ( Atténuation de
l' intensité en fonction de l' angle).

M. A IT KBIR 3 M. A IT KBIR 4

1
15/06/2013

La couleur et la lumière Modèle de reflectance de Phong


Quand la lumière frappe un objet, non seulement une partie est Re flectance Ambiante : permet à la scène de ne pas être complètement
reflétée, mais elle peut aussi être absorbée ou transmise. Les noir. La lumière ambiante n'a aucune direction, elle se comporte de la
même façon avec toutes les surfaces et elle est reflétée dans toutes les
objets ont une tendance de sélectivement absorber, refléter, ou
directions, aboutissant à des surfaces avec une apparence uniforme.
transmettre de la lumière de certaines couleurs.
Re flectance Diffuse : les surfaces diffuses dispersent la lumière
La lumière qui rebondie autour de nous à tendance à se délabrer
également dans toutes les directions, mais l'intensité de la réflexion
dans quelque temps, en fonction de la distance, ce qui est causé
varie en fonction de l'angle d'incidence.
par l' absorption atmosphérique. C' est pourquoi des objets lointains
apparaissent un peu troubles par rapport aux objets qui sont plus Re flectance Spéculaire : Une réflexion spéculaire peut être observé sur
proches de nous. On parle ici du phénomène d’atténuation. n'importe quelle surface brillante, où on peut voir apparaitre un point
gris ou blanc sur la surface.
La couleur de la lumière reflétée qui attient finalement l' oeil est
couleur que la surface est sensée avoir. Émission : Le composant d'émission d'une surface est utilisé pour
simuler un objet lumineux qui semble émettre de la lumière, comme une
ampoule.
M. A IT KBIR 5 M. A IT KBIR 6

Refléctance ambiante Réflexion diffuse

La réflc tance ambiante est en réalité une approximation au fait La rugosité de la matière fait que chaque rayon rencontre la
qu' il n'y a jamais une pièce parfaitement sombre dans ce monde. surface avec une orientation différente. Par la suite, selon la loi
Une certaine quantité de lumière entre toujours dans la pièce, de la réflexion ces rayons individuels se dispersent dans des
permettant la vision. Cette sorte d' illumination nous permet de voir directions différentes. Les rayons inc idents se répondent dans
les traces faibles d' objets avec les nuances uniformes (plates) de toute la scène après réflexion. On parle ici de la réflexion
couleurs superficielles. diffuse.
Mathématiquement, si la lumière incidente a une couleur ambiante Certains matériaux rugueux: les vêtements ou une chaussée de
(Ri, Gi, Bi) et l' objet qu’il frappe est une matière avec une bêton …
réflectance ambiante (Ra, Ga, Ba) alors la couleur de la lumière
reflétée en raison de la réflexion ambiante sera:

(Rr, Gr, Br) = (Ri*Ra, Gi*Ga, Bi*Ba).

M. A IT KBIR 7 M. A IT KBIR 8

2
15/06/2013

Refléctance diffuse (réflectance de Lambert) Refléctance diffuse


Les surfaces avec la réflectance diffuse dispersent la lumière
dans toutes les directions. La quantité de lumière reflétée est
directement proportionnelle à l'angle d' incidence du rayon
lumineux entrant.
Si la lumière incidente a une couleur diffuse (Rid,
Gid, Bid) et l' objet qu’il frappe est une matière
avec une réflectance diffuse (Rd, Gd, Bd),
alors la couleur de la lumière reflétée en raison
de la réflexion diffuse sera:

M. A IT KBIR 9 M. A IT KBIR 10

Réflexion spéculaire Réflectance spéculaire


Pour des matériaux lisses, comme un miroir ou un plan d' eau La réflexion spéculaire produit des points brillants souvent vus sur
calme, tous les rayons reflété s restent concentrées dans le des objets brillants comme le verre ou le métal. A la différence de
même paquet en départ de la surface, ce qui donne à la surface la réflexion ambiante et diffuse ce type de réflexion dépend de la
une apparence brillante. direction de la lumière incidente et de la direction de vue de la
surface. La réflexion est la plus brillante quand la direction de
visionnage est parallèle à la lumière reflétée.

M. A IT KBIR 11 M. A IT KBIR 12

3
15/06/2013

Réflectance spéculaire Généralités sur OpenGL


Phong propose l’approximation de la fonction specular() par
(cos(a))n, où n est l’exposant spéculaire qui définit le degré de
brillance.

Typiquement un objet a un point culminant spéculaire qui est


blanchâtre.
Pour des matériaux brillants, le cône de réflexion (plage d’angles
de réflexion) est petit tandis que pour des matériaux mats, il est
plus grand.
M. A IT KBIR 13 M. A IT KBIR 14

Émission Coefficients de réflexion


Les coefficients de réflexion sont définis comme des triplets
RGB et prennent une valeur entre 0 et 1. Beaucoup de
La couleur d'émission d'une surface ajoute l'intensité à personnes prennent ces coefficients de reflèctance comme la
l'objet, mais est inchangée par n'importe quelles sources couleur de la matière, puisque ce sera la couleur de la lumière
lumineuses. qui sera reflétée. Ce matériel est alors assigné aux modèles
Puisque la plupart des objets réalistes (sauf des lampes) dans la scène.
n'émettent pas de lumière, on utilise cette caractéristique
Quand la lumière incidente frappe un objet, chacun de ces
pour simuler des lampes et d'autres sources lumineuses quatre composants est calculé pour déterminer sa contribution
dans une scène. individuelle à la lumière reflétée. Toutes les quatre composantes
sont alors additionnées pour atteindre la couleur finale de la
lumière sortante.

M. A IT KBIR 15 M. A IT KBIR 16

4
15/06/2013

OpenGL: Illumination OpenGL: Illumination


Les fonctions suivantes permettent de spécifier les paramètres
Activer ou désactiver l’illumination: des sources de lumière:
glEnable(GL_LIGHTING); ou glDisable(GL_LIGHTING); void glLightf( Glenum light, Glenum pname, GLfloat param )
void glLighti( Glenum light, Glenum pname, GLint param )
On peut utiliser jusqu’à 8 lampes ou plus : GL_LIGHTi =
GL_LIGHT0 + i light = GL_LIGHTi, param = nouvelle valeur
glGetIntegersv(GL_MAX_LIGHTS, &nbre) pname = GL_SPOT_EXPONENT, GL_SPOT_CUTOFF, GL_CONSTANT_ATTENUATION,
GL_LINEAR_ATTENUATION, ou GL_QUADRATIC_ATTENUATION

Activer une source lumineuse : void glLightfv( GLenum light, GLenum pname, const Glfloat *params)
glEnable(GL_LIGHT0); /* 1ere source lumineuse */ void glLightiv( GLenum light, GLenum pname, const GLint *params)
...
pname = GL_A MBIENT, GL_DIFFUSE, GL_SPECULAR, GL_POSITION, GL_SPOT_DIRECTION,
glEnable(GL_LIGHT7); /* 8eme source lumineuse */ GL_SPOT_EXPONENT, GL_SPOT_CUTOFF, GL_CONSTANT_ATTENUATION,
GL_LINEAR_ATTENUATION, ou GL_QUADRATIC_ATTENUATION

M. A IT KBIR 17 M. A IT KBIR 18

Sources lumineuses : valeurs par défaut OpenGL: Illumination


Valeur par défaut Description void glLightModelf( GLenum pname, GLfloat param )
(0,0,0,0) Intensité ambiante d’une source.
(0,0,0,0) source 0 : (1,1,1,1) Intensité diffuse de la source.
void glLightModeli( GLenum pname, GLint param )
(0,0,0,0) source 0 : (1,1,1,1) Intensité spéculaire de la source void glLightModelfv( GLenum pname, const GLfloat *params )
(0,0,0,0) source 0 : (1,1,1,1) Intensité du spot void glLightModeliv( GLenum pname, const GLint *params )
(0,0,1,0) Position
(0,0,-1) Direction du spot (vecteur) Pnam e param
0 Exposant du spot (entre 0 et 128) GL_LIGHT_MODEL_AMBIENT (fv ou iv ) Intensité ambiante de la scène, par défaut
(0.2, 0.2, 0.2, 1.0)
180 Angle du cône du spot (180 ou entre 0 et 90)
GL_LIGHT_MODEL_LOCAL_VIEWER 0 : les reflets des spots sont calculés sur l’axe –z
¹ 0 : par rapport à la position de l’œil
1.0 Atténuation constante (entre 0 et ¥)
GL_LIGHT_MODEL_TWO_SIDE 0 : seule la face « front » est calculée
0 Atténuation linéaire ¹ 0 : les deux faces d’une surface sont calculées
0 Atténuation quadrique

M. A IT KBIR 19 M. A IT KBIR 20

5
15/06/2013

propriétés matérielles de la surface des faces OpenGL: Les normales


void glMaterialfv( GLenum face, GLenum pname, const GLfloat *params )
void glMaterialiv( GLenum face, GLenum pname, const GLint *params ) La normale est une variable d’état d’OpenGL, qui est modifiée
par l’une des fonctions suivantes :
pnam e param s
GL_AMBIENT Spécifie la valeur RGBA de la reflèctance ambiante du matériel, par défaut (0.2,
0.2, 0.2, 1.0). void glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz )

GL_DIFFUSE Spécifie la valeur RGBA de la reflèctance diffuse du matériel, par défaut (0.8, 0.8, void glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz )
0.8, 1.0).
GL_SPECULAR Spécifie la valeur RGBA de la reflèctance spéculaire, par défaut (0.0, 0.0, 0.0, 1.0). void glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz )
GL_EMISSION Spécifie la valeur RGBA de la lumière émise, par défaut (0.0, 0.0, 0.0, 1.0). void glNormal3i( GLint nx, GLint ny, GLint nz )
GL_SHININESS Spécifie la valeur RGBA de la brillance spéculaire du matériel, valeurs dans
[0,128] et 0 comme valeur par défaut. void glNormal3s( GLshort nx, GLshort ny, GLshort nz )

GL_AMBIENT_A Appliquer les valeurs aux reflèctances ambiante et diffuse. void glNormal3bv( const GLbyte *v )
ND_DIFFUSE

M. A IT KBIR 21 M. A IT KBIR 22

Modèle d’ombrage (Shading) Modèle de Lambert


Le modèle d’ombrage ou d’interpolation permet de préciser la § Le calcul d’illumination se fait pour un point de la face, puis la
façon utilisée pour appliquer le modèle d’illumination sur un valeur trouvée est attribuée à tous les autres points de la face.
objet de la scène, ceci passe par le calcul de la normale à la § Une bonne représentation est obtenue si la source de lumière
surface de l’objet en chaque point, ce qui permet de fixer est éloignée ainsi que l' observateur.
l’interaction de la lumière avec les objets. § On remarque une discontinuité entre les faces adjacentes.
§ Les performances de l’algorithme sont bonnes quant le nombre
Modèles d’interpolation: de faces est grand.

§ Lambert
§ Gouraud
§ Phong

M. A IT KBIR 23 M. A IT KBIR 24

6
15/06/2013

Modèle de Gouraud Modèle de Phong

§ Le calcul de l’illumination est fait en chaque sommet de la § Le calcul de l’illumination est fait en chaque sommet de la
face, pour les autres points de la face on procède par face. Pour les autres points de la face on procède par
interpolation linéaire des intensité s aux sommets des faces. interpolation linéaire des normales calculées aux sommets des
§ Le calcul d’intensité s se fait donc en utilisant les normales faces.
calculées aux sommets § L' illumination en un point est calculée à chaque point à partir
de la normale interpolée.
§ Méthode beaucoup plus couteuse en temps de calcul

§ OpenGL propose les deux premières méthodes :


glShadeModel(GL_FLAT(Lambert)/GL_SMOOTH(Gouraud))

M. A IT KBIR 25 M. A IT KBIR 26

Modèle d’ombrage (Shading)

Quand la vitesse est très demandée, le modèle de shading de


Gouraud est le meilleur

M. A IT KBIR 27

Vous aimerez peut-être aussi