Modélisation radiométrique Le modèle d’illumination OpenGL

62
Benoît Benoît Piranda Piranda Équipe SISAR Équipe SISAR Université de Marne La Vallée Université de Marne La Vallée Synthèse d’image temps réel Synthèse d’image temps réel Modélisation Modélisation radiométrique radiométrique Le modèle d’illumination Le modèle d’illumination OpenGL OpenGL

Transcript of Modélisation radiométrique Le modèle d’illumination OpenGL

Page 1: Modélisation radiométrique Le modèle d’illumination OpenGL

Benoît Benoît PirandaPirandaÉquipe SISARÉquipe SISARUniversité de Marne La ValléeUniversité de Marne La Vallée

Synthèse d’image temps réelSynthèse d’image temps réel

Modélisation Modélisation radiométriqueradiométriqueLe modèle d’illumination Le modèle d’illumination OpenGLOpenGL

Page 2: Modélisation radiométrique Le modèle d’illumination OpenGL

PrincipePrincipeLa synthèse d’imagesLa synthèse d’images

Idée de scèneModélisation géométriqueModélisation géométrique

Description (Description (fonction du tempsfonction du temps):):•• de la forme des objetsde la forme des objets•• de l’organisation des objets de l’organisation des objets dans la scènedans la scène

•• placement de la caméraplacement de la caméra

Modélisation Modélisation radiométriqueradiométrique

Description Description (fonction du temps)(fonction du temps)::•• de la matière constituant l’objetde la matière constituant l’objet•• des interactions entre lades interactions entre lamatière et la lumièrematière et la lumière

Vue Vue descriptivedescriptivede la scènede la scène

«« fils de ferfils de fer »»

Vue Vue habilléehabillée

et coloréeet colorée

Algorithme de renduAlgorithme de rendu

Projection en 2DProjection en 2DSuppression des faces cachéesSuppression des faces cachéesCalcul des effets spéciauxCalcul des effets spéciaux

Image 2D Image 2D de la scènede la scèneà un instantà un instant

donnédonné

Page 3: Modélisation radiométrique Le modèle d’illumination OpenGL

La couleur visible des objetsLa couleur visible des objetsLe modèle géométrique permet de : Le modèle géométrique permet de : –– placer des objets dans la scèneplacer des objets dans la scène–– connaître la position des objets relativement à la connaître la position des objets relativement à la

caméracaméra

Besoin : connaître la couleur visible des points Besoin : connaître la couleur visible des points des objets de la scène.des objets de la scène.–– Soit imposéeSoit imposée–– Soit en calculée par le modèle d’illuminationSoit en calculée par le modèle d’illumination

•• La couleur visible des objets dépend de :La couleur visible des objets dépend de :la façon dont les objets sont éclairés (sources)la façon dont les objets sont éclairés (sources)leur capacité à réleur capacité à ré--émettre la lumière (matériaux)émettre la lumière (matériaux)l’angle suivant lequel ils sont observés (le point de vue)l’angle suivant lequel ils sont observés (le point de vue)

Page 4: Modélisation radiométrique Le modèle d’illumination OpenGL

OpenGLOpenGL sans illuminationsans illuminationSolution simpleSolution simple–– Pour les objets dont on veut imposer la couleurPour les objets dont on veut imposer la couleur

•• Soit information que l’on veut toujours visiblesSoit information que l’on veut toujours visiblesRepèreRepère

•• Soit calculée par un autreSoit calculée par un autrealgorithme d’illuminationalgorithme d’illumination

RadiositéRadiosité

Page 5: Modélisation radiométrique Le modèle d’illumination OpenGL

Utilisation sous Utilisation sous OpenGLOpenGLDésactivation du modèle d’illuminationDésactivation du modèle d’illumination

Sélection d’une couleur couranteSélection d’une couleur courante

glDisable(GL_LIGHTING);

glColor3f(1.0f,0.0f,0.0f);glColor4d(0.0,0.5,0.8,1.0);

Page 6: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle de couleurModèle de couleurComposantes Composantes –– Triplet : Rouge, Vert, BleuTriplet : Rouge, Vert, Bleu–– Quadruplet : Rouge, Vert, Bleu, AlphaQuadruplet : Rouge, Vert, Bleu, Alpha

Système de composition des couleurs Système de composition des couleurs –– Modèle additifModèle additif

Page 7: Modélisation radiométrique Le modèle d’illumination OpenGL

Quelques exemplesQuelques exemples

Page 8: Modélisation radiométrique Le modèle d’illumination OpenGL

