INFORMATIQUE GRAPHIQUE Christian Jacquemin (Université Paris 11 et LIMSI-CNRS) CORRECTION GAMMA 1/4 Deux facettes de l'intensité lumineuse http://perso.limsi.fr/jacquemi/ Couleur CORRECTION GAMMA 2/4 Cours-10-11-12.ps Page 1
CORRECTION GAMMA 3/4 Échelonnement logarithmique des intensités APPROXIMATION DE DEMI-TONS 1/4 Technique d'approximation Exemple CORRECTION GAMMA 4/4 Images à changement d'intensité perceptible APPROXIMATION DE DEMI-TONS 2/4 Exemple d'approximation Cours-10-11-12.ps Page 2
Généralisation APPROXIMATION DE DEMI-TONS 3/4 Matrice d'approximation 3x3 Dénominations DÉSIGNATION DES COULEURS APPROXIMATION DE DEMI-TONS 4/4 Contraintes sur la matrice d'approximation Spectre des couleurs visibles ANALYSE DES COULEURS Cours-10-11-12.ps Page 3
COULEUR DOMINANTE DANS UN SPECTRE Notion de couleur dominante COUVERTURE DU SPECTRE VISIBLE PAR DES COMBINAISONS RVB 2/2 Couverture du spectre des couleurs visibles par RVB COUVERTURE DU SPECTRE VISIBLE PAR DES COMBINAISONS RVB 1/2 Définition additive d'une couleur à partir de couleurs élémentaires Spectre des couleurs visibles Principe TROIS MODÈLES DE COULEUR Modèle universel Deux modèles particuliers Cours-10-11-12.ps Page 4
DIAGRAMME DE CHROMATICITÉ DE LA CIE 1/5 Motivation du diagramme de chromaticité de la CIE (Compagnie Internationale d'électricité, 1931) DIAGRAMME DE CHROMATICITÉ DE LA CIE 3/5 DIAGRAMME DE CHROMATICITÉ DE LA CIE 2/5 Combinaisons DIAGRAMME DE CHROMATICITÉ DE LA CIE 4/5 Valeurs de chromaticité Cours-10-11-12.ps Page 5
DIAGRAMME DE CHROMATICITÉ DE LA CIE 5/5 Construction géométrique du diagramme de la CIE APPLICATIONS DU DIAGRAMME DE CHROMATICITÉ DE LA CIE 2/4 Exemples APPLICATIONS DU DIAGRAMME DE CHROMATICITÉ DE LA CIE 1/4 Mesure des couleurs APPLICATIONS DU DIAGRAMME DE CHROMATICITÉ DE LA CIE 3/4 Notion de gamme de couleur définie par combinaision de trois couleurs visibles Application : gamme de couleur d'un terminal ou d'une imprimante Cours-10-11-12.ps Page 6
APPLICATIONS DU DIAGRAMME DE CHROMATICITÉ DE LA CIE 4/4 Exemple d'une gamme de couleur MODÈLE RVB (ROUGE, VERT, BLEU) 2/4 Cinq vues du cube chromatique MODÈLE RVB (ROUGE, VERT, BLEU) 1/4 Le modèle additif RVB [RGB = red, green, blue] : le cube chromatique MODÈLE RVB (ROUGE, VERT, BLEU) 3/4 Le modèle additif RVB : combinaisons additives des couleurs élémentaires Cours-10-11-12.ps Page 7
MODÈLE RVB (ROUGE, VERT, BLEU) 4/4 Comparaison des gammes de couleur de deux moniteurs RVB MODÈLE CMJ (CYAN, MAGENTA, JAUNE) 2/4 Passage du modèle RVB au modèle CMJ Combinaisions des couleurs primaires RVB et CMJ : exemple MODÈLE CMJ (CYAN, MAGENTA, JAUNE) 1/4 Le modèle soustractif CMJ [CMY = cyan, magenta, yellow] : le cube chromatique MODÈLE CMJ (CYAN, MAGENTA, JAUNE) 3/4 Combinaisions des couleurs primaires RVB et CMJ : Schéma Cours-10-11-12.ps Page 8
MODÈLE CMJ (CYAN, MAGENTA, JAUNE) 4/4 Trois vues du cube chromatique MODÈLE HSV (HUE, SATURATION, VALUE) 1/7 Le modèle HSV [Hue (Teinte), Saturation, Value (Clarté)] MODÈLE CMJK (CYAN, MAGENTA, JAUNE, NOIR) Le modèle CMJK [CMYK = cyan, magenta, yellow, black] MODÈLE HSV (HUE, SATURATION, VALUE) 2/7 Hexacone chromatique Cours-10-11-12.ps Page 9
MODÈLE HSV (HUE, SATURATION, VALUE) 3/7 Coupe de l'hexacone chromatique MODÈLE HSV (HUE, SATURATION, VALUE) 5/7 Lien de HSV vers RVB MODÈLE HSV (HUE, SATURATION, VALUE) 4/7 Répartition des teintes sur le cercle chromatique MODÈLE HSV (HUE, SATURATION, VALUE) 6/7 Passage HSV->RVB (H appartient à [0,1]) // une couleur totalement insaturée a toutes ses composantes à V si S = 0 alors R = G = B = V // on recherche le secteur dans lequel se trouve la couleur // et la fraction du secteur auquel elle se situe sinon secteur = ent(6*h) et frac = secteur - ent(6*h) // par rapport au cube chromatique RVB, // la valeur correspond à une homothétie de rapport V // et la saturation à une translation de l'orgine // Soit le premier secteur. Le code de la couleur h,s,v // du début du secteur C0 = (v, v(1-s), v(1-s)) // Le code de la couleur de la fin du secteur C1 = (v, v, v(1-s)) // La couleur à la position frac par interpolation Cfrac = (1 - frac)c0 + frac C1 = (v, v(1-s(1-frac)), v(1-s)) // on calcule de même les conversions pour les 5 autres secteurs Cours-10-11-12.ps Page 10
MODÈLE HSV (HUE, SATURATION, VALUE) 7/7 Passage RVB->HSV // la valeur est le maximum de R, V et B M = max(r, V, B) = v // valeur m = min(r, V, B) = v(1 - s) // gris // la saturation est 0 si toutes les couleurs sont // à zéro, sinon c'est la proportion de la valeur représentée // par l'ecart entre le min et le max S = (M - m) / M // si la saturation est nulle (un ton de gris) // la teinte est non définie si S = 0 alors H indéfinie // sinon on recherche la couleur de valeur maximale // supposons que ce soit le rouge sinon si R = M // la couleur résultat est entre le jaune et le magenta H = 1/6. (V - B) / (M - m) // on translate entre 0 et 1 si nécessaire si H <= 0 alors H += 1.0 // on calcule de même les conversions pour les 2 autres couleurs MODÈLE HLS (HUE, LIGHTNESS, SATURATION) 2/2 Double hexacone chromatique MODÈLE HLS (HUE, LIGHTNESS, SATURATION) 1/2 Le modèle HLS [Hue (Teinte), Lightness (Clarté), Saturation] Texturage Cours-10-11-12.ps Page 11
Application de texture BASES DU TEXTURAGE Cas particulier : texturage d'une surface plane // aile gauche du papillon glbegin(gl_quads); // coordonnées dans la texture, coordonnées dans le modèle gltexcoord2f(0.0, 0.0); glvertex3f(1.0, 0.0, 0.0); gltexcoord2f(0.0, 1.0); glvertex3f(1.0, 10.0, 0.0); gltexcoord2f(1.0, 0.6); glvertex3f(4.0, 6.0, 0.0); gltexcoord2f(1.0, 0.4); glvertex3f(4.0, 4.0, 0.0); glend(); FILTRAGE DE TEXTURE EN OpenGL Paramétrage du filtrage en OpenGL gltexparameter{if}(glenum target, Glenum pname, TYPE param); GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_FILTER GL_NEAREST, GL_LINEAR GL_NEAREST, GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LINEAR EXEMPLE DE SURFACE TEXTURÉE Exemple de surface texturée TUILAGE DE TEXTURE (TILING) 1/3 Répétition de texture en cas de coordonnées de textures hors du rectangle canonique Cours-10-11-12.ps Page 12
TUILAGE DE TEXTURE (TILING) 2/3 Exemple de répétition de texture COMBINAISON TEXTURE / FRAGMENT 1/5 Combinaison ombrage/texture TUILAGE DE TEXTURE (TILING) 3/3 Paramétrage du tuilage en OpenGL gltexparameter{if}(glenum target, Glenum pname, TYPE param); GL_TEXTURE_WRAP_ S GL_TEXTURE_WRAP_ T GL_CLAMP, GL_REPEAT GL_CLAMP, GL_REPEAT COMBINAISON TEXTURE / FRAGMENT 2/5 Paramétrage de la modulation en OpenGL gltexenv{if}( GL_TEXTURE_ENV, Glenum pname, TYPE param); GL_TEXTURE_ENV_MOD E GL_MODULATE, GL_DECAL, GL_BLEND, GL_REPLACE gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_DECAL); glenable(gl_blend); glblendfunc(gl_src_alpha, GL_ONE_MINUS_SRC_ALPHA); gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_DECAL); Cours-10-11-12.ps Page 13
COMBINAISON TEXTURE / FRAGMENT 3/5 Paramétrage de la modulation en OpenGL (suite) gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_MODULATE); glenable(gl_blend); glblendfunc(gl_src_alpha, GL_ONE_MINUS_SRC_ALPHA); gltexenvfv(gl_texture_env, GL_TEXTURE_ENV_COLOR, white_transparent ); gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_BLEND); COMBINAISON TEXTURE / FRAGMENT 5/5 Paramétrage de la modulation en OpenGL (suite) GL_MODULAT Cv=CtCf et Av=AtAf E GL_DECAL GL_BLEND Cv=(1-At)Cf+AtCt et Av=Af Cv=(1-Ct)Cf+CtCe (Ce couleur environnement) et Av=AtAf GL_REPLACE Cv=Ct et Av=At COMBINAISON TEXTURE / FRAGMENT 4/5 Paramétrage de la modulation en OpenGL (suite) DEUX MODES D'INTERPOLATION DE TEXTURES : LINÉAIRE VS. PERSPECTIVE 1/2 Un problème, deux solutions Cours-10-11-12.ps Page 14
DEUX MODES D'INTERPOLATION DE TEXTURES : LINÉAIRE VS. PERSPECTIVE 2/2 INTERPOLATION LINÉAIRE 2/2 Calcul du point source en scan-line dans le cadre d'une interpolation linéaire Interpolation linéaire : principes INTERPOLATION LINÉAIRE 1/2 Application en tracé d'un quadrilatère texturé INTERPOLATION EN PERSPECTIVE : FORMULES 1/4 Interpolation en perspective vs. interpolation linéaire Interpolation en perspective : problème Cours-10-11-12.ps Page 15
INTERPOLATION EN PERSPECTIVE : FORMULES 2/4 Interpolation en perspective : schéma INTERPOLATION EN PERSPECTIVE : FORMULES 4/4 Calcul de la relation entre f et g INTERPOLATION EN PERSPECTIVE : FORMULES 3/4 Expressions de f et g INTERPOLATION EN PERSPECTIVE : APPLICATION 1/4 Représentation de la relation entre f et g Cours-10-11-12.ps Page 16
INTERPOLATION EN PERSPECTIVE : APPLICATION 2/4 Tracé d'une texture image INTERPOLATION EN PERSP. : APPLICATION 4/4 Recherche de points sur la texture d'origine dans un algo. de scan-line INTERPOLATION EN PERSPECTIVE : APPLICATION 3/4 Construction en perspective et combinaisons affines INTRODUCTION DE L'INTERPOLATION EN PERSPECTIVE DANS LE PIPELINE GRAPHIQUE Nouvelle chaîne graphique Cours-10-11-12.ps Page 17
OMBRAGES PAR PROJECTION 1/6 Rendu d'ombres portées planes par projection ou texturage OMBRAGES PAR PROJECTION 3/6 Ombrage par texture: techniques avancées Précautions Ombrage par texture OMBRAGES PAR PROJECTION 2/6 Ombrage par rendu sombre OMBRAGES PAR PROJECTION 4/6 Cours-10-11-12.ps Page 18
OMBRAGES PAR PROJECTION 5/6 Ombrage par rendu sombre: précautions Défintion BILLBOARDS 1/9 Autres techniques d'ombrage OMBRAGES PAR PROJECTION 6/6 Orientations BILLBOARDS 2/9 Cours-10-11-12.ps Page 19
Orientations: illustration BILLBOARDS 3/9 BILLBOARDS 5/9 BILLBOARDS 4/9 Orientations: calcul de la transformation GLfloat Mmv[16]; glgetfloatv(gl_modelview_matrix, Mmv); Extensions (suite et fin) BILLBOARDS 6/9 Cours-10-11-12.ps Page 20
BILLBOARDS 7/9 Avantages et inconvénients de billboards BILLBOARDS 9/9 Déformation d'un imposteur en vue de biais Résolution BILLBOARDS 8/9 Suppressions de parties cachées Cours-10-11-12.ps Page 21
ÉLIMINATION DE FACES ET LIGNES CACHÉES Définition du problème Algorithmes Exemple UN CAS PARTICULIER DE FACES CACHÉES : LES FACES ARRIÈRE 1/3 EXEMPLE D'ÉLIMINATION DE FACES CACHÉES UN CAS PARTICULIER DE FACES CACHÉES : LES FACES ARRIÈRE 2/3 Définition Cours-10-11-12.ps Page 22
UN CAS PARTICULIER DE FACES CACHÉES : LES FACES ARRIÈRE 3/3 Application INFORMATIONS UTILES POUR LA SUPPRESSION DES PARTIES CACHÉES 1/2 Points Faces PRÉCISION OBJET VS. PRÉCISION IMAGE Algorithme à précision objet Algorithme à précision image INFORMATIONS UTILES POUR LA SUPPRESSION DES PARTIES CACHÉES 2/2 Cours-10-11-12.ps Page 23
ALGORITHME DE BASE : LE Z-BUFFER (OU DEPTH BUFFER) 1/3 Données Algorithme ALGORITHME DE BASE : LE Z-BUFFER 3/3 Mise en oeuvre dans OpenGL glenable(gl_depth_test); gldisable(gl_depth_test); ALGORITHME DE BASE : LE Z-BUFFER 2/3 Avantages Inconvénients Principes ALGORITHMES DE LISTES DE PRIORITÉ 3 algorithmes Cours-10-11-12.ps Page 24
Algorithme ALGORITHME DU PEINTRE «INSOUCIANT» 1/3 Problème ALGORITHME DU PEINTRE «INSOUCIANT» 3/3 Causes d'erreur ALGORITHME DU PEINTRE «INSOUCIANT» 2/3 Cas d'échec ALGORITHME DE L'ARBRE BINAIRE DE PARTITION DE L'ESPACE 1/7 Algorithme Utilisation Cours-10-11-12.ps Page 25
ALGORITHME DE L'ARBRE BINAIRE DE PARTITION DE L'ESPACE 2/7 Construction de l'arbre binaire en 2D Remarque ALGORITHME DE L'ARBRE BINAIRE DE PARTITION DE L'ESPACE 4/7 Extension à une scène en 3D ALGORITHME DE L'ARBRE BINAIRE DE PARTITION DE L'ESPACE 3/7 Construction de l'arbre binaire en 2D ALGORITHME DE L'ARBRE BINAIRE DE PARTITION DE L'ESPACE 5/7 Tracé par parcours (infixé d'ordre variable) de l'arbre binaire Cours-10-11-12.ps Page 26
ALGORITHME DE L'ARBRE BINAIRE DE PARTITION DE L'ESPACE 6/7 Propriétés Principes ALGORITHME TRI EN PROFONDEUR 1/3 Algorithme ALGORITHME DE L'ARBRE BINAIRE DE PARTITION DE L'ESPACE 7/7 Autres applications des arbres BSP ALGORITHME TRI EN PROFONDEUR 2/3 Quelques cas problématiques dans l'algorithme du peintre «insouciant» Cours-10-11-12.ps Page 27
ALGORITHME TRI EN PROFONDEUR 3/3 Détails sur la résolution des cas problématiques Mise en oeuvre ALGORITHME DE SCAN-LINE 2/3 Principe ALGORITHME DE SCAN-LINE 1/3 Pour tous les pixels (x,ys) de la ligne de tracé { rechercher la face la plus proche qui couvre le pixel; tracer le pixel de la couleur de la face la plus proche; } Caractéristiques de cet algorithme ALGORITHME DE SCAN-LINE 3/3 Déplacement le long d'une ligne de tracé Cours-10-11-12.ps Page 28
ALGORITHME PAR SUBDIVISION DE L'ESPACE 1/4 Principe Stratégie de subdivisions ALGORITHME PAR SUBDIVISION DE L'ESPACE 3/4 Évaluation de la simplicité Divers modes d'intersection entre une région rectangulaire et une face ALGORITHME PAR SUBDIVISION DE L'ESPACE 2/4 Algorithme DessinDUneRégion( face ) { si la face est plus petite qu'un pixel { on arrête le dessin } sinon si la face est simple { on dessine la face } sinon { on subdivise la face en n sous-faces f1,f2...fn DessinDUneRégion(f1); DessinDUneRégion(f2);... DessinDUneRégion(fn); } } ALGORITHME PAR SUBDIVISION DE L'ESPACE 4/4 Tests de simplicité Cours-10-11-12.ps Page 29
TRACÉ DES COURBES Suppression des faces cachées dans les tracés de courbes Intérêt LANCÉ DE RAYON : INTRODUCTION Principe Introduction au lancé de rayon LANCÉ DE RAYON : GÉOMÉTRIE Calcul du rayon en fonction du pixel Cours-10-11-12.ps Page 30
LANCÉ DE RAYON : ALGORITHME Algorithme de tracé en pseudo-code Calcul CALCUL D'INTERSECTION AVEC LE PLAN xoy MÉTHODE GÉNÉRALE DE CALCUL D'INTERSECTION Principe Enjeu Calcul CALCUL D'INTERSECTION AVEC LA SPHÈRE CANONIQUE Trois cas Cours-10-11-12.ps Page 31
INTERSECTION AVEC DES OBJETS AYANT SUBI DES TRANSFORMATIONS GÉOMÉTRIQUES Astuce Algorithme INTERSECTION : OPTIMISATION 2/2 Recherche des volumes limites en projection INTERSECTION : OPTIMISATION 1/2 Utilisation de volumes limites ÉCLAIREMENT EN TRACÉ PAR LANCÉ DE RAYON Modèle d'éclairement Modélisation de micro-facettes Cours-10-11-12.ps Page 32
MODÈLE DE MICRO-FACETTES DE COOK-TORRANCE 1/4 Caractérisation de la distribution des orientations des facettes MODÈLE DE MICRO-FACETTES DE COOK-TORRANCE 3/4 Modéle de distribution des micro-facettes MODÈLE DE MICRO-FACETTES DE COOK-TORRANCE 2/4 Normales proches du vecteur de mi-chemin MODÈLE DE MICRO-FACETTES DE COOK-TORRANCE 4/4 Ombrage et masquage Cours-10-11-12.ps Page 33
OMBRES EN TRACÉ PAR LANCÉ DE RAYON 1/3 Ombre portée OMBRES EN TRACÉ PAR LANCÉ DE RAYON 3/3 Méthode de calcul des ombrages OMBRES EN TRACÉ PAR LANCÉ DE RAYON 2/3 Auto-ombrage RÉFLEXION ET RÉFRACTION 1/5 Les cinq composantes de la lumière dans le cas de surfaces réfléchissantes et/ou transludices Cours-10-11-12.ps Page 34
RÉFLEXION ET RÉFRACTION 2/5 Récursivité du calcul de la lumière dans le cas d'objets réfléchissants ou translucides Calcul de la lumière réfractée RÉFLEXION ET RÉFRACTION 4/5 RÉFLEXION ET RÉFRACTION 3/5 Calcul pratique de la lumière dans le cas d'objets réfléchissants ou translucides RÉFLEXION ET RÉFRACTION 5/5 Propriétés de la lumière réfractée Cours-10-11-12.ps Page 35
OBJETS CONSTRUITS 1/2 La Géométrie Constructive des Solides (Constructive Solid Geometry) Lancé de rayon OUTILS DE RENDU RÉALISTE 1/2 OBJETS CONSTRUITS 2/2 Tracé par lancé de rayon d'objets construits Renderman (scan line) OUTILS DE RENDU RÉALISTE 2/2 Cours-10-11-12.ps Page 36