Synthèse d'images I Plan du cours Fabriquer une image de synthèse : I. Introduction II. Modélisation III. Rendu & affichage Venceslas BIRI IGM Université de Marne La Vallée Synthèse d'images I II. Modélisation 63 Plan du cours I. II. Introduction Modélisation A. L’espace 3D B. Les objets C. La scène D. La lumière et la matière III. Rendu & affichage Venceslas BIRI IGM Université de Marne La Vallée Synthèse d'images I II. Modélisation B. Objets 65 Plan du cours I. II. Introduction Modélisation A. B. Venceslas BIRI IGM Université de Marne La Vallée L’espace 3D Les objets 1. Lignes & Courbes 2. Surfaces 3. 4. Objets complexes, humains Volumes C. La scène D. La lumière et la matière III. Rendu & affichage 67 1 Plan du cours II. Droites en 2D Modélisation A. Droites affines 2D – Équation axbyc 0 Objets 1. Lignes et courbes 1. 2. Modèles mathématiques ou y a x b Coordonnées polaires d’une droite – En polaire 2 paramètres suffisent également a. Droites b. Courbes paramétriques c. Splines • Mais équation plus générale, représente toutes les droites Modèles informatique a. Modélisation par segment b. Bressenham c. Antialiasing axbyc 0 cos( ) x sin( ) y 0 ρ 2. Surfaces 3. Objets complexes, humains 4. Volumes θ 68 Droites en 2D 69 Droites en 2D Transformée de Hough Transformée de Hough – But : à partir d’un ensemble de pixels d’une image, retrouver la droite qui les relie – En chaque point (x,y) passent une infinité de droite. – Méthode : • Chaque pixel (x,y) créé une courbe dans l’espace de Hough. x cos( ) y sin( ) • Chaque case de la matrice représentant l’espace de Hough s’incrémente de 1 • La case ayant la plus grande valeur représente la droite qui représente le mieux les pixels • Mais elles vérifient toute l’équation : x cos( ) y sin( ) – Espace de Hough : • Matrice NxN de valeurs des paramètres ρ et θ • Discrétisation de l’espace de Hough 70 Droites 71 Droites Droites 3D Distance d d’un point à une droite D ? P’ – Représentation cartésienne : • Une ligne en dimension est l’intersection de 2 plans a1 xb1 yc1 z d1 0 a xb yc z d 0 2 2 2 2 P avec u x P y z O D – Représentation paramétrique : P O u avec Ox O Oy O z et u x u uy u z ou P On cherche la longueur bleue : 1. Calculer la projection de P sur D 2. Calculer PP’ 3. Prendre sa norme x Ox t ux y Oy t uy z Oz t uz Calcul de P’ : P' O (OP. u) u Calcul de PP’ : PP' P' P O (OP. u) u P PO (OP. u) u Calcul de d : d PP' Attention : il est souvent intéressant de choisir u unitaire 72 73 2 Droites Courbes Autres problèmes : – Distance entre deux droites D1 et D2 : P1 u1 O1 – A l’aide de fonction pour les trois coordonnées – Représentation paramétrique : Résolution du système linéaire : D2 P2 u2 O 2 D1 P1P2.u1 0 P1P2.u2 0 Comment représenter les courbes ? x fx(t) P(x, y,z) y f y(t) z fz (t) P1 O1 t1 u1 avec P2 O2 t2 u2 x = r cos(θ) cos(θ) y = y0 + r sin(θ) z = r cos(θ/16) cos(θ/16) y = sin(x) – Intersection droite et plan – Point moyen de 2 droites, de 3 droites... 74 Courbes 75 Courbes paramétriques Comment représenter les courbes ? – A l’aide de conditions conditions (3d) sur les coordonnées – Représentation cartésienne : f ( x, y, z ) 0 P( x, y, z ) 1 f 2 ( x, y, z ) 0 y - sin(x) = 0 z=0 V0 ??? Exemple : trajectoire – Particule soumise à accélération a, munie d’une vitesse initiale V0 et situé à l’origine. dv accélération de la particule : a g z dt dP vitesse de la particule : v g t z v0 dt 2 position de la particule : OP g t z t v0 2 x t v0x y t v0y z g 76 Courbes paramétriques Repère de Fresnet : Rayon de courbure : – courbure algébrique : – Définie en tout point de paramètre t de la courbe par le vecteur : 77 Courbes paramétriques Tangente dfx dt (t) dM(t) df y v (t) dt dt dfz (t) dt t2 t v0z 2 dT (t) N(t) car T est un vecteur unitaire dt – Calcul de : (t) dT (t) . N(t) N dt T v v avec >0 positif – Rayon de courbure : (t) 1 (t) – Base orthonormale directe 78 79 3 Courbes libres Courbes libres Courbes définies par des points – Approximation • Guidée par les points – Interpolations • Passe par les points Interpolation – Linéaire, parabole, Spline CatmullCatmull-rom… Approximation – Bézier, BB-spline, β-Spline… 80 Courbes : familles 81 Courbes de Bézier NURBS Courbes de Bézier : – Courbes paramétriques épousant la forme d’une ligne brisée joignant des points prédéfinis Kochanek– Kochanek –Bartels spline uniform BB-spline • La courbe paramétrique est définie par des polynômes Natural cubique Spline nonperiodic BB -spline B-Spline Cas particulier avec 3 points : b Catmul--rom Spline Catmul 1 b01(t) (1t)b0 t b1 b11 b2 b01 Spline b0 Approximation Bézier b02 b11(t) (1t)b1 t b2 Les points de la courbe sont alors définis par : b02(t) (1t)b01(t) t b11(t) avec t0..1 Interpolation 82 Courbes de Bézier 83 Courbes de Bézier Algorithme général : • Soit m+1 points b0,b1, ... , bm et t Є [0..1] 0 i [0..m], bi (t) bi r[1..m], i[0..mr], r 1 r r 1 bi (t) (1t)bi (t) t bi1 (t) b1m-1(t) 2m évaluations ! b0 0(t) b1 0(t) bi0(t) bi+1 0(t) bm - 1 0(t) bm0(t) Propriétés : – Invariant par transformation affine b0m(t) est le point de paramètre t sur la courbe de Bézier (de degré m) b0m(t) b0m-1(t) Définitions : – Point bi : point de contrôle ou de Bézier – Polygone formé des b i : polygone de contrôle ou de Bézier – Algorithme de De Casteljau : 84 • On a besoin que de transformer les points de contrôle – Invariant par transformation affine du paramètre de parcours t – Passe par les points b 0 et bm et courbe tangente au polygone de contrôle en ces points – Enveloppe convexe On peut rajouter des poids associés à chaque point de contrôle 85 4 Courbes de Béziers Courbes de Bézier Forme de Bernstein Exemple de courbe de degré 1 1 – Les polynômes de Berstein sont définis par : m Bim(t) ti(1t)mi i 0 0 B(t) b0(t) (1t)b0 (t) t b1 (t) t[0...1] soit B(t) (1t)b0 t b1 t[0...1] • Satisfont l’équation de récurrence : m m1 m1 Bi (t) (1t)Bi (t) t Bi1 (t) – Les points de la courbe de Bézier peuvent aussi s’écrire : m m b m (t ) t i (1 t ) mi bi i 0 i Exemple de courbe de degré 2 2 2 B(t) (1t) b0 2(1t) t b1 t b2 t[0...1] 86 Splines Splines Défaut des courbes de Bézier – M points polynômes de degré MM-1 – Si on modifie un point, toute la courbe est modifiée Définition : – Soit n+1 valeurs dans [a,b] avec : a t0 t1 ...tn1tn b on définit la fonction spline de degré m par S : R R si : S C m-1(a,b) • Impossible de modifier des comportements locaux sans changer l’ensemble de la courbe 87 Idée : relier des courbes entre des groupes de points S[ti,ti1]Pm , i[0...n1] – Plusieurs possibilités Pm est l’ensemble des polynômes de degré m • Approximation : BB-splines … • Interpolation : CatmullCatmull-rom … – C’est le cas général ... Attention : spline d’ordre m = spline de degré mm-1 88 Courbes splines 89 B-Splines Définition Une courbe spline est définie par n+1 points de contrôle et n+1 fonctions de pondération : P P0 R0 (t ) Pn Rn (t ) - Les fonctions de pondérations sont définies sur des intervalles [t [tk , tk+1]. T=( =(tt0, t1,..., tn+1) est appelé vecteur de points nodaux. nodaux. - Les fonctions de pondération sont des splines d'ordre m (des polynômes par morceaux continus d'ordre m -1 aux noeuds) – On a donc : • N+1 points et N+1 nœuds • N intervalles • Des polynômes de degré m sur chaque intervalle 90 91 5 B-Splines B-Splines Cas des BB-Splines : Équations dans le cas général – Les ti s’appellent des nœuds – On se donne donc t0 t1 ... tn m tn m1 n S (t ) bmi (t ) Pi • des polynômes à définition récursive de degré m • n+1 points de contrôles Pk • n intervalles [t0,t1] , [t1,t2] ... [tn-1,tn] et donc n+1 nœuds i 0 En fait on aura besoin de n+m+1 nœuds t [t m ... t n 1 ] où b0i (t ) 1 si ti t ti 1 & ti ti 1 i b0 (t ) 0 sinon et bki (t) – Polynôme : fonction de pondération t ti i t t i1 b (t) ik 1 b (t) tik ti k 1 tik 1 ti1 k 1 Avec pour convention, si un des dénominateur est nul (nœud multiple) d’annuler le facteur correspondant 92 B-Splines 93 B-Splines Exemple des fonctions de pondération des B-Splines Différents types de BB-Spline – Lorsque les ti sont uniformément répartis, alors la BB-Spline est dite uniforme – Dans certains cas, des ti consécutifs sont égaux • Les points associés sont identiques également • Appelés nœuds multiples – B-Spline non périodique Ordre 3 2 1 Degré 2 1 0 • Nœuds placés au début et à la fin 94 B-Splines 95 B-Splines Équations dans le cas uniforme : – On peut prendre : – Degré commun à chaque courbe de Bézier – Degré 1 : BB-Spline linéaire C0 (m = 1) ti i, i [0...n m 1] • Chaque courbe de Bézier est une droite. La courbe B-Spline est le polygone formé des points de contrôle • La BB-Spline est C0 partout (continue) • Chaque début et fin de courbe de Bézier est relié à l’autre. Points de jonction = points de contrôle n S (t ) bmi (t ) Pi t [m...n 1] i 0 où b0i(t) 1 si i t i 1 i b0(t) 0 sinon et bki (t) Degré d’une BB-Spline : t i i ik 1 t i1 b (t) bk 1(t) k k 1 k P3 P1 P2 P0 96 97 6 B-Splines B-Splines – Degré 3 : BB-Spline cubique C2 (m = 3) – Degré 2 : BB-Spline quadratique C1 (m = 2) • On se donne n+3 points de contrôle On a 3n+1 points de jonction • Équivalence courbe de Bézier / Spline • Chaque courbe de Bézier sera définie par : • Chaque courbe cubique sera définie par : L’intervalle [ ti ; ti+1 ] 2 points interne b 3i+1 et b3i+2 2 points de contrôle b 3i = Pi et b3i+3 = Pi+1 L’intervalle [ ti ; ti+1 ] 2 points de Bézier interne b2i et b2i+2 1 point de contrôle b2i+1 = Pi+1 ti2 ti t t b i i1 b ti2 ti1 3i ti2 ti1 3i3 t t t t b3i2 i2 i1 b3i i1 i1 b3i3 ti2 ti1 ti2 ti1 b3i1 t t t t b2i i1 i b2i1 i1 i b2i1 ti1 ti1 ti1 ti1 avec b-1 = P0 et b2n+1 = Pn+2 98 NURBS 99 Interpolation Spline NonUniform Rational BB-Spline S (t ) b i 0 n m (t ) wi Pi b i 0 i m Famille des splines d’interpolation – Cette fois on demande explicitement que la courbe passe par les points – On rajoute des poids aux nœuds (Rational) n – L’équation devient : i • Exemple : BB-Spline linéaire ok (ordre 2 / degré 1) t [t m ... t n 1 ] – Soit n+1 nœuds ti, on a S défini par (t ) wi t [t0 , t1 ] S 0 (t ) S (t ) t [t1 , t 2 ] S (t ) 1 S n 1 (t ) t [t n 1 , t n ] 100 Interpolation Spline Natural cubic spline On veut rajouter des conditions – Interpolation S(xi)= Pi – Continuité, Si-1(xi) = Si(xi), i =1,..., =1,...,n n-1 • n-1 conditions – Dérivable 2 fois, S'i-1(xi) = S'i(xi) & S''i-1(xi) = S''i(xi) • 2*(n 2*(n--1) conditions Impose, au minimum, des polynômes de degrée 3 Total : 4n – 2 conditions Défini par S ' ' ( x ) 0 0 S ' ' ( xn ) 0 • n+1 conditions Calcul par résolution de système linéaire – Cubic interpolation spline – pour 4n inconnues – On a 2 choix 102 103 7 Spline cubique hermitienne Catmull Rom Spline Définition succincte : Très utilisées en synthèse d’images – Définie à partir de deux points p0, p1 et deux tangentes m0 et m1 104 Catmull Rom Spline Plan du cours Tangente m0 et m1 choisie telle que mk 105 III. Modélisation A. pk 1 pk 1 2 Objets 1. Lignes et courbes 1. – Parallèle au segment [Pk-1 Pk+1] – Chaque tronçon dépend de 4 points D’autres choix possibles 2. – Différence finie – Cardinal spline – Kochanek Kochanek– –Bartels spline • Avec 3 paramètres : tension, biais et continuité Modèles mathématiques a. Droites b. Courbes paramétriques c. Splines Modèles informatique a. Modélisation par segment b. Bressenham c. Antialiasing 2. Surfaces 3. Objets complexes, humains 4. Volumes 106 Modélisation de courbe 107 Modélisation par segment On travaille sur une image – Espace discret de valeur – Comment représenter les courbes ? Travailler pixel / pixel : trop cher – Discrétisation de la courbe • Travailler avec des segments – Segments : • Déformations Un espace discret ne peut rendre compte d’un espace continu • Calcul de chaque pixel, pour chaque petit déplacement de la courbe ? 108 • Facile à dessiner sur une image • Souple, permet d’affiner uniformément, choix du nombre de segment ... • Exemple avec le cercle 109 8 Modélisation par segment Bresenham Algorithme : fonction dessine(C dessine( C courbe paramétrique, réel tinit, réel tfin, int nb_segment); nb_segment); début réel t; réel pas = (tfin – tinit)/nb_segment; for(t=tinit;t<tfin;t+=pas) { segment(C(t),C(t+pas)); } fin Un algorithme optimisé de tracé de droite – Créé en 1961 par Jack Bresenham – Répond à la question : • Algorithme rapide pour allumer les pixels d’un segment (x1,y1) – (x2,y2) 110 Bresenham 111 Bresenham Approche naïve : – Algorithme approche naïve : – Cas 0 < dy < dx – Pour chaque colonne fonction tracerSegment( tracerSegment(entier entier x1, entier y1, entier x2, entier y2) entier x, y, dx, dy ; réel err, decal, incr; // Erreurs et increments dy := y2 - y1 ; dx := x2 - x1 ; y := y1 ; err := 0 ; incr := dy / dx ; decal := - 1.0 ; pour x variant de x1 jusqu’à x2 par incrément de 1 faire tracerPixel(x, y); si (err := err + incr) ≥ 0,5 alors y := y + 1 ; err := err + decal ; fin fin fin • Calculer son ordonnée avec : y y1 y2 y1 (x x1) x2x1 • Prendre la valeur entière la plus proche de y – Défauts : • Calcul de la valeur entière • Calcul en nombres rationnels • 1 pixel par colonne ? 112 Bresenham 113 Bresenham • Première erreur : Optimisation par Bresenham – Méthode • • • • Équation : F ( x, y) dx y dx y1 dy x dy x1 0 F(x,y) : distance, erreur entre la droite et un point (x,y) Si on calcule F(x+1,y+0.5), on sait quel pixel allumer De plus on a la nouvelle erreur pour la prochaine fois F(x 1, y 0.5) dx dy 2 – Optimisation : • Prendre que des valeurs entières • Pas de problème pour les incréments Reste la valeur initial On multiplie tout par 2 Si on allume le pixel du bas F(x2, y0.5) F(x1) dy Si on allume le pixel du haut F(x 2, y 1.5) F(x1) dy dx 114 115 9 Bresenham Bresenham – Algorithme fonction bresenham( bresenham(entier entier x1, entier y1, entier x2, entier y2) entier x, y, dx, dy ; entier err; // Erreurs et increments x = x1 ; y = y1 ; dy := y2 - y1 ; dx := x2 - x1 ; tracerPixel(x, y); err := - dx ; pour x variant de x1 +1 jusqu’à x2 par incrément de 1 faire err += 2*dy; si (err ≥ 0) alors y := y + 1 ; err - = 2*dx ; fin si tracerPixel(x, y); fin pour fin Bien vu mais ... – Tout les calculs en valeur entière • Efficace mais maintenant tous les calculs se font en flottants sur les cartes graphiques Coût de la conversion • Problème pour gérer l’antialiasing... 116 Antialiasing 117 Antialiasing Anti--crénelage Anti – Les droites discrètes sont peu esthétiques ... 118 Antialiasing Antialiasing Allumer les pixels – suivant leur distance au segment à tracer – On joue sur l’illumination 119 function drawLine(x1,y1,x2,y2) { ... // gerer le second point xend = round(x2) yend = y2 + gradient * (xend - x2) xgap = fpart(x2 + 0.5) xpxl2 = xend // this will be used in the main loop ypxl2 = ipart(yend) plot(xpxl2, ypxl2, rfpart(yend) * xgap) plot(xpxl2, ypxl2 + 1, fpart(yend) * xgap) // main loop for x from xpxl1 + 1 to xpxl2 - 1 do plot(x, ipart(intery), rfpart(intery)) plot(x, ipart(intery) + 1, fpart(intery)) intery = intery + gradient done } Algorithme function drawLine(x1,y1,x2,y2) { dx = x2 - x1; // On suppose x2 > x1 dy = y2 - y1; // On suppose y2 > y1 gradient = dy / dx; // Gérer le premier point xend = round(x1); yend = y1 + gradient * (xend - x1); xgap = (1 – partie_rationnelle(x1 + 0.5)); xpxl1 = xend; // premier point entier proche de xend ypxl1 = partie_entiere(yend); plot(xpxl1, ypxl1, (1 – partie_rationnelle(yend)) * xgap); plot(xpxl1, ypxl1 + 1, partie_rationnelle(yend) * xgap); next_y = yend + gradient; // Premier point d’intersection pour y ... 120 121 10 Antialiasing Plan du cours I. Introduction II. Les mathématiques de l'image III. Modélisation A. B. C. IV. Objets 1. Lignes & Courbes 2. Surfaces 3. Objets complexes, humains 4. Volumes Scènes Lumière et matière Rendu & affichage 122 Plan du cours Objets géométriques III. Modélisation A. 123 – Équation cartésienne : a x b y c z d 0 T • Normale du plan : n (a,b,c) Objets 1. 2. Lignes et courbes Surfaces 1. 2. Modèles mathématiques a. Objets géométrique simple b. Surfaces implicites – Équations paramétriques : • Soit O un point du plan, u et v deux vecteurs du plan non colinéaires Modèles informatiques a. Soupe de triangles b. Ensemble de points, surfels c. Marching cubes 3. Objets complexes, humains 4. Volumes Plan : x Ox s ux t vx y Oy s uy t vy z Oz s uz t vz • Normale : n u v 124 Cartésien / paramétrique ? 125 Objets géométriques Différents type de coordonnées Deux formes distinctes – Une représentation fondée sur une paramètrisation des coordonnées – Une représentation fondée sur une contrainte liée aux coordonnées – Deux façons de voir les courbes, les surfaces ... 126 Sphère : – Centre C et rayon R – Équation cartésienne : 2 2 2 2 (x xC) (y yC) (z zC) R 0 • Normale en P : CP – Équations paramétriques ? 127 11 Objets géométriques Différentes coordonnées Cylindre : – Axe (Oy), rayon R, hauteur h à partir de l’origine Équation cartésienne Coordonnées cartésiennes – Celles que l’on vient de voir – Utile très souvent mais ... ... pour se déplacer sur une sphère ? x2 z2 R2 0 0 y h On a défini aussi 2 autres types de coordonnées – Coordonnées cylindriques – Coordonnées sphériques Équations paramétriques ? 128 Coordonnées cylindriques M r z Coordonnées sphériques M x M y z P 129 coordonnées cartésiennes r φ x M y z coordonnées cartésiennes P θ x r cos ( ) y r sin ( ) zz r M z θ x r cos ( ) sin( ) y r sin ( ) sin( ) z r cos( ) r M coordonnées cylindriques coordonnées sphériques 130 Trigonométrie Trigonométrie Définition – Étude des rapports de distances et d’angle dans les triangles ainsi que les fonctions trigonométriques – Triangle rectangle en C cos( ) b c a sin( ) c tan( ) a b 131 Identités trigonométriques (cf. wikipedia) Parité Symétrie Addition et soustraction θ Duplication Par pythagore : cos ( ) sin ( ) 1 2 2 132 133 12 Trigonométrie : cosinus & sinus Trigonométrie : table de valeurs 134 Trigonométrie et vecteurs 135 Objets géométriques Formule avec les vecteurs – Soit u et v deux vecteurs : u – Axe (Oy), pointe en 0, angle α Pour le cosinus : v θ Cône : u . v u v cos( ) Équation cartésienne y2 cot2( )(x2 z2) Pour le sinus : u v u Équations paramétriques v sin( ) n x cos( ) y cot( ) z sin( ) avec n vecteur normal à u et v Manière de calculer les fonctions trigonométriques très efficace (si on peut éviter les racines carrées) 136 Objets géométriques 137 Surfaces implicites Ellipsoïdes – Sorte de triple ellipse, un axe pour chaque direction Définir une surface comme un potentiel – Se munir d’une fonction de potentiel f (x, y,z) 0 • Grand axe a, axe moyen b, petit axe c – La surface S représente tous les points ayant un potentiel précis : – Équation cartésienne : 2 2 x y z2 1 a2 b2 c2 Siso P(x, y,z) f (x, y,z) iso – Équations paramétriques : • f peut être une fonction analytique • Le plus souvent est défini à partir de squelette x a cos( ) cos( ) y b cos( ) sin( ) z c sin( ) On fixe un squelette (point, ligne ou forme) Le potentiel « irradie » à partir de ce squelette 138 139 13 Surfaces implicites Surfaces implicites Fonction de potentiel par squelette Quelques exemples : – Soit n formes de base • fi est la fonction de potentiel relative à la ième forme – La fonction de potentiel est : n f (x, y,z) fi (x, y,z) i1 – Choix des fi 140 Plan du cours Modèles de surfaces III. Modélisation A. 141 – – – – – – Objets 1. 2. Lignes et courbes Surfaces 1. 2. Modèles mathématiques a. Objets géométrique simple b. Surfaces implicites Modèles informatiques a. Soupe de triangles, de polygones b. Ensemble de points, surfels c. Marching cubes 3. Objets complexes, humains 4. Volumes 5 grandes familles B-Rep Modélisation par point Marching cubes CSG Modèles paramétriques L systèmes / Fractales Prochaine partie 142 B-Rep 143 B-Rep : Soupe de polygones Philosophie : BB-rep – Pour Boundary Representation – Modélisation des objets par leur limite, leur bord – B-rep Objets complexe représentés par un ensemble de polygones (triangles) reliés – Exemple : Cube = 12 triangles – Autres exemples : • Géométrie + Topologie (souvent absente) Origine : – Logiciel de CAO / CAD • Maillages très fournis, très complexe Exemple : Airbus, Voiture… – Logiciel de création : 3DSMax, Maya … 144 145 14 B-Rep : Maillages B-Rep : Maillages Maillage = soupe de polygones + adjacence – Ensemble connecté de polygone (triangles) – Incorpore la topologie : modèle riche ! – Affichage facile en OpenGL • Mais mauvais choix pour les surfaces courbes... – D’autres calculs possibles Sommet (Vertex / Vertices) : position (et autres données) Arête (Edge) : connexion entre 2 sommets Face (Face) : Ensemble fini et fermé d’arête (cycle) - Triangle : Face à 3 arêtes - Quads : Face à 4 arêtes Polygone (Polygon) : Ensemble de faces Surface : regroupe des faces (polygones) représentant surface courbe • Courbure, normales, paramétrisation • Simplification, raffinement – Édition difficile Modèles disponibles ? – Souvent entre la soupe de polygone et le maillage 146 B-Rep : Maillages B-Rep : Maillages Plusieurs représentation – – – – Note : Dans les représentations supportant des faces à nombre arbitraire d’arêtes, faces et polygones sont identiques 147 Vertex-Vertex Meshes VertexFace--Vertex Meshes Face Winged--Edge Meshes Winged Render Dynamic Meshes ✔ Compact ✘ Extraction d’information difficile Différentes façons de définir /coder la topologie ✘ Pas de représentation directe de la surface 148 B-Rep : Maillages 149 B-Rep : Maillages ✔ Topologie explicite ✔ Sommets et face en accès direct ✔ Utilisation par les pipeline graphique ✘ Accès difficile aux arêtes ✔ Utilisation par les logiciels de modélisation ✔ Split et merge rapides ✘ Taille mémoire importante ✘ Complexité à maintenir ✘ Accès difficile aux faces voisines d’une face 150 151 15 B-Rep : Maillages B-Rep : Maillages ✔ Utilisation par pipeline graphique ✔ Topologie explicite ✔ Accès directs ✘ Taille mémoire importante ✘ Complexité à maintenir 152 Maillages 153 Algorithme de subdivision Quelques algorithmes… Algorithme de CatmullCatmull-clark – Subdivision de surface : – – – – • Créer des maillages plus lisse • Loop, Catmull Catmull--Clark, Modified butterfly, Kobbelt • Naïvement, pas de respect des arêtes vives – Simplification de maillage • Minimiser le nombre de triangles • Plusieurs critères importants Sur maillage quelconque Produit un maillage de quadrilatère Schéma d'approximation Peut gérer les bords Algorithme de Loop – – – – Conservation de la topologie Continuité entre maillages Orientation budget ou erreur Propriétés sur sommets Sur maillage triangulaire Schéma d'approximation Simple d'utilisation Gère les bords, les arêtes vives 154 Catmull--clark (78) Catmull 155 Loop (87) 1 8 FACE f 1 n vi n 1 3 8 3 8 ARETE v v f f2 e 1 2 1 4 1 8 n n n n v n1 f j j 2 j n n j n 156 n n 1n SOMMET vi1 n2 vi 12 n n n n n n 2 1 2 40 3 2 cos 64 n 157 16 Loop: Gestion des bords Algorithme de simplification Masque spécifique Algorithme statique (précalculs) – Décimation de sommet : decimation • Conserve topologie et propriété de sommet • Long – Regroupement de sommet : vertex clustering 1 2 1 2 Loi d’arête 1 8 6 8 • Simple et rapide • Moche, ne conserve pas la topologie 1 8 – Surface enveloppante : simplification envelopes • Maîtrise de l'erreur, de la distorsion • Très long et peu robuste Loi de sommet Problème de popping ! 158 Algorithme de simplification 159 Modélisation par points Algorithme dynamique (maillages continus) – Principe : Des points ? – Objets de plus en plus complexe • Triangles de plus en plus petits Si le modèle est vu de loin, ils se projettent sur 0,1 voire 2 pixels Beaucoup de travail inutile : interpolation (couleurs, normales, textures) et rasterisation. • Maillage inefficace – Idée : représentation par points de la surface • Simplification avec préservation de l'apparence • Rendu plus efficace, possibilité de rendu de beaucoup de points • Rajout de propriétés (couleur, texture) aux points Maillage + normal maps + texture / peu de réduction • Maillages progressifs (progressive (progressive meshes) meshes) de Hoppe Le plus rapide (TR) / peu de réduction 160 Modélisation par points Modélisation par points Origine – Acquisition scanner – Génération automatique de géométrie (L(L-system) 161 Qsplat : – Les points sont projetés sur l’écran – Contribuent à plusieurs pixels • Suivant leur éloignement • Filtre gaussien, masque pour chaque point • Rendu Exemples Point OpenGL (un carré) Cercle (un Quad avec une texture) Un point flou (un bilboard avec une texture gaussiène) 162 163 17 QSplat Modélisation par points Résultats : Surfel : surface element – Construits directement à partir d’une surface – Rajoute des informations par rapport aux Qsplat • Textures • Profondeur, position • Normales A. Points (qsplat) B. Polygones même nombre de polygones qu’en A. même temps – On utilise ces informations pour projeter le « point » C. Polygones même nombre de sommets qu’en A. temps x2 • Notamment de coordonnées de texture et les normales – Plus long que les QSplat 164 Modélisation par points 165 QSplat et GPU... Intérêts – Pas de conservation de la topologie. Données libres – Possibilité de rendu efficace de modèles complexes Défauts Gaël Guennebaud, Loïc Barthe and Mathias Paulin, Deferred Splatting Eurographics 2004, Grenoble, France – Problème lors d’un zoom trop important – Difficulté de remplir les trous • Coûte cher – Encore peu temps réel • Sauf si on rend un modèle précis • Applicable néanmoins en hiérarchie de points... 166 Marching cubes Marching cubes Origine : Surface définie par – Point (x,y,z) a l’intérieur ou à l’extérieur Principe de base : – Détermination des éléments internes – Modélisation de surfaces implicites – Données volumiques 167 – Calcul des bords Données d’entrées – Ensemble d’échantillons ponctuels organisés en cubes – Voxels avec 8 sommets 168 – Construction du contour 169 18 Marching cubes Marching cubes Sélection des cubes qui intersectent l'isol'iso-surface : Les 15 combinaisons : – Au moins un sommet dedans, au moins un sommet dehors Classification des cubes : – 8 sommets, 2 états (dedans, dehors) = 256 possibilités – Symétrie des 2 états : 128 possibilités – Symétries par rotation : 15 possibilités – Pour chaque possibilité, une seule triangulation possible – De 1 à 4 triangles par cube 170 Marching cubes : Calcul des normales 171 Marching cubes Les normales sont calculées indépendamment – Lisser la surface obtenue – Une normale par triangle Gradient au sommets – Estimation par différences centrales : D(i, j,k 1) D(i, j,k 1) z D(i1, j,k) D (i1, j,k) Gx(i, j,k) x D(i, j1,k) D(i, j1,k) Gy(i, j,k) y Calcul : Gz(i, j,k) – – – – Gradient de la fonction : normal à l'isol'iso-surface Calcul du gradient aux sommets du cube Normalisation : normale aux sommets du cube Interpolation linéaire : normales aux sommets des triangles – Interpolation linéaire : normales sur les triangles 172 Marching cubes 173 Marching cubes Exemples : Beaucoup de polygones : – Même ordre de grandeur que le nombre de voxels – Stockage, affichage… • Parfois plus cher de stocker les polygones que de stocker le volume ! Gros problèmes liés à la précision – Sous Sous--échantillonnage – Artefacts 174 175 19 Plan du cours I. Introduction II. Les mathématiques de l'image III. Modélisation A. IV. Plan du cours I. Modélisation A. Objets Objets 1. Lignes & Courbes 2. Surfaces 3. Objets complexes, humains 1. Lignes & Courbes 2. Surfaces 1. Modèles procéduraux 3. Objets complexes, humains 2. CSG 4. Volumes 3. Skinning B. Scènes C. Lumière et matière 4. Volumes Rendu & affichage 176 Objets complexes 177 Modèles procéduraux On a déjà vu des surfaces complexes : Primitives géométriques créées par une procédure Utile pour des objets structurés Plusieurs approches : – Modélisation par points – Certaines soupes de polygones – Croissance progressive de la forme Leur construction est : – Ex : plante, paysage, villes ... – Soit fait par acquisition directe • Laser – Soit utilise des techniques spécifiques : – Fractales – L-systems – Système de particules • Solide de révolution • Extrusion 178 Fractales L-systems Très mathématique ! – autosimilarité 179 Grammaire décrivant la croissance 3 catégories – Fonctions itérées – Relation de récurrence des points – Fractales stochastiques Mandelbrot 180 181 20 Systèmes de particules Modèles procéduraux Peuvent être utilisés pour décrire des surfaces – Difficile à créer à la main – Souvent pour des « objets » naturels – Enveloppe d’un feu – Surface d’un tas de sable ... Création d’objets complexes Problème de connexion entre les particules – Pour avoir des surfaces correctes Problème de l’inversion – Non connaissance des effets des paramètres Rendu – Contraigne à des algorithmes spécifiques Animation – Grammaire temporelle – Système de particules 182 Plan du cours I. CSG CSG : Constructive Solid Geometry Processus de construction d’objets complexes Modélisation A. Objets 1. Lignes & Courbes 2. 3. Surfaces Objets complexes, humains 4. 1. Modèles procéduraux 2. CSG 3. Skinning 183 – A partir de forme de base 3D « simple » (analytiques) • Cubes, Sphère, Cylindre ... – Utilisant des opérations ensemblistes • Unions, Intersections, Différences Volumes 1982 184 CSG 185 CSG Exemple de construction Représentation par – Une grammaire – Un arbre Rendu par exp := prim | transf prim | op exp exp prim := cube | sphere | cone | … transf := translation | homothétie | rotation op := union | intersection | difference – Ray tracing – OpenGL ? Très intuitif pour modéliser Limité Applicable à des modélisation par points – Utilisé dans le builder de Unreal – Dépend du choix des primitives de base 186 187 21 Plan du cours I. Skinning Modélisation A. 1. Lignes & Courbes 2. Surfaces 3. Et pour les humains ? – Représentation à base de squelette articulé Objets Objets complexes, humains 1. Modèles procéduraux 2. CSG 3. Skinning 4. Volumes Michel Roger http://mr2k.3dvf.net/ 188 Skinning 189 Skinning A partir du squelette : Un objet autour de chaque « os » : Trou © 1998, Darwin 3D 191 190 Skinning Skinning Joindre les objets : Étirement © 1998, Darwin 3D 192 Sommets intermédiaires • 50/50 pour chaque os • Pincement visible © 1998, Darwin 3D 193 22 Skinning Skinning: les maths Sommets intermédiaires Modèle 3D plus squelette Chaque sommet est attaché à un ou plusieurs os Pose « au repos » Pose « animée » Poids : 33/66, 50/50 et 66/33 – Somme des poids = 1 – Modèle non déformé – Position squelette donnée – trouver position des sommets © 1998, Darwin 3D 194 Comment ça marche (1) 195 Comment ça marche (2) Sommet v, attaché à l’os J1. Au repos : Nouvelle position du squelette – Trouver nouvelle position du sommet v y v y v' J1 J0 x x 196 © J. Gregory, 2003 Comment ça marche (3) 197 © J. Gregory, 2003 Comment ça marche (4) On a v en coordonnées « absolue » Sommet, dans l’espace lié à l’os : – Espace du modèle On transforme le sommet v : – De l’espace du modèle (espace global) – Dans l’espace lié à l’os v y Le sommet est fixe par rapport à l’os – Donc on peut bouger le squelette Re--transformation dans l’espace du modèle Re – Donne nouvelles coordonnées du sommet : v’ J1 J0 x 198 199 © J. Gregory, 2003 23 Comment ça marche (5) Comment ça marche (6) Sommet toujours dans la même position, quelle que soit la position du squelette v y Retour à l’espace du modèle, position du sommet v y v' v' x x © J. Gregory, 200 2003 Avec des maths 201 © J. Gregory, 2003 Avec des maths (2) Xi position de la base de l’os i (translation) v y Qi rotation de l’os i v y X1 Q1 Q0 X0 x x 202 © J. Gregory, 2003 Avec des maths (3) 203 © J. Gregory, 2003 Avec des maths (4) Position à l’équilibre de l’os Ji On déplace le squelette (animation) : – Produit matriciel des translations et rotations depuis la racine : y j B j X i Qi v' i 0 J0 J1 x 204 205 © J. Gregory, 2003 24 Avec des maths (5) Avec des maths (6) Ti la translation pour l’os i, Ri sa rotation : Pose actuelle décrite par matrice : j Pj Ti R i i 0 y similaire à la matrice de la pose au repos : R0 T0 v' T1 j B j X i Qi i 0 R1 x © J. Gregory, 2003 206 Avec des maths (7) Multiplication de v par Bj-1 pour se ramener dans l’espace lié à l’os (au repos) Puis multiplication du résultat par Pj pour se ramener dans l’espace du modèle, dans la pose actuelle 207 Avec des maths (8) Ce qui nous donne : – Une fois pour toutes v P j B j v 1 v P j B i1 v v P0 P1B11B 01 v 208 Avec des maths (9) Avec des maths (10) Calculs effectués pour chaque sommet du modèle – Tracé des sommets obtenus 209 Interpolation pour les sommets qui dépendent de plusieurs os : j j 1 v' j Pi Bi v i0 i0 Interpolation des positions pour les sommets qui dépendent de plusieurs os j 0 1 v'k Pi Bi v i0 i j v' wj v' j wk v'k – Chaque sommet partagé par plusieurs os possède un poids pour chaque os 210 211 25 Plan du cours I. Introduction II. Les mathématiques de l'image III. Modélisation A. IV. Modélisation des volumes Problème difficile – Passer de la 2D à la 3D demande : • Plus de mémoire : Exemple : un plan discrétisé en 10*10 fait 200 triangles, un espace discrétiser en 10*10*10 fait 1000 cubes soit 12 000 triangles Objets 1. Lignes & Courbes 2. Surfaces 3. Objets complexes, humains 4. Volumes B. Scènes C. Lumière et matière • Plus de temps de calcul Origine : – Calcul scientifique – Gaz et fluides Rendu & affichage 212 Modélisation des volumes 213 Modélisation des volumes Trois schémas de modélisation : – Par système de particules Modélisation par nature d’élément – Brouillard : • Adapté pour le feu, la fumée, la pluie, la neige ... • Homogène ou hétérogène Calcul direct par la carte graphique Calcul indirect par la carte graphique – Par fonction implicite • Pour modéliser des zones homogènes • Couche de brume ... – Par projection dans une base de fonction • Adapté pour des milieux recouvrant l’ensemble de la scène 214 Modélisation des volumes 215 Synthèse d'images I Feux et fumées III. Modélisation – A coder : densité du milieu dans l’air B. Scènes – Très souvent modélisé par des systèmes de particules • Bon rendu et avantage de la rapidité • On peut faire un équivalent de fonctions implicites (3D) 216 Venceslas BIRI IGM Université de Marne La Vallée 26 Plan du cours Plan du cours I. Introduction I. Introduction II. Les mathématiques de l'image II. Les mathématiques de l'image III. Modélisation III. Modélisation A. Objets A. B. Scènes B. C. Lumière et matière 1. Les objets et leur positionnement IV. Rendu & affichage 2. Graphes de scènes C. Objets Scènes Lumière et matière IV. Rendu & affichage 218 Objets canoniques 219 Objets canoniques Construction d’une scène complexe : Construction d’un objet – Constitué d’objets canoniques – Tout est lié à un référentiel unique • Brique de base. Pas forcément des primitives géométrique type cube, sphère. Peut être plus complexe • Ne doivent pas être constitués d’éléments en déplacement les uns par rapport aux autres • Muni de repères propres • Pour conserver les positions relatives des éléments entre eux • Pour conserver les tailles des éléments entre eux – Mais tout construire depuis ce référentiel unique est pénible • Stratégie : construire un objet dans un repère local propre à lui le déplacer et l’orienter dans le référentiel général Positionnement – Déplacer et orienter les repères propres par rapport : • A d’autres repères propres • Au référentiel global 220 Objets canoniques 221 Positionnement Exemple de construction : le bras articulé Positionner les repères propres : : rotation du bras par rapport à la tige : rotation de l’arbre par rapport au bras 222 223 27 Pour bien comprendre X0 : translation = Matrice de passage du repère R 0 au repère R 1 v y X1 R2 Pour bien comprendre R1 J x R0 v y B j X i Qi Q1 v a 2 « ensembles » de coordonnées : • celles du repère propres liées à J 1 X0 • celles du référentiel initial X1 v propre vR4 i 0 R3 B1X0Q0X1Q1 Q0 R1 x Q1 : rotation = Matrice de passage du repère R 3 au repère R 4 j R4 R2 x vref vR0 I. Introduction II. Les mathématiques de l'image C. Q1 224 225 Graphes de scènes Idée : organiser les objets en hiérarchie – Qui est « contenu » dans quoi ? – A quel repère un objet estest-il lié? – Arborescence ... graphe III. Modélisation B. Q0 B1 MR0R1MR1R2MR2R3MR3R4 MR0R4 Plan du cours A. 1 0 Q0 : rotation = Matrice de passage du repère R 1 au repère R 2 X0 vR0 X0Q0X1Q1vR 4 J X1 : translation = Matrice de passage du repère R 2 au repère R 3 R3 vR0 MR0R4 vR 4 v y Objets Scènes 1. L’espace homogène 2. 3. Les objets et leur positionnement Graphes de scènes Lumière et matière IV. Rendu & affichage 226 Modèle hiérarchique 227 Hiérarchie de nœuds Modèle divisé en morceaux Relations entre les morceaux Paramètres pour : – Transformation en coordonnées locales – Modèle simple en coordonnées locales – Dessin des enfants (qui héritent des coordonnées locales) – Forme des morceaux (écrasement) – Position des morceaux (inclinaison) Chaque nœud : Hiérarchie du modèle : exemple – Base se déplace : tout suit – Torse se déplace : boutons et tête suivent – Tête se déplace : yeux et nez suivent Après le nœud : – Retour aux coordonnées locales précédentes – Couleur, matériau, style, etc. ? • Pas fixé 228 229 28 Bonhomme de neige Personnage Base Torse Bouton1 Bouton2 Bouton3 Tête Nez Œil1 Œil2 © 1998, Darwin 3D 231 230 Graphes de scènes Graphes de scènes Différents types de noeuds : – – – – – Maillages, objets ... Matériaux, Apparences Nœuds de transformation Noeuds caméras Nœuds de groupes Intérêts : – Culling (automatique) – Hiérarchie • Imposé par le culling • Pour la dynamique des objets • Notamment des nœuds switch permettant de choisir un objet ou un autre par rapport à une variable – Nœuds LOD – Collision • Bounding box sur chaque nœud – Optimisation de rendu • Géométrie choisie par rapport à la distance à l’observateur – Nœuds action, événement • En fixant des états (matériaux, texture) sur chaque nœud • Déclenchent des comportements, font l’animation... – Factorisation Des nœuds « maillage » peuvent être communs 232 Graphes de scènes 233 Graphe de scène OpenInventor Existe (notamment) – OpenSG – OpenSceneGraph • Le plus complet ... très bon rapport qualité/prix ! – X3D • Commercial. Tentative de standardisation industrielle – – – – Java 3D Gizmo3D Open(gl)Performer Virtools 234 235 29 Graphe de scène Java3D Alias|Wavefront « SBD » 236 OpenSceneGraph 237 OpenSceneGraph Une API C++ fondée sur OpenGL pour Composants – Le management de scènes – L’optimisation du rendu de scènes OSGUtil Traversers Enhancements Cross-platform CrossWindowing system agnostique Open Source OSG Scene Graph Rendering Elements OSGText OSGDB Data Base Loading Plug-in Management OSGSim Plug-Ins Node Kits… 238 OpenSceneGraph 239 Autres représentations de scène Formats de fichier supportés – Formats de fichier 3D Quadtree / Octree – + souvent quadtree (plus léger) – Partition de l'espace en quatre / huit suivant • 3dc, 3ds, ac3, dw, flt, freetype • Iv, ive, logo, lwo, md2, obj • osg, osgtgz, tgz, txp, directX, zip • Quadtree : les coordonnées x,y relative au sol • Octree : les coordonnées x,y,z dans l'espace – Formats de fichier image – Permet de séparer les données en zones • bmp, dds, pic, png • pnm, qt, rgb, tga • Plus il y a de données dans un endroit, plus la décomposition est forte 240 241 30 Autres représentations de scène Synthèse d'images I Les portes III. Modélisation – Les scènes complexes sont organisées en différentes sections – Chaque section est séparée de la suivante par une zone de transfert – D'une section, on ne voit pas l'autre section C. Lumière et matière • Par un jeu de visibilité Autre section trop loin Autre section cachée par des éléments de décors – Permet le chargement de quelques sections • Chacune peut avoir une représentation de scène à l'aide des structures vues précédemment 242 Plan du cours Venceslas BIRI IGM Université de Marne La Vallée Plan du cours I. Introduction I. Introduction II. Les mathématiques de l'image II. Les mathématiques de l'image III. Modélisation III. Modélisation A. Objets A. Objets B. Scènes B. Scènes C. Lumière et matière C. IV. Rendu & affichage Lumière et matière 1. Les énergies de la lumière 2. Les yeux : la photométrie 3. Les matériaux IV. Rendu & affichage 244 La lumière La lumière Lumière : – Une onde électromagnétique Grandeurs physiques – Flux énergétique e • Phénomène ondulatoire, diffraction • Valeur instantanée d’un débit de rayonnement • Puissance (en Watt) – Porté par des photons • Phénomène particulaire – Intensité énergétique Ie – A une longueur d’onde 245 • Puissance émise par unité d’angle solide (W/sr) En synthèse d’images Ie – Peu de travail sur l’aspect ondulatoire – On s’intéresse au comportement du photon de d – Angle solide ? S r • Les photons ont une longueur d’onde 246 unité : stéradian (sr) 247 31 La lumière Plan du cours – Éclairement énergétique Ee • Quantité de flux reçu par unité de surface (W/m²) • Une valeur analogue, appelé radiosité ou exitance, indique la quantité de flux émis par unité de surface Ee I. Introduction II. Les mathématiques de l'image III. Modélisation de dS – Luminance Le Objets B. Scènes C. • flux d’énergie quittant une surface dans une direction 2 donnée d e Le d dS cos( ) A. angle solide projeté Lumière et matière 1. Les énergies de la lumière 2. Les yeux : la photométrie 3. Les matériaux IV. Rendu & affichage 248 Le système visuel humain 249 Photométrie Iris + corné + cristallin – Appareil optique Vision de nuit : domaine scotopique – Bâtonnets principalement sollicités Rétine : – C'est la pellicule ! – Cônes Vision de jour : domaine photopique – Cônes principalement sollicités • Sensibilité différente suivant les longueur d’onde : pour les couleurs • Peu sensible à l’intensité lumineuse – Bâtonnets : Étude de la réponse de l’œil – Fonction d’efficacité spectrale • Sensible à l'intensité lumineuse Étude de la sensibilité de l’œil : Domaine de la photométrie ! 250 Grandeurs photométriques Radiométrie Colorimétrie Photométrie Flux e Watt(W) v Lumen (lm) Intensité Ie W/sr Iv Candela (cd = lm/sr) Éclairement Ee W/m² Ev Lux (lx = lm/m²) Luminance Le W/m² sr Lv cd/m² Conversion : Xv K constante = 683 lm/W Xe,V d Dv 251 – Les couleurs peuvent être reproduites par combinaison linéaire de 3 couleurs monochromatiques • Ce sont les couleurs primaires – Décomposition de toute couleur C( C( ) grandeur radiométrique spectrale domaine de sensibilité de l'oeil Espace des couleurs CIE XYZ 252 X C ( ) x d Y C ( ) y d Z C ( ) z d 253 32 Colorimétrie Colorimétrie Espace Lxy – Dissocier la teinte de la luminosité : Espace dépendant du matériel – Passage des couleurs RGB à XYZ par une matrice L Y • Matrice donnée par le fabriquant X X Y Z y Y X Y Z x – Autre jeux de couleur • CMYK – D'autres espaces • Luv • Lab 254 Plan du cours 255 Matériaux I. Introduction II. Les mathématiques de l'image 3 comportements des matériaux – Absorption • Très peu utilisée en synthèse d’images a(,T,u) III. Modélisation A. Objets B. Scènes C. Lumière et matière – Émission 1. Les énergies de la lumière 2. Les yeux : la photométrie 3. Les matériaux • Peu de dépendance à la température (,T,u) – Réflexion • Capacité de la matière de réfléchir, d’une direction donnée vers une autre direction donnée, une partie de la lumière reçue IV. Rendu & affichage bd ( , dS , u , u ' ) Le ( , dS , u ) Le ( , dS , u ' ) cos ' d ' 256 Matériaux 257 Matériaux La réflexion Lambertienne – La réflexion ne dépend pas de l’angle d’incidence, ni de l’angle de réflexion – Matériaux isotrope – Réflexion Lambertienne ou réflexion diffuse Réflexion spéculaire pure – Propre aux surfaces très réfléchissantes – Induit une réflexion de lumière symétrique par rapport à la normale de la surface – Seule une proportion est réfléchie indiquée par le coefficient de réflexion spéculaire s(,dS) bd(,dS,u,u') d(,dS) I 258 N R Calculez R ! 259 33 Matériaux : FDRB Matériaux : FDTB FDRB (BRDF) : bd(,dS,u,u') position invariant bd(,u,u') – Fonction de répartition spatiale de l’énergie reçue en fonction de son angle d’incidence – Indique une proportion (entre 0 et 1) FDTB (BTDF) : – Même chose mais pour la transmission – C’est l’hémisphère « sous » la surface concerné • A l’opposé de la normale • Obéi aux lois de réciprocité d’Helmholtz • L’intégrale doit être égale à 11- absorption – Transmission pure : • Obéi aux lois de Descartes n1 sin(1) n2 sin(2) 260 Matériaux : textures 261 Matériaux : textures Certains détails complexes à représenter géométriquement et radiométriquement – Chaque sommet est associé à une position dans l’image – Fissures – Salissure – Détails de revêtement Principe • Ce sont les coordonnées de texture (2D) – La partie de l’image correspondant aux sommets est appliquée sur la surface Utilisation d’une image « plaquée » sur la surface – Représente la couleur – Peut représenter aussi des déformations géométriques 262 Matériaux : textures Matériaux : textures Application des textures – Peuvent se combiner avec la couleur déterminée par l’éclairement – Peuvent se combiner entre elles 263 Autres types de texture : – Bump mapping : rajouter de la granularité • Réalisé avec une texture • On souhaite conserver une surface simple La plupart du temps : réutilisation ... + Quake Id Software 264 => 265 34 Matériaux : textures Matériaux : textures Bump Mapping : algorithme initial Exemple de bump mapping – A l'aide de la carte de bump • En chaque point, perturber la normale suivant la "hauteur" du point et de ses voisins sur la carte de bump – Équation de perturbation de la normale : F : bump map P : surface N : normale – Avant : Fonctionnalité dépendante de la carte – Maintenant : Utilisable directement via un "pixel shader" Documentation technique Matrox Mare k Mizanin : http http:: //www //www..zanir zanir..szm szm..sk http://www.matrox.com/mga/francais/produ cts/te ch_info/ 266 Matériaux : textures 267 Matériaux : textures Cartes de normales (normal (normal maps) maps) – Similaire au bump mapping ... en plus simple – La texture code directement la variation de la normale en chaque point : offset vector D Cartes de déplacement (displacement (displacement mapping)) mapping – A priori peu utilisées encore – Permet de « décaler » la géométrie suivant une texture N' N D • Création de nouveaux points • Devient envisageable grâce aux geometry shader Autre stratégie : rotation vector 268 269 35