Quelques exemplesQuelques exemples

Page 9: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle d’illuminationModèle d’illuminationDécompose le problème en deux parties :Décompose le problème en deux parties :–– Le modèle d’illuminationLe modèle d’illumination

•• Traite la façon dont les objets sont éclairés (sources)Traite la façon dont les objets sont éclairés (sources)•• Et leur capacité à réEt leur capacité à ré--émettre la lumière (matériaux)émettre la lumière (matériaux)•• Utilise le modèle 3DUtilise le modèle 3D•• Associe une luminance à chaque élément de surface de la Associe une luminance à chaque élément de surface de la

scènescène

–– L’algorithme de renduL’algorithme de rendu•• Calcule une image en fonction d’un point de vueCalcule une image en fonction d’un point de vue•• Tient compte des effets spéciauxTient compte des effets spéciaux•• Associe une couleur à chaque pixel de l’image 2DAssocie une couleur à chaque pixel de l’image 2D

Page 10: Modélisation radiométrique Le modèle d’illumination OpenGL

Caractéristiques optiques des objetsCaractéristiques optiques des objets

OndeOndeélectromagnétiqueélectromagnétique

incidenteincidente

PartiePartieréfléchieréfléchie

PartiePartietransmisetransmise

Partie absorbéePartie absorbée

Page 11: Modélisation radiométrique Le modèle d’illumination OpenGL

n

dAO

x

ux'u'

θ' θ dωdω'

Fonction de réflectance bidirectionnelle

Caractéristiques optiques des objetsCaractéristiques optiques des objetsExpression de la réExpression de la ré--émission : la BRDFémission : la BRDF–– Bidirectional ReflectionBidirectional Reflection Distribution Distribution FunctionFunction–– Distribution géométrique de l’énergie réDistribution géométrique de l’énergie ré--émise en émise en

fonction de la direction d’incidencefonction de la direction d’incidence

Page 12: Modélisation radiométrique Le modèle d’illumination OpenGL

Caractéristiques optiques des objetsCaractéristiques optiques des objetsLa BRDF dépend principalement de la rugosité La BRDF dépend principalement de la rugosité de la surfacede la surface

Page 13: Modélisation radiométrique Le modèle d’illumination OpenGL

Modélisation de la BRDFModélisation de la BRDFDécomposition dans une base de fonctions Décomposition dans une base de fonctions simplessimples

+ +

=

Diffus SpéculaireSpéculaire “diffus”

Page 14: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle d’illuminationModèle d’illuminationLes modèles locauxLes modèles locaux–– La luminance à la surface d’un objet est calculée à La luminance à la surface d’un objet est calculée à

partirpartir•• Des paramètres de l’objetDes paramètres de l’objet•• Des paramètres des sources de lumièreDes paramètres des sources de lumière

–– Un objet est considéré comme isoléUn objet est considéré comme isolé

Les modèles globauxLes modèles globaux–– La luminance à la surface d’un objet est calculée à La luminance à la surface d’un objet est calculée à

partirpartir•• Des paramètres de tous les objets de la scèneDes paramètres de tous les objets de la scène•• Des paramètres des sources de lumièreDes paramètres des sources de lumière

Page 15: Modélisation radiométrique Le modèle d’illumination OpenGL

Les modèles d’illumination locauxLes modèles d’illumination locauxLe modèle de lumière ambianteLe modèle de lumière ambiante–– L’objet est plongé dans une lumière ambianteL’objet est plongé dans une lumière ambiante–– Coefficient de réCoefficient de ré--émission de l’ambiance kémission de l’ambiance kaa

–– Lumière uniforme d’intensité Lumière uniforme d’intensité iiaa

Couleur visible d’un point P de l’objetCouleur visible d’un point P de l’objet

