Infographie 3D Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
Concept du cours Ce que vous apprendrez TD machine Modélisation d'objet Modélisation et visualisation de scène Création d'ihm et de moteur 3D simple Cours avant chaque TD Outils mathématiques de l'image Fondement de la synthèse d'images Le principe général de la création d une image de synthèse 2
Concept du cours Ce que vous n'apprendrez pas Les logiciels de modélisation 3D 3DSmax, Maya, Blender Vu dans d'autres cours Certaines techniques temps réels Les algorithmes d'illumination globale & techniques avancées La conception artistique 3
Concept du cours Évaluation : selon mon humeur TD (TP) à rendre Selon mon humeur du chargé de TD Au bout des 2h ou «travaux à la maison» Projet Examen final Peu probable mais on ne sait jamais Proposition non contractuelle 4
Infographie 3D Introduction Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
Plan du cours I. Introduction 1. État des lieux 2. La réalité 3. Domaine et application 4. Les mathématiques de la 3D 6
La synthèse d'images Introduction État des lieux Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
État des lieux Historique de l image numérique La visualisation d'image apparaît tardivement dans l'histoire de l'informatique (ligne année 50, année 60-70) Initialement, dessin vectoriel Recréation de dessin à partir d'outils (tracer une droite ) À cause des problèmes de mémoire, de vitesse de processeur Puis affichage d'images : Images de fond Dans les jeux : des sprites mobiles Calcul direct de scènes 3D : Quake est le premier jeu en 3D intégral (1997) Apparition de véritables moteurs de rendu physique Half Life 8
État des lieux Évolution des cartes graphiques Nvidia GeForce 256 : Bubble Nvidia GeForce 2 MX : Gothic Chapel Nvidia GeForce 3 Ti : Chameleon Nvidia GeForce 4 Ti : Tidepool / Grass Nvidia GeForce 5200 : Dawn Nvidia GeForce 5900 : Last Chance Gaz Nvidia GeForce 6600 : Nalu Nvidia GeForce 7800 : Mad Mood Mike... Un exemple : Island... 9
État des lieux Quelques exemples sur l'état des lieux par domaine jeu vidéo film application Capacité temps réel : Rendu pur : qq millions de points > 92 milliards de pixels Mais Confrontation Temps réel Réalisme 10
Infographie 3D Introduction Partons de la réalité Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
L'image "réelle" La formation d'une image : Source Source lumineuse lumineuse La La projection projection Interaction lumière lumière matière La perception perception 12
L'image "réelle" Les sources de lumière : Sans elles, pas d'image! Souvent contiennent toutes les couleurs Naturelles ou artificielles Lumières naturelles : soleil, ciels, feux Difficile à quantifier Riche en couleur Lumières artificielles : Mieux connues Caractéristiques quantifiables 13
L'image "réelle" Interaction lumière matière : Les rayons lumineux entre dans la matière! Certains ressortent, d'autres non Dépend de la longueur d'onde des rayons Donne la couleur à l'objet! Réflexion Matériaux Absorption 14
L'image "réelle" La projection Faire une image c'est projeter le monde sur un plan ou la rétine Passage de la 3 dimension à la 2 dimension Plusieurs façons de projeter : Projection orthographique Projection perspective 15
L'image "réelle" L'espace des couleurs Dans l'œil : Iris + corné + cristallin Appareil de prise de vue Appareil optique Rétine : C'est la pellicule! Cônes : pour les couleurs Bâtonnets : pour l'intensité lumineuse Cônes : 3 fonctions de réception On travaille en RVB! 16
Les images numériques Par échantillonnage de la réalité : photo numérique La nature s occupe : De la création de la lumière Des interactions lumières matières Le système optique s occupe de la projection La matrice LCD s occupe de la perception 17
L'image de synthèse Les images de synthèse : On tente de recréer le processus précédent Tout est calculé sur ordinateur Affichage via l'écran toujours en RVB Importance des modèles D'éclairage D'interaction avec la matière De projection De choix des couleurs De nombreux autres facteurs interviennent Dépend des applications Ex : Contrainte temps réel, fidélité des calculs 18
La synthèse d'images Introduction Domaines et applications Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
Domaines & applications Permet de simuler un univers virtuel Nombreuses applications Simulateurs (conduites, centrales nucléaires ) Étude des comportements humains Modélisation et visualisation scientifique Simuler sans expérimenter (moindre coût) Mieux comprendre les résultats des expériences Domaine médical Aider / guider les chirurgiens dans leur geste Adapter des applications à des handicapés CAO & Industrie Visualisation pour le design, contrainte matérielles 20
Domaines & applications Nombreuses applications Jeux vidéo Simuler pour divertir. Immersion Réalité virtuelle Nouvelle application innovante Effets spéciaux au cinéma Compositing d'image Architecture Résistance des matériaux Simulation des transferts de chaleur Visualisation du bâtiment fini sur le site Internet 3D 21
Domaines & applications Problématique différente suivant les domaines Jeux vidéo : le temps réel Réalité virtuelle : interactivité Visualisation scientifique : Fidélité au modèle physique Gérer de grandes quantités de données CAO et industrie Gérer de grandes quantités de données Extraire les bons modèles / les bons paramètres Simulateurs Respecter au plus proche le réalisme cognitif 22
Domaines & applications Problématique différente suivant les domaines Domaine médical : Sécurité de l'application Aide au chirurgien Effets spéciaux au cinéma : Cohérence des images (compositing) Réalisme Architecture : Coller au modèle physique Esthétisme Internet 3D : Compréhension des données 23
Domaines & applications jeux vidéo Effets spéciaux Internet 3D Temps réel Visu scientifique Architecture Simulateurs Réalisme CAO Réalité virtuelle Imagerie médicale 24
La synthèse d'images Introduction Quelques mathématiques Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
Dimensions Dimension = nombre de paramètres indépendants pour représenter l'espace de travail En synthèse d'images : Dimension 1 : Étude de trajectoire, spline Dimension 2 : Surfaces (eau, terrain) Textures & Images Dimension 3 : Organisation des surfaces dans l'espace Milieu participant, particules Dimension 4 : Animation temporelle 26
Les vecteurs 27
Notion de vecteur Vecteur : Ensemble de n coordonnées n = 2, 3 mais aussi 4, 10 000 etc. Dans l'espace 3D réel : ensemble de 3 coordonnées Noté : u [] ux uy uz Représente une direction / un déplacement Ex : [] 2 u 0 5 = 2 unités sur l'axe 1 et 5 unités sur l'axe 5 28
Notion de vecteur Attention à ne pas confondre point et vecteur! Même nombre de coordonnée mais objets différents Vecteur non dépendant d'une "origine" Vecteur insensible aux déplacements décalage vers la droite Le vecteur n'a pas changé 29
Produit scalaire Propriété du produit scalaire : Soit u et v deux vecteurs : u. v = 0 u e tv s o no tr t h o g o n a u x Dans notre cas : Produit scalaire canonique [] [] ux vx u. v = u. v = u y. v y = u x v x u y v y u z v z uz vz 30
Produit scalaire Norme et distance Introduction d une notion de taille, de longueur : la norme Norme naturelle u = u. u Doit satisfaire des conditions précises Séparation : norme nulle d un vecteur => vecteur nul Homogénéité : mult. par un scalaire Inégalité triangulaire : norme d un couple de vecteur Aussi appelée norme euclidienne Rapport à la géométrie du même nom = notre cas Vecteur u normé u = 1 31
Produit scalaire Notion de distance Norme d un vecteur = distance du «déplacement» Projection Le produit scalaire d un vecteur u par un vecteur v peut aussi se voir comme la projection de u sur v (et vice versa) : u u v (u. v ) = ± longueur verte * longueur rouge v 32
Base vectorielle Création d'une base vectorielle Les coordonnées des vecteurs sont définis par rapport à ces axes Tous les axes sont orthogonaux 2 à 2 Les vecteurs sont dit «indépendants» Les vecteurs ont une norme égale à 1 Forme une base orthonormale k v j i v E, α, β,γ ℜ v = α i β j γ k et on a : [] α v β γ 33
Espace vectoriel & dimension Coordonnées et produit scalaire En fait on a v. i = α v. j = β v. k = γ Donc : j v E, v = v. i i v. j j v. k k v k i 34
Produit vectoriel Produit vectoriel : calcul w = u v ux = uy u z vx vy v z uy vz uzvy = uz vx uxvz uxvy uyvx 35
Notre espace Et au fait les points? Ne sont pas des vecteurs Relatifs à une origine Voyons la théorie... C'est un espace affine 36
Notre espace Coordonnées et vecteurs Soit deux points A et B, on a : xb xa AB = yb ya zb za Les coordonnées des vecteurs dépendent de la base choisie Les coordonnées des points dépendent de la base choisie et de l origine Repère = base vectorielle + origine 37
Résumons... L espace dans lequel nous vivons Espace euclidien Espace affine Contient des points et des vecteurs Contient un espace vectoriel de dimension 3 Choix d une base vectorielle orthonormale Défini les coordonnées des vecteurs Choix d un point d origine Défini les coordonnées des points Distances mesurées par le produit scalaire Norme euclidienne 38
La synthèse d'images Rendu & Affichage Introduction Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
Introduction Objectif Réaliser une image Nécessité de choix d un point de vue Caméra d un environnement virtuel Nécessité de modéliser le monde virtuel Objets éclairé (réaliste) Nécessité de concevoir de l éclairage Lumières 40
Introduction Rendu A l aide d une caméra, d objets et de lumière, dessiner une image des objets visibles éclairé par les lumières. Source lumineuse La La projection projection La perception perception Interaction Interaction lumière lumière matière matière 41
Introduction Le coté caméra Position d une caméra dans l environnement virtuel Association d un écran (virtuel) à la caméra Cet écran est constitué de pixel Appelé «buffer» ou «framebuffer» Souvent en RGB 42
Introduction L environnement virtuel / les objets Modélisation géométrique Positionnement dans la scène Modélisation colorimétrique Modélisation physique 43
Introduction Les lumières A positionner dans la scène Peuvent être de tout type : Ponctuelle Surfacique voire volumique Directionnelle Isotrope ou anisotrope 44
Introduction Cas d étude : Illumination locale : La couleur d un objet ne dépend que des caractéristiques (locales) de celui-ci et des lumières de la scène. Modèle d illumination simple Possibilité d illumination plus complexe Réflexion & réfraction Ombres 45
Introduction Deux grandes approches Rasterisation Lancer de rayons 2 philosophies : Rasterisation : polygone par polygone Lancer de rayons : pixel par pixel 46
Introduction Rasterisation : On part de la scène, et on envoie sur la caméra Lancer de rayon : On part de la caméra, et on envoie sur la scène virtuelle 47
La synthèse d'images Rendu & Affichage Rasterisation Venceslas BIRI LIGM Université Paris-Est Marne-La-Vallée
Rasterisation Rasterisation ou algorithme du Z-buffer Fondé sur : Algorithme de remplissage des polygones Quels pixels sont concernés par la projection d un triangle (ou autre polygone convexe) sur un écran 2D? Algorithme du Z-buffer En anglais : to rasterize Omniprésent dans les applications temps réel Jeux vidéo Simulateurs & RV 49
Rasterisation : principe Idée générale Chaque polygone convexe est projeté sur l écran (image de pixels) Les occlusions sont gérées grâce à une image de profondeur : le Z-buffer Philosophie orienté objet La complexité est dépendante du nombre de primitive 50
Rasterisation : algorithme Transformation repère caméra Illumination Projection des primitives Rasterisatio n Gestion occlusion Insertion dans l image Déterminer les coordonnées des points relativement à la caméra Éventuellement, déterminer la couleur des sommets par rapport aux Projeter lumières les sommets des primitives sur l image 2D. Comprend le culling Déterminer les pixels recouvert par la primitive Utilisation du Z-buffer pour comparer les profondeurs Écriture des couleurs des pixels dans l image finale 51
Rasterisation : le Z-buffer Précision sur le Z-buffer Principe simple : on conserve la plus proche profondeur dans le buffer Si on veut insérer un nouveau pixel dans l image finale, on compare sa «profondeur» à celle présente dans le Z-buffer Plus proche, on insére dans l image finale et on stocke la nouvelle profondeur dans le Z-buffer Plus loin, on écarte le pixel Nécessité de transmettre, pour chaque pixel à insérer, sa profondeur vis-à-vis de la caméra 52
Rasterisation : pipeline 53
OpenGL Cartes graphiques implémentent le pipeline graphique OpenGL : API C (C++) Permet de contrôler / diriger les cartes graphiques : Fourni les données d entrées (géométrie / matériaux) Fixe les transformations et la (les) projection(s) Détermine les paramètres de l illumination Gère le rendu final dans l image Fixe l ensemble des «états internes» de la carte graphique 54
Primitives et transformation But de la première étape : Charger les données Transformer ces données dans le référentiel de la caméra Ce référentiel mets la camera à l origine et son axe de visée sur l axe z vers les z négatifs 55
Primitives graphiques OpenGL Données d entrée : Points ou lignes Polygones : triangles, quads ou polygones Ils seront transformés en triangles En général, il vaut mieux envoyer des triangles car on maîtrise le «découpage» Données envoyées par bloc de primitives : glbegin( glbegin(primitive primitive); );...... // // bloc bloc de de primitives primitives...... glend(); glend(); primitive peut être : GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_FAN GL_TRIANGLE_STRIP GL_QUAD GL_QUAD_STRIP GL_POLYGON 56
Primitives graphiques OpenGL 57
Primitives graphiques OpenGL Dans le bloc de primitives On injecte des points avec glvertex*( ) On peut mettre du code C normal Notamment des boucles : for, while... On est limité dans les instructions OpenGL Seules sont pris en compte les instructions : glvertex gltexcoord glmaterial glcolor glmultitexcoord glcalllist glsecondarycolor glvertexattrib glcalllists glindex glarrayelement gledgeflag glnormal glevalcoord glfogcoord glevalpoint Sinon génération d une erreur GL : GL_INVALID_OPERATION 58
Primitives graphiques OpenGL Dans le bloc de primitives On peut donc spécifier : Les normales avec : glnormal La couleur du point : glcolor / glsecondarycolor / glmaterial Les coordonnées de textures : gltexcoord / glmultitexcoord Les paramètres shader : glvertexattrib... A savoir Les vertex (et toutes autres données) sont transformés en vecteurs de 4 flottants 59
Les transformations Opérations courantes sur la pile de matrice glmatrixmode(mode) : fixe la pile courante, mode prend les valeurs MODELVIEW, PROJECTION, COLOR ou TEXTURE glpushmatrix() : recopie de la matrice haut de pile au sommet de la pile glpopmatrix() : enlève la matrice haut de pile glloadidentity() : remplace la matrice haut de pile par la matrice identité glloadmatrix*(...) : idem avec une matrice spécifiée par l utilisateur 60
Les transformations Fixer des transformations : Opérateur calculant une matrice et la multipliant à la matrice haut de pile Opérateurs : gltranslate{fd}(t x,t y,t z) : Translation (x,y,z) glrotate{fd}(t θ,t x,t y,t z) : Rotation d angle θ et d axe (x,y,z) glscale{fd}(t x,t y, T z) : Homothétie de rapport x, y et z 61