modélisation radiométrique le modèle d’illumination opengl
TRANSCRIPT
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
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é
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)
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é
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);
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
Quelques exemplesQuelques exemples
Quelques exemplesQuelques exemples
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
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
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
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
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”
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
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
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
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
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
Modèle de LambertModèle de Lambert
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
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
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
Modèle de Modèle de PhongPhong
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(),(),( αθ
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
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
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
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.... βα
Modèle d’illumination Modèle d’illumination OpenGLOpenGL
directionspéculairepure
sourcei
αiβid i
( ) ( ) ( )[ ]∑=
++++=n
ii
Nisiidiaiatta LskLdkLakdfAkEL
1.cos..cos.... βα
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);
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
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);
:: :: :: :: :: :: :: ::}}
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
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
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();();}}
Exemple d’applications de facesExemple d’applications de faces
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
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
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
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
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
θ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
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
Lissage de GouraudLissage de Gouraud
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
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
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
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
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
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
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
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
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.
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); ); }}
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
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
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
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 −
−=
Exemple de brouillard Exemple de brouillard OpenGLOpenGL
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
Exemples de programme Exemples de programme OpenGLOpenGLSolide de révolutionSolide de révolutionBielleBielleBrasBrasSurface d’eauSurface d’eauBilleBilleTunnelTunnelBrouillardBrouillard