aa IkPI =)(

P

Page 16: Modélisation radiométrique Le modèle d’illumination OpenGL

Le modèle de lumière ambianteLe modèle de lumière ambianteModèle indépendant deModèle indépendant de

–– La position des sourcesLa position des sources–– La position de l’observateurLa position de l’observateur

UtilisationUtilisation–– Simulation de l’éclairage Simulation de l’éclairage

ambiant dans une imageambiant dans une image

Page 17: Modélisation radiométrique Le modèle d’illumination OpenGL

P

θi

Li

N

Les modèles d’illumination locauxLes modèles d’illumination locauxLe modèle de Le modèle de lambertlambert ou modèle diffusou modèle diffus–– La surface réLa surface ré--émet uniformément dans toutes les émet uniformément dans toutes les

directionsdirections–– Coefficient de réCoefficient de ré--émission diffuse émission diffuse kkdd

–– N sources de lumière lN sources de lumière lii ponctuelles d’intensité ponctuelles d’intensité iilili

Couleur visible d’un point P de l’objetCouleur visible d’un point P de l’objet

( )∑=

=N

iiLid i

IPLViskPI1

cos,)( θ

⎩⎨⎧= sinon 0

voit si 1),( PLPLVis ii

Page 18: Modélisation radiométrique Le modèle d’illumination OpenGL

Le modèle de LambertLe modèle de LambertModèle dépendant deModèle dépendant de–– La position relative de l’objet La position relative de l’objet

et des sources (rayon incident)et des sources (rayon incident)

Modèle indépendant deModèle indépendant de–– La position de l’observateurLa position de l’observateur

(rayon ré(rayon ré--émis)émis)

UtilisationUtilisation–– Simulation de surfaces parfaitement mattesSimulation de surfaces parfaitement mattes

Page 19: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle de LambertModèle de Lambert

Page 20: Modélisation radiométrique Le modèle d’illumination OpenGL

Les modèles d’illumination locauxLes modèles d’illumination locauxLe modèle de Le modèle de PhongPhong

–– Effet spéculaire diffusEffet spéculaire diffus–– La surface réLa surface ré--émet symétriquement autour de la émet symétriquement autour de la

direction spéculairedirection spéculaire–– Fonction de réFonction de ré--émission en émission en coscosnPhongnPhong

–– nPhong nPhong : concentration: concentrationde la tache spéculairede la tache spéculaire

P

θi

Li

N αi

directionspéculaire

Page 21: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle de Modèle de PhongPhongLe modèle de Le modèle de phongphong

–– Coefficient de réCoefficient de ré--émission émission spéculaire spéculaire kkss

–– Concentration Concentration nphongnphong–– ααii angle entre la angle entre la

direction spéculaire et la direction spéculaire et la direction d’observationdirection d’observation

–– N sources de lumière lN sources de lumière liiponctuelles d’intensité ponctuelles d’intensité iilili

Couleur visible d’un point P de l’objet Couleur visible d’un point P de l’objet relativement à un point d’observation Orelativement à un point d’observation O

P

θi

Li

N αi

directionspéculaire

nPhongiL

N

iis i

ILPViskOPI αcos),(),(1∑=

=

O

Page 22: Modélisation radiométrique Le modèle d’illumination OpenGL

Le modèle de Le modèle de PhongPhongModèle dépendant deModèle dépendant de

–– La position des sources La position des sources (rayon incident) (rayon incident)

–– La position de l’observateurLa position de l’observateur(rayon ré(rayon ré--émis)émis)

UtilisationUtilisation–– Simulation des surfaces brillantesSimulation des surfaces brillantes

Page 23: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle de Modèle de PhongPhong

Page 24: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle local d’illuminationModèle local d’illuminationModèle local d’illumination classiqueModèle local d’illumination classique–– Somme des trois modèles précédentsSomme des trois modèles précédents

∑=

++=N

i

nPhongisidLiaa kkILPVisIkOPI

i1)coscos(),(),( αθ

Page 25: Modélisation radiométrique Le modèle d’illumination OpenGL

Limites du modèle local d’illuminationLimites du modèle local d’illuminationBilan local de l’énergie reçue depuis les sources Bilan local de l’énergie reçue depuis les sources pour les points visibles depuis l’observateurpour les points visibles depuis l’observateur

L1

α1

β1

α2 β2

L2

P

Page 26: Modélisation radiométrique Le modèle d’illumination OpenGL

Limites du modèle local d’illuminationLimites du modèle local d’illuminationPas d’éclairage indirect : seules les sources Pas d’éclairage indirect : seules les sources émettent de l’énergieémettent de l’énergie

P

Page 27: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle d’illumination Modèle d’illumination OpenGLOpenGL== Modèle localModèle local++ Extension des paramètres des sources de lumièreExtension des paramètres des sources de lumière–– Pas de traitement des ombres par le modèle Pas de traitement des ombres par le modèle

d’illuminationd’illumination++ Fonction d’atténuationFonction d’atténuation

–– ddii=PL=PLii : distance entre le point P et la source L: distance entre le point P et la source Lii

–– kkcc : GL_CONSTANT_ATTENUATION: GL_CONSTANT_ATTENUATION–– kkll : GL_LINEAR_ATTENUATION: GL_LINEAR_ATTENUATION–– kkqq : GL_QUADRATIC_ATTENUATION: GL_QUADRATIC_ATTENUATION

Page 28: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle d’illumination Modèle d’illumination OpenGLOpenGLComposantes du modèle Composantes du modèle openglopengl–– Lumière ambiante ALumière ambiante A–– Sources de lumière lSources de lumière lii

•• Composante ambiante laComposante ambiante laii

•• Composante diffuse Composante diffuse ldldii

•• Composante spéculaire Composante spéculaire lslsi i

–– Matériaux des surfacesMatériaux des surfaces•• Émission propre EÉmission propre E•• Diffusion de la lumière ambiante kDiffusion de la lumière ambiante kaa

•• Réflexion diffuse Réflexion diffuse kkdd

•• Réflexion spéculaire des sources Réflexion spéculaire des sources kkss

•• Concentration de la réflexion spéculaire NConcentration de la réflexion spéculaire N

GL_AMBIENTGL_DIFFUSE

GL_SPECULAR

GL_EMISSIONGL_AMBIENTGL_DIFFUSE

GL_SPECULARGL_SHININESS

( ) ( ) ( )[ ]∑=

++++=n

ii

Nisiidiaiatta LskLdkLakdfAkEL

1.cos..cos.... βα

Page 29: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèle d’illumination Modèle d’illumination OpenGLOpenGL

directionspéculairepure

sourcei

αiβid i

( ) ( ) ( )[ ]∑=

++++=n

ii

Nisiidiaiatta LskLdkLakdfAkEL

1.cos..cos.... βα

Page 30: Modélisation radiométrique Le modèle d’illumination OpenGL

La couleur des objets La couleur des objets OpenGLOpenGLDeux modes de gestion de la couleur :Deux modes de gestion de la couleur :–– Activation / désactivation du modèle d’illuminationActivation / désactivation du modèle d’illumination

Modèle d’illumination désactivé Modèle d’illumination désactivé –– glColorglColor**–– Affectation d’une couleur uniforme par objetAffectation d’une couleur uniforme par objet

Modèle d’illumination et sources de lumière Modèle d’illumination et sources de lumière activés activés –– Matériaux et sources de lumièreMatériaux et sources de lumière–– La couleur dépendLa couleur dépend

•• Des composantes du matériauDes composantes du matériau•• De la position et des composantes de la lumièreDe la position et des composantes de la lumière

glDisable(GL_LIGHTING);

glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);

