Rendu pour la Synthèse d`Images Jean
Transcription
Rendu pour la Synthèse d`Images Jean
Rendu pour la Synthèse d'Images Sources • Frédo Durand, Jovan Popović, Computer Graphics: Introduction, MIT 2007 Techniques de Rendu pour la Synthèse d'Images • Joëlle Thollot, Marie-Paule Cani, ARTIS/EVASION Master 2 • SIGGRAPH, Simulation des mondes virtuels • Etc. http://www.OpenGL.org 2 Computer Graphics is Fun Computer Graphics is Big Business 3 Computer Graphics Help Make Things 4 And houses, too [Jovan Popović, Computer Graphics: Introduction, MIT 2007] 5 [email protected] 6 Rendu pour la Synthèse d'Images CG saves lives CG lead to new discoveries 7 Historiquement: Lignes 2D 8 Image 2D L'ombre, une image naturelle, Wikipedia 9 Image ~ lignes 3D Image ~ lignes cachées 11 [email protected] 10 backface culling 12 Rendu pour la Synthèse d'Images Image 3D + Ombres 13 Photo-réalisme Illumination 15 Illumination + ombres douces [email protected] 14 2/4 17 Ray tracing Illumination + caustiques 1/4 16 3/4 18 Rendu pour la Synthèse d'Images Illumination 4/4 NPR ~ Rendu expressif © 1998 Jörg Hamel + globale 19 © 1998 Cassidy Curtis 20 Production d’un film de synthése Synthèse d’Images 1. Modélisation des objets, d’une scène Modélisation 2. Rendu d’une image à partir des objets, matières, éclairages, caméras… 3. Animation Visualisation spécifier ou calculer mouvements et déformations 21 22 Ce que vous apprendrez Ce que vous n’apprendrez pas • Fondements du rendu • Présentation rapide des méthodes récentes • Vocabulaire complet • Pratique d’OpenGL • Programmation C++ • Études de cas • La modélisation et l’animation • Les détails • L’utilisation de logiciel de synthèse d’images (Blender, 3DS, Maya, XSI) • La conception artistique – Connaissance globale de ce qui existe – Capacité à faire des choix de méthode 23 [email protected] 24 Rendu pour la Synthèse d'Images Fonctionnement du cours Programme http://artis.inrialpes.fr/Enseignement/ • Bases: OpenGL, pipeline, vertex shader • Illumination locale, Fragment shader • Textures • Ombres • Lancé de rayon • Représentations alternatives • Rendu expressif • Illumination globale • GPGPU • 10 cours , ~25 papiers, 1 mini débat • 4 TPs OpenGL, 1 TP CUDA • 1 TP ray tracing + 1 mini projet Binômes. Soutenance le vendredi 11 janvier • examen écrit : cours + papiers vendredi 25 janvier 25 26 Cours 1 et 2 : Les bases Techniques de Rendu pour la Synthèse d'Images Cours 1 : Introduction, pipeline graphique • Historique • Pipeline graphique • Transformations • Image, couleur • Rasterisation • Visibilité • Illumination 28 Plan Historique • Historique • Pipeline graphique • Transformations • Image, couleur • Rasterisation • Visibilité • Illumination • 1950 : MIT, premier écran (vectoriel) contrôlé par ordinateur. • 1950-60 : SAGE, contrôle d’un écran par un crayon lumineux, premier système graphique interactif. • 1963 : Sketchpad (thèse de Ivan Sutherland), propose un premier modèle complet de système graphique interactif (sélectionner, pointer, dessiner, éditer); identifie les structures de données et algorithmes nécessaires. Avancée majeure dans le domaine du graphisme. • 1960-70 : premiers systèmes de DAO (General Motors, Bell, NASA). Algorithmes de base du graphisme. • 1969 : premiers capteurs CCD (cameras numériques), Bell. 29 [email protected] 1/2 30 Rendu pour la Synthèse d'Images Historique 2/2 • 1970 : premier terminal graphique (Tektronix). ADIS graphics package : possibilité de lire/écrire un pixel, dessiner une ligne, déplacer des portions de l’image, la sortie étant dirigée sur des zones rectangulaires appelées fenêtres. • 1970-80 : barrière économique dépassée, mémoires et écrans peu chers sont disponibles, écrans matriciels, apparition de la couleur, cartes d’extensions graphiques (Apple II). Algorithmes de traitements d’images, premiers algorithmes de vision artificielle. • 1980-90 : premières interfaces graphiques (xerox). Photo-réalisme (lancer de rayons, radiosité). Animations. • 1984 : Le langage PostScript. Le macintosh. • 1990-… : systèmes 3D interactifs, algorithmes câblés, librairie graphique OpenGL, cameras CCD peu chères, développement de la vision artificielle. Réalité virtuelle. Plan • Historique • Pipeline graphique • Transformations • Image, couleur • Rasterisation • Visibilité • Illumination 31 Le pipeline graphique Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Culling / Clipping Scan Conversion Per Fragment Texturing and Lighting Visibility / Display 1/6 Le pipeline graphique Illumination (Shading) Modèle d’illumination : calcul des interactions lumineuses Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Caméra : point de vue et ouverture (frustum) Culling / Clipping Fenêtre (viewport) : grille de pixel sur laquelle on plaque l’image Visibility / Display 33 3/6 34 Le pipeline graphique Modeling Transformations Illumination (Shading) Illumination (Shading) Projection (to Screen Space) Culling / Clipping Sans carte graphique 3D Per Fragment Texturing and Lighting Couleurs, intensités convenant à l’afficheur (ex : 24 bits, RVB) Software configurable Software configurable Scan Conversion Modeling Transformations Viewing Transformation (Perspective / Orthographic) 2/6 Modeling Transformations Modèle géométrique : objets, surfaces, sources de lumière… Le pipeline graphique 32 Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Cartes graphiques génération zéro Software configurable Culling / Clipping Scan Conversion 4/6 Cartes graphiques première génération Scan Conversion Per Fragment Texturing and Lighting Hardware Visibility / Display Visibility / Display 35 [email protected] Hardware 36 Rendu pour la Synthèse d'Images Le pipeline graphique 5/6 Modeling Transformations Le pipeline graphique Modeling Transformations Illumination (Shading) Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Culling / Clipping 6/6 Hardware configurable Cartes graphiques deuxième génération Projection (to Screen Space) Culling / Clipping Scan Conversion Scan Conversion Per Fragment Texturing and Lighting Per Fragment Texturing and Lighting Visibility / Display Hardware programmable Cartes graphiques troisième génération Visibility / Display 37 38 Modeling transformations Reperes… Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Passage du système de coordonnées local de chaque objet 3D (object space) vers un repère global (world space) Projection (to Screen Space) Culling / Clipping Scan Conversion Per Fragment Texturing and Lighting Object space World space Visibility / Display 39 Illumination Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) 40 Transformation caméra Les primitives sont éclairées selon leur matériau, le type de surface et les sources de lumière. Modeling Transformations Illumination (Shading) Les modèles d’illumination sont locaux (pas d’ombres) car le calcul est effectué par primitive. Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Culling / Clipping Culling / Clipping Scan Conversion Scan Conversion Per Fragment Texturing and Lighting Per Fragment Texturing and Lighting Visibility / Display Visibility / Display 41 [email protected] Passe des coordonnées du monde à celles du point de vue (repère caméra ou eye space). En général le repère est aligné selon z. Eye space World space 42 Rendu pour la Synthèse d'Images Projection Modeling Transformations Illumination (Shading) Clipping Les primitives 3D sont projetées sur l’image 2D (screen space) Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Coordonnées normalisées (NDC : normalized device coordinates) Viewing Transformation (Perspective / Orthographic) NDC Culling / Clipping Projection (to Screen Space) Screen Space Culling / Clipping Scan Conversion Scan Conversion Per Fragment Texturing and Lighting Per Fragment Texturing and Lighting Visibility / Display Visibility / Display Eye space NDC Les portions en dehors du volume de vue (frustum) sont coupées. Backface culling 43 Rasterisation Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) 44 Visibilité, affichage Découpe la primitive 2D en pixels Modeling Transformations Interpole les valeurs connues aux sommets : couleur, profondeur,… Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Projection (to Screen Space) Culling / Clipping Culling / Clipping Scan Conversion Scan Conversion Per Fragment Texturing and Lighting Per Fragment Texturing and Lighting Visibility / Display Calcul des primitives visibles : z-buffer Remplissage du frame buffer avec le bon format de couleur Visibility / Display 45 Système de coordonnées Modeling Transformations Plan Object space Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Culling / Clipping Scan Conversion World space Eye Space / Camera Space Clip Space (NDC) Per Fragment Texturing and Lighting Visibility / Display 46 Screen Space [email protected] 47 • Historique • Pipeline graphique • Transformations • Image, couleur • Rasterisation • Visibilité • Illumination 48 Rendu pour la Synthèse d'Images Transformations Transformations Modeling Transformations Projective Affine Illumination (Shading) Similitude Linéaire Rigide / Euclidienne Identité Rotation Translation Homothétie isotrope Passage du système de coordonnées local de chaque objet 3D (object space) vers un repère global (world space) Viewing Transformation (Perspective / Orthographic) Projection (to Screen Space) Positionnement des objets dans la scène 3D Culling / Clipping Homothétie Reflection Scan Conversion Per Fragment Texturing and Lighting Perspective Visibility / Display 49 50 Coordonnées homogènes Coordonnées homogènes • Représentation matricielle uniforme de tous les types de transformations • La plupart du temps w = 1 • Si on multiplie un vecteur par une transformation affine w n’est pas modifié • On divise par w pour revenir en cartésien x' y' = z' w' a e i m p' = b f j n c d g h k l o p x y z w x' y' z' 1 Mp = a b c d e f g h i j k l 0 0 0 1 x y z 1 51 Transformations affines Translations : 52 Associatif ~ compositions Rotations : Représentation par les angles d'Euler : (0,0 ) (1,1 ) (2,2 ) Scale(2,2) (0,0 ) Translate(3,1 ) (3,1 ) (5,3 ) Multiplication de matrices : p' = T ( S p ) = TS p Changements d'échelles : TS = 53 [email protected] 1 0 3 0 1 1 0 0 1 2 0 0 0 2 0 0 0 1 = 2 0 3 0 2 1 0 0 1 54 Rendu pour la Synthèse d'Images Hiérarchie de transformations Non-commutatif !!! homothétie puis translation : p' = T ( S p ) = TS p (2,2) Scale(2,2) (1,1) (0,0) (0,0) Translate(3,1 ) Objet complexe Coordonnées relatives (ex : la roue par rapport au socle) (5,3) (3,1) Concaténation de transformations translation puis homothétie : p' = S ( T p ) = ST p Hiérarchie (8,4) (1,1) (0,0) Translate(3,1 ) (3,1) (4,2) Scale(2,2) (6,2) ⇒ dessiner = parcourir un arbre ⇒ conserve la cohérence 55 Projections Projections • Utilisées en synthèse et en vision (modèles de caméras) • Deux grandes familles : Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) 56 Passe des coordonnées du monde 3D aux coordonnées écran 2D. Projection (to Screen Space) Culling / Clipping Scan Conversion Per Fragment Texturing and Lighting Visibility / Display 57 Matrice en coordonnées homogènes de la projection orthographique canonique : Les projections parallèles : projection orthographique lorsque la direction de projection est perpendiculaire au plan de projection, • projection oblique sinon. Propriétés géométriques des projections parallèles : •conservent le parallélisme des droites. •conservent les rapports des distances parallèles. P(xM, yM, zM, wM) = (xM, yM, 0, 1) 59 [email protected] 58 60 Rendu pour la Synthèse d'Images Les projections perspectives : Point de fuite : Si une droite D coupe le plan de projection, il existe un point F, appelé point de fuite appartenant à la projection de toute droite parallèle à D. L'image d'un point M par une projection en perspective sur le plan P de centre O est l'intersection de la droite OM avec le plan P. Une projection en perspective dont le centre de projection est à l'infini est une projection parallèle. On différencie les projections en perspective par le nombre de points de fuite pour les directions des axes du repère. 61 Propriétés géométriques des projections en perspective • Les projections perspectives ne conservent pas le parallélisme des droites non parallèles au plan de projection. • La taille d'un objet est inversement proportionnelle à sa distance au point de projection : |p(M) p(M')| = d0 . 1/d . |MM'| 63 Plan • Historique • Pipeline graphique • Transformations • Image, couleur • Rasterisation • Visibilité • Illumination 65 [email protected] 62 Calcul des coordonnées projetées en perspective On se place dans le cas d'une projection canonique : Centre de projection à l'origine et plan de projection parallèle à xOy. Coordonnées dans le plan de projection P(xM, yM) = ((near . xM) / (-zM), (near . yM) / (-zM)) 64