Académique Documents
Professionnel Documents
Culture Documents
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
M. A IT KBIR 3 M. A IT KBIR 4
1
15/06/2013
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:
M. A IT KBIR 7 M. A IT KBIR 8
2
15/06/2013
M. A IT KBIR 9 M. A IT KBIR 10
M. A IT KBIR 11 M. A IT KBIR 12
3
15/06/2013
M. A IT KBIR 15 M. A IT KBIR 16
4
15/06/2013
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
M. A IT KBIR 19 M. A IT KBIR 20
5
15/06/2013
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
§ Lambert
§ Gouraud
§ Phong
M. A IT KBIR 23 M. A IT KBIR 24
6
15/06/2013
§ 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
M. A IT KBIR 25 M. A IT KBIR 26
M. A IT KBIR 27