Page 31: Modélisation radiométrique Le modèle d’illumination OpenGL

Sources de lumière GLSources de lumière GLJusqu’à 8 sourcesJusqu’à 8 sourcesSources de lumières ponctuellesSources de lumières ponctuelles–– Position Position –– ComposantesComposantes

•• AmbianteAmbiante•• DiffuseDiffuse•• SpéculaireSpéculaire

Sources directionnelles (spot)Sources directionnelles (spot)–– DirectionDirection–– ConcentrationConcentration–– Angle d’ouvertureAngle d’ouverture

GL_LIGHT0…GL_LIGHT7

GL_POSITION

GL_AMBIENTGL_DIFFUSE

GL_SPECULAR

GL_SPOT_DIRECTIONGL_SPOT_EXPONENT

GL_SPOT_CUTOFF

Page 32: Modélisation radiométrique Le modèle d’illumination OpenGL

Exemple de création de sourcesExemple de création de sources/* Fonction d/* Fonction d ’initialisation des objets */’initialisation des objets */void initvoid init((voidvoid)){ { Glfloat Glfloat ambiance[]={0.1,0.1,0.1,1.0};ambiance[]={0.1,0.1,0.1,1.0};

GlfloatGlfloat diffusion[]={0.6,0.6,0.8,1.0};diffusion[]={0.6,0.6,0.8,1.0};Glfloat speculaireGlfloat speculaire[]={0.8,0.8,0.8,1.0};[]={0.8,0.8,0.8,1.0};Glfloat Glfloat position[]={0.0,0.0,2.0,1.0};position[]={0.0,0.0,2.0,1.0};

/* définition des paramètres de la source n°0 *//* définition des paramètres de la source n°0 */glLightfvglLightfv(GL_LIGHT0,GL_AMBIENT,ambiance);(GL_LIGHT0,GL_AMBIENT,ambiance);glLightfvglLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse);(GL_LIGHT0,GL_DIFFUSE,diffuse);glLightfvglLightfv(GL_LIGHT0,GL_SPECULAR,(GL_LIGHT0,GL_SPECULAR,speculairespeculaire););glLightfvglLightfv(GL_LIGHT0,GL_POSITION,position);(GL_LIGHT0,GL_POSITION,position);

:: :: :: :: :: :: :: ::}}

Page 33: Modélisation radiométrique Le modèle d’illumination OpenGL

Paramètres du modèle d’illumination GLParamètres du modèle d’illumination GLLes matériauxLes matériaux–– Pour chacun des cotés des facettesPour chacun des cotés des facettes

•• Défini par l’ordre des sommetsDéfini par l’ordre des sommets

–– ComposantesComposantes•• Diffusion de l’ambiantDiffusion de l’ambiant•• Diffusion des sourcesDiffusion des sources

•• Réflexion spéculaire des sourcesRéflexion spéculaire des sources•• ConcentrationConcentration•• Émission propreÉmission propre

GL_FRONT, GL_BACK,GL_FRONT_AND_BACK

GL_AMBIENTGL_DIFFUSE

GL_AMBIENT_AND_DIFFUSEGL_SPECULAR

GL_SHININESSGL_EMISSION

Page 34: Modélisation radiométrique Le modèle d’illumination OpenGL

Modèles différents sur les facesModèles différents sur les facesMatériaux différentsMatériaux différents–– gglLightModelilLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE)(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE)

–– glMaterialglMaterial[[fdfd][v](faces,mode,var)][v](faces,mode,var)

–– faces : faces : GL_FRONTGL_FRONT, , GL_GL_ BACKBACK, , GL_GL_ FRONT_AND_BACKFRONT_AND_BACK

–– mode : mode : GL_GL_ AMBIENTAMBIENT, , GL_GL_ DIFFUSEDIFFUSE, , GL_GL_ SPECULARSPECULAR,…,…–– var : donnéesvar : données

Modèle de visualisationModèle de visualisation–– glPolygonModeglPolygonMode(faces,mode)(faces,mode)

–– Faces : Faces : GL_FRONTGL_FRONT, , GL_GL_ BACKBACK, , GL_GL_ FRONT_AND_BACKFRONT_AND_BACK

–– Mode : Mode : GL_GL_ POINTPOINT, , GL_GL_ LINELINE, , GL_GL_ FILLFILL

Page 35: Modélisation radiométrique Le modèle d’illumination OpenGL

Exemple de création d’un matériauxExemple de création d’un matériaux/* Fonction d/* Fonction d ’initialisation des objets */’initialisation des objets */void initvoid init((voidvoid)){ { Glfloat Glfloat ambiance[]={0.7,0.7,0.7,1.0};ambiance[]={0.7,0.7,0.7,1.0};

GlfloatGlfloat diffusion[]={0.1,0.5,0.8,1.0};diffusion[]={0.1,0.5,0.8,1.0};Glfloat speculaireGlfloat speculaire[]={1.0,1.0,1.0,1.0};[]={1.0,1.0,1.0,1.0};Glfloat Glfloat concentre[]={5.0};concentre[]={5.0};

glPushMatrixglPushMatrix();();:: :: :: :: :: :: :: ::

/* définition du matériaux courant *//* définition du matériaux courant */glMaterialfvglMaterialfv(GL_FRONT,GL_AMBIENT,ambiance);(GL_FRONT,GL_AMBIENT,ambiance);glMaterialfvglMaterialfv(GL_FRONT,GL_DIFFUSE,diffuse);(GL_FRONT,GL_DIFFUSE,diffuse);glMaterialfvglMaterialfv(GL_FRONT,GL_SPECULAR,(GL_FRONT,GL_SPECULAR,speculairespeculaire););glMaterialfvglMaterialfv(GL_FRONT,GL_SHININESS,concentre);(GL_FRONT,GL_SHININESS,concentre);

/* application sur une sphère *//* application sur une sphère */glutSolidSphereglutSolidSphere(1.0,16,16);(1.0,16,16);

glPopMatrixglPopMatrix();();}}

Page 36: Modélisation radiométrique Le modèle d’illumination OpenGL

Exemple d’applications de facesExemple d’applications de faces

Page 37: Modélisation radiométrique Le modèle d’illumination OpenGL

Benoît Benoît PirandaPirandaÉquipe SISARÉquipe SISARUniversité de Marne La ValléeUniversité de Marne La Vallée

Synthèse d’image temps réelSynthèse d’image temps réel

Les effets spéciauxLes effets spéciaux

Page 38: Modélisation radiométrique Le modèle d’illumination OpenGL

Les effets spéciauxLes effets spéciauxLe modèle Le modèle radiométriqueradiométrique au service de la au service de la géométriegéométrie–– LissageLissage

•• Lissage de Lissage de gouraudgouraud

–– TexturesTextures•• Plaquage de texturePlaquage de texture•• Textures Textures multimulti--échelleéchelle•• Bump mappingBump mapping

–– Effets atmosphériquesEffets atmosphériques

Page 39: Modélisation radiométrique Le modèle d’illumination OpenGL

Lissage de GouraudLissage de GouraudApplication du modèle local sur un maillage de Application du modèle local sur un maillage de facettesfacettesInconvénient :Inconvénient :–– discontinuité de la fonction d’illumination sur la discontinuité de la fonction d’illumination sur la

surfacesurface

Solution : lissage de Solution : lissage de GouraultGourault

Page 40: Modélisation radiométrique Le modèle d’illumination OpenGL

Lissage de GouraudLissage de GouraudDonnéesDonnées–– Couleurs au sommet des facettesCouleurs au sommet des facettes

PrincipePrincipe–– Réaliser un dégradé de couleur entre les sommetsRéaliser un dégradé de couleur entre les sommets

Page 41: Modélisation radiométrique Le modèle d’illumination OpenGL

II11

II22II33

IIPP

Lissage de GouraudLissage de GouraudUtiliser le modèle local pour calculer l’intensité Utiliser le modèle local pour calculer l’intensité aux sommets des polygonesaux sommets des polygonesCalculer la couleur d’un point du polygone par Calculer la couleur d’un point du polygone par

interpolation des couleurs aux sommetsinterpolation des couleurs aux sommets

Page 42: Modélisation radiométrique Le modèle d’illumination OpenGL

θcos)( Ld IkPI =

Lissage de GouraudLissage de GouraudPour appliquer un modèle local sur un sommet Pour appliquer un modèle local sur un sommet de polygone, on doit calculer la normale en ce de polygone, on doit calculer la normale en ce pointpoint–– utilise la moyenne des facettes adjacentesutilise la moyenne des facettes adjacentes

P

θi

Li

N

Page 43: Modélisation radiométrique Le modèle d’illumination OpenGL

Lissage de GouraudLissage de GouraudInterpolation des couleursInterpolation des couleurs

( )

( )

( )12

2122

2

1

xxxx

IIII

yyyy

IIII

yyyy

IIII

pp

cb

pbcbb

ab

pbabb

−−−=

−−−=

−−−=yb

yp

ya

ycIc

Ib

Ia

I1 I2IP

Page 44: Modélisation radiométrique Le modèle d’illumination OpenGL

Lissage de GouraudLissage de Gouraud

Page 45: Modélisation radiométrique Le modèle d’illumination OpenGL

Lissage de GouraudLissage de GouraudAvantagesAvantages–– Intégration efficace dans un algorithme de un Intégration efficace dans un algorithme de un ZbufferZbuffer–– Très rapide Très rapide –– Présent sur toutes les cartes graphiquesPrésent sur toutes les cartes graphiques–– Implémenté sous Implémenté sous OpenGLOpenGLglShadeModelglShadeModel(GL_FLAT);(GL_FLAT);glShadeModelglShadeModel(GL_SMOOTH);(GL_SMOOTH);

InconvénientInconvénient–– Ne fonctionne qu’avec des polygones convexes Ne fonctionne qu’avec des polygones convexes

Page 46: Modélisation radiométrique Le modèle d’illumination OpenGL

Lissage de Lissage de PhongPhongPrincipe :Principe :–– Interpolation des normalesInterpolation des normales–– Application du modèle d’illumination chaque pointApplication du modèle d’illumination chaque point

yb

yp

ya

yc Nc

Nb

Na

N1 N2NP

Page 47: Modélisation radiométrique Le modèle d’illumination OpenGL

Plaquage de texturesPlaquage de texturesTexturesTextures–– Variation de couleurs sur une surfaceVariation de couleurs sur une surface

•• Variation du coefficient de diffusionVariation du coefficient de diffusion

–– SourceSource•• Fonctions mathématiques 3DFonctions mathématiques 3D

BoisBoisMarbreMarbre……

•• Fonction mathématiqueFonction mathématique2d2d

FractalesFractales•• Image quelconqueImage quelconque

Page 48: Modélisation radiométrique Le modèle d’illumination OpenGL

Plaquage de texturePlaquage de texturePrincipePrincipe–– Association de coordonnées de texture sur la surface Association de coordonnées de texture sur la surface

du modèle 3Ddu modèle 3D

Page 49: Modélisation radiométrique Le modèle d’illumination OpenGL

Plaquage de texturePlaquage de textureTextures Textures multimulti--échelle : échelle : Mip mappingMip mapping–– Un surface reçoit plusieurs textures différentesUn surface reçoit plusieurs textures différentes

•• Affichées suivant l’éloignement de la surface par rapport au Affichées suivant l’éloignement de la surface par rapport au point d’observationpoint d’observation

•• Réduire le temps de plaquageRéduire le temps de plaquageRéduire le rapport (taille projeté / taille réel)Réduire le rapport (taille projeté / taille réel)

•• Éviter les effets d’interpolation Éviter les effets d’interpolation

Page 50: Modélisation radiométrique Le modèle d’illumination OpenGL

Plaquage de texturePlaquage de textureTexture de bosse : Texture de bosse : bump mappingbump mapping–– Variation de la normale sur une surfaceVariation de la normale sur une surface–– Effet d’optique : Effet d’optique :

•• Impression de bossesImpression de bosses•• Surface de base inchangéeSurface de base inchangée

Page 51: Modélisation radiométrique Le modèle d’illumination OpenGL

Textures sous Textures sous OpenGLOpenGLTextureTexture–– Couverture d’un objet par une imageCouverture d’un objet par une image

•• Couleur imposée par la textureCouleur imposée par la texture•• Couleur modulée par l’illuminationCouleur modulée par l’illumination

–– Résolution imposée de la forme : 2Résolution imposée de la forme : 2n n x 2x 2m m

Réalisation d’un objet texturéRéalisation d’un objet texturé–– Créer ou charger la texture,Créer ou charger la texture,–– Indiquer comment la texture est plaquées sur l’objet,Indiquer comment la texture est plaquées sur l’objet,–– Activer le Activer le texturagetexturage,,–– Modéliser l’objet à texturerModéliser l’objet à texturer

•• Associer à chaque sommet du modèle 3D des coordonnées Associer à chaque sommet du modèle 3D des coordonnées dans le repère de texturedans le repère de texture

Page 52: Modélisation radiométrique Le modèle d’illumination OpenGL

Effets spéciaux : texturesEffets spéciaux : texturesVariation de couleurs sur une surfaceVariation de couleurs sur une surface–– Dirigée par une imageDirigée par une image

texture

(0,2) (1,2)

(0,0) (1,0)

facette avec coordonnées de texture facettes illuminées et texturées

Page 53: Modélisation radiométrique Le modèle d’illumination OpenGL

Paramètres de textureParamètres de textureFormat de plaquage de la textureFormat de plaquage de la texture–– Une texture peut être plaquée une fois ou répétée sur Une texture peut être plaquée une fois ou répétée sur

la facette associée.la facette associée.–– Fonction Fonction glTexParameterglTexParameter*()*()–– WRAP_S et WRAP_T : WRAP_S et WRAP_T : deux directions de la texturedeux directions de la texture

•• GL_CLAMP : plaquage simpleGL_CLAMP : plaquage simple•• GL_REPEAT : répétéeGL_REPEAT : répétée

–– MAG_FILTER et MIN_FILTER : MAG_FILTER et MIN_FILTER : •• lissage des couleurs de texture à l’agrandissement et au lissage des couleurs de texture à l’agrandissement et au

rétrécissement.rétrécissement.

Page 54: Modélisation radiométrique Le modèle d’illumination OpenGL

Exemple d’application de textureExemple d’application de texture

/* Fonction d/* Fonction d ’initialisation des objets */’initialisation des objets */void initvoid init((voidvoid)){ { glPixelStoreiglPixelStorei(GL_UNPACK_ALIGNMENT,1);(GL_UNPACK_ALIGNMENT,1);

glGenTexturesglGenTextures(1,&(1,&texNametexName););/* activation de la texture courante *//* activation de la texture courante */

glBindTextureglBindTexture(GL_TEXTURE_2D,(GL_TEXTURE_2D,texNametexName););/* paramètres de plaquage de la texture *//* paramètres de plaquage de la texture */glTexParameterglTexParameter(GL_TEXTURE2D,GL_TEXTURE_WRAP_S,GL_REPEAT);(GL_TEXTURE2D,GL_TEXTURE_WRAP_S,GL_REPEAT);glTexParameterglTexParameter(GL_TEXTURE2D,GL_TEXTURE_WRAP_T,GL_REPEAT);(GL_TEXTURE2D,GL_TEXTURE_WRAP_T,GL_REPEAT);glTexParameterglTexParameter((GL_TEXTURE2D,GL_TEXTURE_MAG_FILTER,GL_NEARESTGL_TEXTURE2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST););glTexParameterglTexParameter((GL_TEXTURE2D,GL_TEXTURE_MIN_FILTER,GL_NEARESTGL_TEXTURE2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST););

/* création de la texture à partir du /* création de la texture à partir du bitmapbitmap */*/glTexImage2D(GL_TEXTURE2D,0,GL_RGBA,glTexImage2D(GL_TEXTURE2D,0,GL_RGBA,larglarg,haut,0,,haut,0,

GL_RGBA,GL_UNSIGNED_BYTE,GL_RGBA,GL_UNSIGNED_BYTE,bitmapbitmap); ); }}

Page 55: Modélisation radiométrique Le modèle d’illumination OpenGL

Mipmapping Mipmapping sous sous OpenGLOpenGLUtilisation de fonctions GLUUtilisation de fonctions GLU–– Construction de l’ensemble des textures à partir Construction de l’ensemble des textures à partir

d’une image de résolution maximumd’une image de résolution maximum

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);gluBuild2DMipmaps(GL_TEXTURE_2D,GL_RGB,lx,ly,GL_RGBA, GL_UNSIGNED_BYTE,image);

2n

2m

2n-1

2m-1

2

2

Page 56: Modélisation radiométrique Le modèle d’illumination OpenGL

Effets atmosphériqueEffets atmosphérique4 phénomènes simultanés4 phénomènes simultanés

=dx

uxdI ),( ),( uxIks−),( uxIka−),( uxIk ea ∫+S

s uduxIuupk ')',()',(4π

DiffusionAbsorptionÉmission Diffusion entrante

Page 57: Modélisation radiométrique Le modèle d’illumination OpenGL
Page 58: Modélisation radiométrique Le modèle d’illumination OpenGL

Effets atmosphériques sous Effets atmosphériques sous OpenGLOpenGLCas particulierCas particulier–– Milieu homogène isotropeMilieu homogène isotrope

Deux phénomènes sont simulésDeux phénomènes sont simulés–– L’absorption / diffusion : KL’absorption / diffusion : KTT = K= Kaa + + KKss

–– La diffusion entranteLa diffusion entrante

Loi de Bouguer / LambertLoi de Bouguer / Lambert–– Énergie reçue sur un chemin SÉnergie reçue sur un chemin S00SS11 dans un milieu dans un milieu

participant caractérisé par Kparticipant caractérisé par KTT

( ) ( ) ( ) ⎟⎟

⎜⎜

⎛−= ∫

1

0

01

s

sT dssKexpSLSL

Page 59: Modélisation radiométrique Le modèle d’illumination OpenGL

Fonction d’absorption / diffusionFonction d’absorption / diffusionOpenGL OpenGL propose trois fonctions propose trois fonctions –– GL_FOG_EXPGL_FOG_EXP ::–– GL_FOG_EXP2 :GL_FOG_EXP2 :–– GL_FOG_LINEAR :GL_FOG_LINEAR :

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 1 2 3 4 5 6 7 8 9 10

GL_EXP(0.25)GL_EXP(0.5)GL_EXP2(0.25)GL_EXP2(0.5)GL_LINEAR

( )zdef ×−=( )2zdef ×−=

10

1zzzzf −

−=

Page 60: Modélisation radiométrique Le modèle d’illumination OpenGL

Exemple de brouillard Exemple de brouillard OpenGLOpenGL

Page 61: Modélisation radiométrique Le modèle d’illumination OpenGL

Programmation du brouillard Programmation du brouillard OpenGLOpenGL

GLfloat fcolor[]={0.5,0.5,0.8};glEnable(GL_FOG);glFogi(GL_FOG_MODE,GL_EXP); // choix de la fonctionglFogf(GL_FOG_DENSITY,0.3); // densitéglFogfv(GL_FOG_COLOR,fcolor); // couleur

GLfloat fcolor[]={0.5,0.5,0.8};glEnable(GL_FOG);glFogi(GL_FOG_MODE,GL_LINEAR); // choix de la fonctionglFogfv(GL_FOG_COLOR,fcolor); // couleurglFogf(GL_FOG_START,1); // distance de début du brouillardglFogf(GL_FOG_END,1); // distance de fin du brouillard

Page 62: Modélisation radiométrique Le modèle d’illumination OpenGL

Exemples de programme Exemples de programme OpenGLOpenGLSolide de révolutionSolide de révolutionBielleBielleBrasBrasSurface d’eauSurface d’eauBilleBilleTunnelTunnelBrouillardBrouillard