Introduction à la Synthèse d’Images 3D Option IMA 1ère année Master Informatique Thierry Duval IFSIC / IRISA Siames [email protected] Plan 1. Introduction 2. Modélisation d’univers 3. Animation 4. Rendu 5. Interaction 6. Conclusion 2 1. Introduction 1. Introduction ¾ ¾ ¾ ¾ ¾ contexte intérêt des mondes virtuels 3D création des images (rendu) modélisation géométrique principes de base 2. Modélisation d’univers 3. Animation 4. Rendu 5. Interaction 6. Conclusion 3 Contexte Réalité Virtuelle : ¾ créer des univers virtuels 3D • les peupler d’objets autonomes ? ¾ les visualiser • c’est le minimum… ¾ naviguer au sein de ces univers • pour les explorer ¾ agir avec les objets contenus dans ces univers • pour être soi-même un acteur du monde virtuel ¾ réaliser tout cela à plusieurs ? • pour coopérer, comme dans la réalité… 4 Intérêt des mondes virtuels 3D Convivialité : ¾ ¾ nombreux parallèles possibles avec le monde réel nombreuses métaphores familières aux utilisateurs Facilité de création : ¾ souvent par « mimétisme » : • d’objets réels • de phénomènes réels Possibilité d’enrichir un monde virtuel : ¾ ¾ par rapport au monde réel dont on s’inspire pour en faciliter l’usage ou la découverte 5 Création des images (rendu) Modèle Géométrique Description de l’aspect Rendu Image Spécification des comportements 6 Modélisation géométrique Modélisation de la forme des objets Création de scènes par composition d’objets : ¾ ¾ Expression du comportement des objets : ¾ duplications transformations animations… Reste ensuite à : ¾ ¾ visualiser les objets rendre possible des interactions avec les objets 7 Principes de base On dispose initialement d’objets de base Scène = résultat de l’évaluation d’un programme Langage : format de fichier 3D : ¾ 3DS, DXF, PoV, VRML, … Programme VRML Interpréteur VRML Machine graphique Ecran 8 2. Modélisation d’univers 1. Introduction 2. Modélisation d’univers ¾ ¾ ¾ modélisation d’objets transformations géométriques outils d’aide à la modélisation 3. Animation 4. Rendu 5. Interaction 6. Conclusion 9 2.1 Modélisation d’objets Plusieurs approches pour décrire Types de modélisation Repères de localisation Primitives : ¾ ¾ solides surfaciques Opérateurs de composition : ¾ ¾ par balayage arbres CSG 10 Plusieurs approches pour décrire Artistique : ¾ Mathématique : ¾ … objet = ensemble de propriétés Informatique : ¾ objet = algorithme de construction : • primitives géométriques • opérateurs de transformation • opérateurs de compositions 11 Types de modélisation Fil de fer Surfacique Volumique 12 Modélisation fil de fer Définition d’un objet = sommets + arêtes Ne permet pas de représenter les propriétés des solides : ¾ impossible d’éliminer les parties cachées d’un objet 13 Modélisation surfacique Définition d’un objet à l’aide de surfaces Pas de notion de matière Modèle « classique » : ¾ ¾ face = liste d’arêtes formant sa frontière objet = liste de faces délimitant un volume Autres modèles : ¾ ¾ surfaces d’extrusion, de révolution surfaces gauches 14 Modélisation volumique Modèles descriptifs : ¾ définition d’un arbre de remplissage de l’espace : • les nœuds sont des sous-espaces non homogènes • les feuilles sont des sous-espaces vides ou pleins ¾ ¾ la cellule de base est le cube élémentaire (Octree) la cellule de base peut être de forme variable : • elle doit paver l’espace • elle n’a pas forcément 6 faces… Modèles constructifs (CSG) : ¾ définition d’un arbre de construction : • les nœuds sont des opérateurs • les feuilles sont des solides de base 15 Modélisation par octree Chaque nœud de l’arbre octal subdivise un espace (limité) en 8 parties, sauf si cet espace est vide ou plein 7 3 4 1 2 8 6 16 Modélisation par octree 17 Primitives solides : sphères Paramètres : ¾ ¾ centre C rayon r Ensemble des points P qui vérifient : ¾ d (P, C) <= r C r 18 Sphères en VRML… Shape { appearance Appearance { material Material { } } geometry Sphere { radius 1.0 } } 19 Primitives solides : cubes Paramètres : ¾ ¾ « centre » C arêtes ax, ay, az Ensemble des points (x, y, z) qui vérifient : ¾ ¾ ¾ xC – ax/2 <= x <= xC + ax/2 yC – ay/2 <= y <= yC + ay/2 zC – az/2 <= z <= zC + az/2 az ay ax C 20 Cubes en VRML… Shape { appearance Appearance { … } geometry Box { size 2.0 2.0 2.0 } } 21 Primitives solides : cylindres et cônes Paramètres : ¾ ¾ ¾ centre de l’axe : C rayon de la base : r hauteur de l’axe : h h C r h C r 22 Cylindres en VRML… Shape { appearance Appearance { … } geometry Cylinder { height 2.0 radius 1.0 bottom TRUE top TRUE side TRUE } } 23 Cônes en VRML… Shape { appearance Appearance { … } geometry Cone { height 2.0 bottomRadius 1.0 bottom TRUE side TRUE } } 24 Modélisation CSG CSG : Constructive Solid Geometry Description de formes complexes Définition inductive : ¾ ¾ ¾ objet = ensemble de points objet = sphère, cylindre, cône, boîte, … objet = Obj1 bop Obj2 • bop = union, intersection, différence ¾ opérateurs de placement (position et orientation) 25 CSG : opérations de base Union Intersection Différence 26 CSG : expressions ensemblistes Arbre binaire : + - 27 Limitations des primitives solides Difficulté de modéliser des formes complexes par mélange de formes simples : ¾ reliefs, plantes, véhicules, … 28 Primitives surfaciques Approximation de surfaces : ¾ placement des points caractéristiques de la forme : • les sommets ¾ ¾ connexion des points par des arêtes facettes : • surfaces définies par les arêtes 29 Primitives surfaciques 30 Primitives surfaciques 31 Modélisation B-Rep Boundary Representation : ¾ ¾ représentation par frontières de l’objet évolution du modèle fil de fer Problèmes : ¾ réussir à définir une structure représentation complète : • géométriquement • topologiquement ¾ pouvoir parcourir la topologie du modèle : • relations d’adjacences ¾ créer des modèles par insertions d’entités : • sommets • arêtes • faces 32 Représentation par frontières BReps : représentation polyédrique d’objets ¾ ¾ ¾ Problème : ¾ sommets arêtes faces séparer les volumes intérieur et extérieur Solution : ¾ orienter les surfaces 33 Orientation de surface Un modèle plan est orientable si chaque arête : ¾ ¾ ¾ est parcourue 2 fois dans 2 sens opposés appartient à 2 faces est définie par 2 sommets Définition de structure BReps de modélisation par frontières par listes de : ¾ sommets : informations géométriques • coordonnées 3D ¾ arêtes : informations topologiques • relations d’adjacences faces, arêtes, sommets ¾ faces : informations géométriques • normales aux surfaces 34 Orientation de surface La normale à une face est déterminée par le sens de parcours de ses arêtes Conventions pour les normales selon le parcours : ¾ ¾ sens trigonométrique (counter-clockwise) : sortante sens anti-trigonométrique (clockwise) : rentrante 35 Primitives surfaciques : polygones Approximation de la surface des objets Primitives : le triangle, le quadrangle, … Avantages : ¾ ¾ ¾ facile à manipuler facile à afficher peut tout approcher Inconvénients : ¾ base de données de taille importante 36 Primitives surfaciques : ensembles de polygones Énumération de facettes Simple à mettre en œuvre mais : ¾ ¾ duplication de données problèmes de cohérence F1 = (P0, P1, P2) F2 = (P0, P2, P3) F3 = (P3, P1, P0) F4 = (P3, P2, P1) P0 P1 P3 P2 Obj = (F1, F2, F3, F4) 37 Primitives surfaciques : ensembles de polygones et index Énumération de facettes avec partage de sommets Évite la duplication de données LS = {P0, P1, P2, P3} P0 P1 F1 = (LS [0], LS [1], LS [2]) F2 = (LS [0], LS [2], LS [3]) F3 = (LS [3], LS [1], LS [0]) F4 = (LS [3], LS [2], LS [1]) P3 P2 Obj = (F1, F2, F3, F4) 38 Facettes indexées en VRML (1/3) geometry IndexedFaceSet { coord Coordinate { . . . } coordIndex [ . . . ] solid TRUE ccw TRUE convex TRUE } 39 Facettes indexées en VRML (2/3) geometry IndexedFaceSet { coord Coordinate { point [-1.0 -1.0 -1.0, -1.0 -1.0 1.0, -1.0 1.0 -1.0, -1.0 1.0 1.0, 1.0 -1.0 -1.0, 1.0 -1.0 1.0, 1.0 1.0 -1.0, 1.0 1.0 1.0, ] } 40 Facettes indexées en VRML (3/3) coordIndex [1, 5, 7, 3, -1, 4, 6, 7, 5, -1, 2, 3, 7, 6, -1, 0, 2, 6, 4, -1, 0, 1, 3, 2, -1, 0, 4, 5, 1, -1, ] solid TRUE } 41 Opérateurs de composition Balayage de surface Spécification de la forme d’un objet 3d : ¾ ¾ description d’une forme (courbe fermée) description d’une courbe 2d • de préférence non coplanaire avec la forme… ¾ déplacement de la forme le long de la courbe Surface balayée par la courbe : ¾ surface de l’objet 3D 42 Opérateurs de composition : Balayage de surface Extrusion Révolution 43 Balayage de surfaces en VRML… geometry Extrusion { crossSection [ . . . ] spine [ . . . ] scale [ . . . ] orientation [ . . . ] endCap TRUE beginCap TRUE solid TRUE ccw TRUE convex TRUE } 44 Balayage de surfaces… (1/4) 45 Balayage de surfaces… (2/4) 46 Balayage de surfaces… (3/4) 47 Balayage de surfaces… (4/4) 48 2.2 Transformations géométriques Objectifs Repères Transformations élémentaires : ¾ ¾ ¾ translation rotation mise à l’échelle Compositions de transformations 49 Objectifs Placement et/ou orientation d’objets dans l’univers : ¾ souvent, par défaut, les objets sont : • placés au centre de la scène • orientés selon le repère global ¾ il faut donc pouvoir les situer et les orienter correctement Réutilisation d’objets par duplication, en en réalisant plusieurs instances : ¾ ¾ positionner et/ou orienter ces instances d’un même modèle géométrique pour qu’elles ne soient pas toutes superposées… 50 Repères z y y (x0,y0,z0) y0 O x y z0 O x0 z x Repère direct Repère direct O z x Repère indirect 51 Repères Repère caméra Z’’ X ’’ Y’’ Z Y’ Y X O Z’ O’X’ Repère local Repère de la scène 52 Transformations élémentaires Translation Rotation de type vecteur rotation (quaternion ?) Rotation avec angles YPR (ou HPR ?) Mise à l’échelle 53 Translation Définie par un vecteur (x, y, z) 54 Rotation de type vecteur rotation Définie par : ¾ ¾ axe de rotation (x, y, z) angle de rotation (w) 55 Rotation de type YPR 3 rotations successives autour des 3 axes de base : ¾ ¾ Définie par les 3 angles Y, P, et R : ¾ ¾ ¾ pour les amener dans la direction souhaitée le repère lié à l’objet en rotation évolue suite à chaque transformation Y : yaw (lacet) autour de l’axe vertical P : pitch (tangage) autour du nouvel axe latéral R : roll (roulis) autour du nouvel axe normal Aussi appelés HPR : ¾ ¾ Y parfois appelé H : heading (azimuth) P alors traduit en élévation 56 Rotation 57 Rotation de type HPR 58 Mise à l’échelle Définie par des facteurs de mise à l’échelle : ¾ hx, hy, hz Ce sont des homothéties : ¾ avec des valeurs négatives, on obtient des symétries… 59 Transformations en VRML … Transform { translation . . . rotation . . . scale . . . children [ . . . ] } 60 Repère local à un objet de l’univers Chaque objet de l’univers peut avoir un repère associé (repère local à l’objet) caractérisé par : ¾ ¾ la position de l’origine de ce repère l’orientation de ce repère par rapport à un autre repère Ce repère est caractérisable par une matrice de transformation 4x4 homogène, qu’on remplit avec : ¾ ¾ ¾ la position de la géométrie son orientation une mise à l’échelle éventuelle 61 Calculs sur les matrices 4x4 Fonctionnalités couramment offertes : ¾ création de matrices de rotation : • à partir d’un quaternion • à partir des angles (h, p r) ¾ création de matrices de translation, • à partir des 3 translations élémentaires (x, y, z) ¾ création de matrices de mise à l’échelle • à partir des 3 facteurs d’échelle (hx, hy, hz) ¾ composition des 3 créations précédentes : • avec un ordre défini pour l’application des 3 transformations ¾ ¾ récupération des coordonnées (x, y, z), (h, p r), (hx, hy, hz) manipulations (produits, inversion, transposée, …) 62 Composition de transformations 1:S 2:R 3:T M=TRS 63 Composition de transformations Soit M la matrice de transformation permettant de passer de l’origine du repère global (O, ω) à la position/orientation d’un objet possédant un repère local (O’, ω’) Soit T la matrice de translation OO’ Soit R la matrice de rotation ωω’ M=TR 64 Translations Globale : ¾ ¾ Translater l’objet (O’, ω’) d’une translation absolue T1 dans le repère global M1 = T 1 M Locale : ¾ ¾ Translater l’objet (O’, ω’) d’une translation relative T2 dans son repère local M2 = M T 2 65 Rotations Globale : ¾ ¾ Faire tourner l’objet (O’, ω’) d’une rotation absolue R1 autour de O dans le repère global M1 = R1 M Locale : ¾ ¾ Faire tourner l’objet (O’, ω’) d’une rotation relative R2 autour de O’ dans son repère local M2 = M R2 66 Mise à l’échelle uniforme h = hx = hy = hz y O h = -1 z h=2 h = 0.5 x 67 Types particuliers de mises à l’échelle Symétrie plane : une valeur à –1, deux à 1 Symétrie axiale : deux valeurs à –1, une à 1 Symétrie ponctuelle : trois valeurs à –1 68 2.3 Outils d’aide à la modélisation Modélisation manuelle Modélisation par interaction ¾ ¾ outils dédiés modeleurs 3D et traducteurs Modélisation par générateurs de formes 69 Modélisation manuelle A l’aide d’un éditeur de texte… Avantages : ¾ ¾ ¾ cela ne coûte rien accès à toutes les caractéristiques du modèle utilisé contrôle précis de l’efficacité des mondes décrits Inconvénients : ¾ ¾ difficile de construire des formes 3D complexes nécessite une bonne connaissance du modèle utilisé 70 Modélisation par interaction Avec un modeleur 3D ou un outil dédié à un modèle particulier : ¾ Choix de primitives : ¾ 3D studio, Maya, … géométries 2D ou 3D Choix d’actions : ¾ ¾ ¾ ¾ ¾ extrusion de formes 2D révolution transformations 3D insertions d’autres objets, dans d’autres formats, … exports dans différents formats, … 71 Outils dédiés Destinés à un seul modèle de représentation Avantages : ¾ ¾ faciles à utiliser ne nécessitent pas la connaissance parfaite du modèle Inconvénients : ¾ ¾ ne supportent pas forcément toutes les caractéristiques du modèle n’optimisent pas forcément le modèle 72 Modeleurs 3D et traducteurs Destinés à plusieurs modèles de représentation Avantages : ¾ ¾ faciles à utiliser puissants Inconvénients : ¾ ¾ ¾ ¾ ¾ ne supportent pas forcément toutes les caractéristiques du modèle n’optimisent pas forcément le modèle ne sont pas conçus pour un modèle particulier rarement de retour inverse modèle -> modeleur tendance à produire des formes complexes… et lourdes ! 73 Modélisation par générateurs de formes Génération de modèles par programmes spécialisés ¾ ¾ Avantages : ¾ ¾ formes fractales équations de surfaces ou volumes faciles à utiliser pour obtenir des formes complexes utilisation de connaissances scientifiques particulières pour générer des modèles 3D Inconvénients : ¾ ¾ destinés à des ensembles restreints de formes à utiliser en complément d’autres outils 74 3. Animation 1. Introduction 2. Modélisation d’univers 3. Animation ¾ ¾ paramètres d’animation interpolation entre images clés 4. Rendu 5. Interaction 6. Conclusion 75 Paramètres d’animation Animation = suite discrète d’images différentes Paramètres pouvant évoluer : ¾ ¾ ¾ ¾ ¾ transformations de repères (position, orientation, échelle) forme matériaux (couleurs, texture, transparence) caméra lumière Évolution en fonction : ¾ ¾ du temps des interactions de l’utilisateur 76 Interpolation entre images clés Spécification d’un ensemble de valeurs clés : ¾ ¾ ¾ ¾ ¾ ¾ positions orientations facteurs d’échelle couleurs transparence forme (coordonnées de points) Expression du temps qui doit être mis pour passer d’une valeur à une autre Expression de la façon de passer d’une valeur à l’autre (type d’interpolation) 77 Interpolateurs en VRML Associations clés/valeurs « Routages » entre « sorties » et clés « Routages » entre valeurs et « entrées » PositionInterpolator { key [ 0.0, . . . ] keyValue [ 0.0 0.0 0.0, . . . ] } 78 Interpolation de positions en VRML DEF Particle Transform { . . . } DEF Timer TimeSensor { cycleInterval 12.0 loop TRUE } DEF Position PositionInterpolator { key [ 0.0, . . . ] keyValue [ 0.0 0.0 0.0, . . .] } ROUTE Timer.fraction_changed TO Position.set_fraction ROUTE Position.value_changed TO Particle.set_translation 79 Autres interpolations en VRML (1) OrientationInterpolator { key [ 0.0, . . . ] keyValue [ 0.0 1.0 0.0 0.0, . . . ] } ColorInterpolator { key [ 0.0, . . . ] keyValue [ 1.0 1.0 0.0, . . . ] } ScalarInterpolator { key [ 0.0, . . . ] keyValue [ 4.5, . . . ] } 80 Autres interpolations en VRML (2) CoordinateInterpolator { key [ 0.0, …] keyValue [ # 1st coordinate set -1.0 1.0 1.0, 1.0 1.0 1.0, 1.0 1.0 -1.0, # 2nd coordinate set … ] } 81 Autres interpolations en VRML (3) Shape { geometry IndexedFaceSet { coord DEF Coordinates Coordinate { point [ … ] } coordIndex [ … ] } } DEF Clock TimeSensor { cycleInterval 2.0 loop TRUE startTime 1.0 stopTime 0.0 } 82 Autres interpolations en VRML (4) DEF Interpolator CoordinateInterpolator { key [ 0.0, …, 1.0 ] keyValue [ # 1st coordinate set … # 2nd coordinate set … ] } ROUTE Clock.fraction_changed TO Interpolator.set_fraction ROUTE Interpolator.value_changed TO Coordinates.set_point 83 4. Rendu 1. Introduction 2. Modélisation d’univers 3. Animation 4. Rendu ¾ ¾ ¾ ¾ visualisation d’objets facettisés pyramide de vue, clipping algorithmes de visualisation modèle d’éclairement 5. Interaction 6. Conclusion 84 4.1 Visualisation d’objets facettisés Image = { pixels } Synthèse : associer à chaque pixel : ¾ ¾ une intensité lumineuse une couleur L’intensité lumineuse dépend : ¾ ¾ ¾ des sources lumineuses de la position de l’observateur de la position des objets de la scène 85 Les principales étapes du rendu Placement des objets dans le repère de la caméra : ¾ ¾ Détermination des objets se trouvant dans la zone de clipping : ¾ pour simplifier les calculs repère indirect, axe Z = axe des profondeurs détermination des seules facettes visibles (celles qui se trouvent dans la pyramide de vue) Utiliser un algorithme de rendu pour visualiser les faces visibles 86 Transformations pour la visualisation Projection plane : ¾ ¾ association pixel ↔ point de la scène définie par : • le centre de projection • le plan de projection ¾ principalement 2 types : • perspective • parallèle 87 Projection perspective P Yc écran P’ Zc Oc Xc 88 Projection parallèle Yc écran P P’ Zc Oc à l’infini Xc 89 4.2 Pyramide de vue et clipping Les objets visibles sont ceux qui se trouvent dans la pyramide de vue Constituée de 6 plans Les objets en partie dans la pyramide de vue sont coupés par un ou plusieurs de ces 6 plans 90 Pyramide de vue plan écran plan arrière (back plane) (far plane) Zc Yc Oc plan avant (front plane) (near plane) Xc 91 Clipping Trouver les facettes situées dans la pyramide de vue Consiste à déterminer si une facette intercepte ou non ces 6 plans : ¾ ¾ revient à déterminer les arêtes qui interceptent ou non ces 6 plans si une arête intercepte un plan (les sommets de cette arête se trouvent de part et d’autre des 2 demi espaces séparés par le plan) elle est subdivisée en 2 segments : visible et non visible Exemple : ¾ algorithme de Sutherland-Hogman 92 Algorithme de Sutherland-Hogman (1) Stratégie « diviser pour régner » : ¾ Problème élémentaire : ¾ résolution d’un ensemble de problèmes élémentaires, qui, tous ensemble, permettent de résoudre le problème global déterminer la visibilité d’un polygone selon un plan infini correspondant à l’un des 6 plans qui délimitent la pyramide de vue Appliquer 6 fois la solution détermine les parties des polygones qui sont strictement dans la pyramide de vue 93 Algorithme de Sutherland-Hogman (2) Traitement des sommets définissant un polygone : ¾ ¾ ¾ v1, v2, …, vn puis retour à v1 examen de la relation entre les sommets successifs et un côté du plan à chaque étape, 0, 1 ou 2 sommets sont ajoutés à la liste de sommets qui définit l’intersection du polygone avec le demi-plan contenant la pyramide de vue S est le point déjà traité, P est le point courant : ¾ 4 cas possibles… 94 Algorithme de Sutherland-Hogman (3) intérieur extérieur S P cas 1 : P sommet à ajouter dans la liste 95 Algorithme de Sutherland-Hogman (4) intérieur extérieur P S I cas 2 : I sommet à ajouter dans la liste 96 Algorithme de Sutherland-Hogman (5) intérieur extérieur P S cas 3 : aucun sommet à ajouter dans la liste 97 Algorithme de Sutherland-Hogman (6) intérieur P extérieur I S cas 4 : I et P, sommets à ajouter dans la liste, dans cet ordre 98 4.3 Algorithmes de rendu Algorithmes d’élimination des parties cachées : ¾ ¾ basés image basés objets Quelques algorithmes particuliers : ¾ ¾ ¾ ¾ Z-Buffer de balayage en lignes à priorités sur les objets à subdivision du plan de projection de l’image 99 Elimination des parties cachées (1) Algorithmes basés image : pour (chaque pixel de l’image) faire déterminer, parmi les objets traversés par le rayon visuel relatif à ce pixel, l’objet le plus proche de l’observateur afficher ce pixel dans la couleur appropriée fin pour Algorithmes basés objets : pour (chaque objet dans la scène) faire déterminer les éléments d’objets non occultés par d’autres éléments du même objet ou par d’autres objets afficher ces éléments dans les couleurs appropriées fin pour 100 Elimination des parties cachées (2) Algorithmes basés image : ¾ N objets et P pixels : • proportionnels à N x P ¾ travaillent à la résolution du système d’affichage : • victimes de problèmes de lissage (agrandissement d’une image) Algorithmes basés objet : ¾ N objets : • proportionnels à N x N • mais étapes plus complexes et plus longues ¾ indépendants de l’affichage : • doivent être complétés par une étape de traitement de l’affichage à une résolution donnée 101 Elimination des parties cachées (3) Différents types d’algorithmes : ¾ Z-Buffer : • mémoire de profondeur pour le calcul des pixels de l’image ¾ à balayage de lignes : • l’élimination des parties cachées se fait ligne par ligne de balayage ¾ à priorités : consistent à trier les objets suivant leur profondeur : • peuvent nécessiter des découpages d’objets (cas de recouvrements cycliques ou d’interpénétration) : • les facettes sont divisées jusqu’à ce qu’on puisse dire quelles parties des facettes sont visibles ¾ à subdivision du plan de projection de l’image : • on divise récursivement l’écran pour trouver des zones simples à afficher 102 Algorithme du Z-Buffer (1) Z-Buffer : « mémoire de profondeur » Algorithme basé image Développé par Catmull en 1974 On utilise 2 tableaux : ¾ ¾ ¾ de la taille de la fenêtre de projection : i et j sont les coordonnées des pixels un pour stocker les intensités (Int [i][j]) un pour stocker les profondeurs (Zbuff [i][j]) Les facettes sont traitées dans n’importe quel ordre, sans tri préalable Aucune comparaison d’objet à objet n’est nécessaire 103 Algorithme du Z-Buffer (2) Lors du remplissage d’une facette : ¾ ¾ si la profondeur calculée Z d’un pixel est supérieure à celle mémorisée (calculée pour une facette précédente), c’est-à-dire plus éloignée de la caméra, alors on n’en tient pas compte dans le cas contraire, on la mémorise et on sauvegarde l’intensité associée Facile à implanter matériellement : ¾ ¾ ¾ pas de structures de données complexes seulement des comparaisons de valeurs de matrices seulement besoin de mémoire 104 Algorithme du Z-Buffer (3) début algorithme Z-Buffer (avec z (plan avant) = 0) pour (tous les pixels i,j faire) Int [i][j] ← couleur du fond ; Zbuff [i][j] ← z (plan arrière) fin pour pour (tous les polygones de la scène) faire pour (tous les pixels de la projection du polygone) faire si (0 ≤ z du polygone au point i,j ≤ Zbuf [i][j]) alors Zbuff [i][j] ← z du polygone au point i,j Int [i][j] ← couleur du polygone en i,j fin si fin pour fin pour fin 105 Algorithme du Z-Buffer (4) Chaque polygone peut être traité ligne-à-ligne Peut traiter autre chose que des polygones Cet algorithme peut être optimisé si des pré-traitements sont réalisés sur les objets à visualiser : ¾ simplifié si on suppose qu’un clipping est réalisé : • un seul test à réaliser… ¾ accéléré en effectuant un tri approximatif des facettes selon les profondeurs croissantes : • on évite les calculs de couleur inutiles ¾ prise en compte de la transparence si les facettes opaques sont traitées avant les facettes transparentes : • gestion de différentes listes d’objets 106 Algorithmes de balayage en lignes (1) Basés image Génèrent l’image ligne par ligne Capables de traiter des scènes contenant des facettes : ¾ ¾ ¾ convexes non convexes avec des trous y z x 107 Algorithmes de balayage en lignes (2) Couper la scène par des plans contenant l’observateur et passant par des lignes de balayage Yi : ¾ Remplissage de ces segments : ¾ résultat : un ensemble de segments joignant les arêtes des facettes calcul de l’intensité et de la profondeur de chaque pixel de ces segments Application de la technique du Z-Buffer à chaque ligne de balayage 108 Algorithmes de balayage en lignes (3) Créer une table des arêtes (ET) pour toutes les arêtes non horizontales de tous les polygones projetés sur le plan de visualisation : ¾ ¾ ¾ les arêtes horizontales sont ignorées ces éléments sont alors regroupés en paquets d’arêtes et triés par ordre croissant sur y pour chaque paquet, les arêtes sont triées par x croissant de leur sommet inférieur 109 Algorithmes de balayage en lignes (4) Nature des éléments de la table des arêtes, pour une arête commençant à une altitude donnée : ¾ ¾ ¾ ¾ la coordonnée x du sommet possédant le plus petit y la coordonnée y de l’autre sommet l’accroissement en x (dx) utilisé pour passer d’une ligne de balayage à l’autre (inverse de la pente de l’arête) l’identificateur du polygone indiquant le polygone auquel l’arête appartient 110 Algorithmes de balayage en lignes (5) Créer une table des polygones (PT) Nature des éléments de cette table : ¾ ¾ ¾ ¾ l’identificateur du polygone les coefficients de l’équation du plan la couleur et l’ombrage un booléen d’inclusion initialisé à faux 111 Algorithmes de balayage en lignes (6) Créer une table des arêtes actives (AET) : ¾ pour chaque ligne de balayage on garde une trace des arêtes qu’elle traverse et des points d’intersection Nature des éléments de cette table : ¾ les arêtes qui étaient traversées par la ligne précédente • modifiées selon x via le dx ¾ ¾ ¾ moins les arêtes qui se terminent sur cette ligne plus les arêtes qui débutent sur cette ligne les arêtes sont ordonnées en permanence par x croissant : • à cause des ajouts d’arêtes • à cause des variations sur les x • peu d’arêtes et peu de désordre : pas besoin d’un tri performant tri par insertion ou tri bulles 112 Algorithmes de balayage en lignes (7) Pour chaque ligne, les arêtes sont traitées en x croissant Quand on passe d’une arête à une autre, on met à jour le booléen d’appartenance au polygone associé à la nouvelle arête : ¾ il faut gérer ces booléens indépendamment les uns des autres pour les inclusions multiples 113 Algorithmes de balayage en lignes (8) y E B γ+2 γ + 1γ D β α C F A x 114 Algorithmes de balayage en lignes (9) Contenu de la table des arêtes actives : ¾ ligne α : • AB, AC ¾ ligne β : • AB, AC, FD, FE ¾ ligne γ : • AB, DE, CB, FE ¾ ligne γ + 1 : • AB, DE, CB, FE ¾ ligne γ + 2 : • AB, CB, DE, FE 115 Algorithmes de balayage en lignes (10) Traitement de la ligne α : AB, AC ¾ traitement de AB : • inversion du booléen d’inclusion du polygone ABC qui devient vrai • le balayage est donc dans le polygone ABC • application des paramètres de couleur du polygone ABC jusqu’à rencontrer la prochaine arête active ¾ traitement de AC: • inversion du booléen d’inclusion du polygone ABC qui devient faux • le balayage n’est donc plus dans le polygone ABC • arrêt du traitement de la ligne de balayage (AC est la dernière arête de la liste) ¾ ¾ mise à jour de la table des arêtes actives grâce à la table des arêtes, puis tri de AET passage à la ligne de balayage suivante 116 Algorithmes de balayage en lignes (11) Traitement de la ligne β : AB, AC, FD, FE ¾ ¾ commence de façon similaire au traitement de la ligne α il y a 2 polygones sur la ligne, mais le balayage se fait dans un seul polygone à la fois 117 Algorithmes de balayage en lignes (12) Traitement de la ligne γ : AB, DE, CB, FE ¾ l’entrée dans ABC rend le booléen d’inclusion vrai : • l’ombrage de ABC est utilisé jusqu’à la prochaine arête DE ¾ La rencontre de DE fait passer le booléen de DEF à vrai • le balayage est dans 2 polygones à la fois • (il est utile de conserver à part la liste des polygones dont le booléen d’inclusion est à vrai) • détermination du polygone qui se trouve devant grâce aux équations des polynômes en z pour y = γ et x = intersection de la ligne y = γ avec l’arête DE (c’est la valeur courante de x pour l’arête active DE) • en supposant que les polygones sont non sécants, l’ombrage calculé (ici celui de DEF) est appliqué jusqu’à l’arête suivante CB ¾ la rencontre de CB fait passer le booléen de ABC à faux… 118 Algorithmes de balayage en lignes (13) Traitement de la ligne γ + 1 : AB, DE, CB, FE ¾ ¾ en supposant que les polygones ne s’intersectent pas… si les arêtes actives sont les mêmes que pour la ligne précédente (cohérence de profondeur) : • on n’a pas besoin de relancer les calculs de profondeur… Traitement de la ligne γ + 2 : AB, CB, DE, FE ¾ les arêtes actives sont les mêmes que pour la ligne précédente, mais pas dans le même ordre… • on ne peut pas réutiliser les calculs précédents… 119 Algorithmes de balayage en lignes (14) Traitement de la couleur du fond : plusieurs possibilités : ¾ ¾ remplir la mémoire d’image avec la couleur du fond inclure dans la scène un polygone supplémentaire : • • • • ¾ très grand très éloigné parallèle au plan de projection de la couleur du fond modifier l’algorithme pour qu’il remplisse les pixels de la couleur voulue, lorsque le balayage n’est pas dans un polygone 120 Algorithmes à priorités d’objets Trient les objets suivant leur profondeur Hybrides : ¾ basés objets : • comparaisons des distances à la caméra • subdivisions d’objets ¾ basés images : • conversion en ligne de balayage Exemple : algorithme du tri en profondeur 121 Algorithme du tri en profondeur Newell, Newell et Sancha, 1972 3 grandes étapes : ¾ ¾ ¾ trier les polygones par leur plus petit z résoudre les ambiguïtés dues aux recouvrements, en subdivisant les polygones si nécessaire procéder à l’affichage par balayage de ligne de chaque polygone en ordre de z décroissant (de l’arrière vers l’avant de la scène) Cas particulier de l’algorithme du peintre : ¾ utilisation des priorités explicites associées aux objets : • fonctionne bien quand les objets sont dans des plans à z constant • approximation possible par le z des centres de gravité (peu fiable) 122 Algorithmes à subdivisions de l’image Subdivision du plan de projection de l’image : ¾ si on ne sait pas afficher « simplement » une zone (c’est-à-dire si on ne peut pas déterminer facilement que les polygones sont visibles) : • on subdivise de façon récursive cette zone de l’image ¾ la diminution de la taille des zones entraîne une diminution des recouvrements entre polygones (basée sur la cohérence de zone) : • toute portion suffisamment petite d’une image contient au maximum un seul polygone visible Exemple : algorithme de Warnock 123 Algorithme de Warnock (1969) Arrêt de la subdivision si dans l’un des 4 cas : ¾ tous les polygones sont disjoints à la zone : • on affiche la couleur du fond ¾ il n’y a qu’un seul polygone sécant ou inscrit : • on affiche la couleur du fond, puis on affiche le polygone, en totalité ou en partie ¾ il y a un seul polygone circonscrit et aucun inscrit ou sécant : • on affiche la couleur du polygone ¾ Il y a un polygone circonscrit placé devant tous les autres (les z de ces coordonnées aux 4 coins de la zone sont inférieurs aux z de tous les points des autres polygones) : • on affiche la couleur du polygone 124 Warnock : les 4 cas élémentaires … Circonscrit Inscrit Sécant Disjoint 125 Stéréovision Consiste à calculer 2 images : ¾ ¾ ¾ ¾ utilisation de 2 caméras, situées à gauche et à droite du point de vue (sur l’axe x du repère observateur) 2 calculs de clipping 2 calculs de rendu association de chaque image à chaque œil de l’utilisateur 2 fois plus coûteux ? ¾ ¾ si on ne peut partager les calculs entre les 2 images… dépend de l’algorithme de rendu… 126 4.4 Modèle d’éclairement Exprime l’intensité lumineuse d’un point due à : ¾ ¾ la lumière ambiante que produit dans toutes les directions un éclairage uniforme les sources lumineuses qui sont à l’origine : • des réflexions diffuses et spéculaires • des ombres portées ¾ Ir la réflectance et la transmittance d’un objet = Ia + Id + Is ¾ Ia ¾ ¾ est l’intensité ambiante Id est l’intensité diffuse Is est l’intensité spéculaire 127 Réflexion diffuse (1) Réflexion de Lambert : ¾ ¾ une partie de la lumière incidente pénètre dans l’objet et ressort avec la même intensité dans toutes les directions Id = Kd . Iobj . Isource . cos (N, L) / d2 • • • • • • • ¾ Kd : coefficient de réflexion diffuse de l’objet Iobj : couleur de la surface de l’objet Isource : intensité de la source lumineuse N : normale à la surface au point P L : direction dans laquelle se trouve la source lumineuse d : distance entre la source et l’objet éclairé ρd = Kd . Iobj : couleur diffuse de l’objet liée à la rugosité microscopique : • plus ρd est grand, plus la diffusion est grande 128 Réflexion diffuse (2) Id = Kd . Iobj . Isource . cos (N, L) / d2 source lumineuse observateur N L R V P 129 Réflexion spéculaire (1) Modèle de Phong : ¾ ¾ réflexion par la surface de l’objet de la lumière incidente qui n’a pas pénétré dans l’objet, dépend de la direction d’observation Is = Ks . Fobj . Isource . cosn (R, V) / d2 • • • • • • • Ks : coefficient de réflexion spéculaire de l’objet Isource : intensité de la source lumineuse Fobj : caractérise l’aspect spéculaire de l’objet R : direction de réflexion spéculaire maximale V : direction dans laquelle se trouve l’observateur ρs = Ks . Fobj : couleur spéculaire de l’objet n est l’exposant de réflexion spéculaire de l’objet : n grand = objet lisse et brillant = cône spéculaire étroit n petit = objet terne = cône spéculaire large pour le verre, n = 200 130 Réflexion spéculaire (2) Is = Ks . Fobj . Isource . cosn (R, V) / d2 source lumineuse observateur N L R V P 131 Quelques remarques… Ks + K d = 1 Si plusieurs sources, il faut sommer… On a besoin de connaître plusieurs directions : ¾ les normales aux facettes et les directions des sources de lumière et de l’observateur : • les directions L, N et R sont coplanaires • l’angle <L, N> est égal à l’angle <N, R> Les coefficients Ks et Kd ainsi que les couleurs sont des vecteurs à 3 composantes : ¾ Id ¾ rouge, vert, bleu + Is = (ρd . cos (N, L) + ρs . cosn (R, V)) . Isource / d2 on parle de réflectance bidirectionnelle 132 Éclairage ambiant Chaque objet est montré avec une intensité intrinsèque : ¾ ¾ ¾ pas de source extérieure univers irréel d’objets lumineux non réfléchissants Ia = Kd . Iobj • Kd : coefficient de réflexion diffuse de l’objet • Iobj : couleur de la surface de l’objet 133 Transparence I = Kt . Ir + (1 – Kt) . Iarrière ¾ Ir ¾ ¾ : intensité réfléchie en un point A de l’objet transparent Iarrière : intensité au point B de l’objet situé derrière l’objet transparent Kt : coefficient de transparence, entre 0 et 1 • Kt = 1 pour un objet opaque observateur objet opaque B A objet transparent 134 Couleurs en VRML Shape { appearance Appearance { material Material { diffuseColor 0.3 0.3 0.3 emissiveColor 0.0 0.0 0.0 transparency 0.0 specularColor 0.71 0.70 0.56 shininess 0.16 ambientIntensity 0.4 } } geometry … } 135 Lumières en VRML (1) PointLight : ¾ DirectionalLight : ¾ éclaire dans une direction en venant de l’infini SpotLight : ¾ éclaire dans toutes les directions à partir d’un point éclaire dans une direction, selon un cône Champs communs : ¾ ¾ ¾ ¾ on : allumée ou éteinte intensity : contrôle la luminosité ambiantIntensity : contrôle les effets ambiants color : choix de la couleur de la lumière 136 Lumières en VRML (2) Champs communs à PointLight et SpotLight : ¾ ¾ ¾ location : la position de la source lumineuse radius : la portée maximale de la lumière attenuation : atténuation de la lumière Champs communs à DirectionalLight et SpotLight : ¾ direction : direction de l’éclairage 137 Lissage de facettes Il n’est pas réaliste, pour une facette : ¾ de calculer l’intensité lumineuse en chaque point : • c’est trop coûteux ¾ d’attribuer la même intensité à tous les points : • effet de « facettisation » Il est plus judicieux : ¾ ¾ de calculer les intensités aux sommets de la facette de déduire l’intensité de chaque point par une interpolation bilinéaire Cette opération de remplissage est appelée lissage (ou ombrage) 2 types de lissage : ¾ lissage de Gouraud et lissage de Phong 138 Lissage de Gouraud (1) But : calculer l’intensité des points sur une ligne de balayage à partir des intensités calculées des sommets A D L P ligne de balayage R B C 139 Lissage de Gouraud (2) Calcul des intensités aux points L, R et P : ¾ IL ¾ ¾ = IA + (IB – IA) . AL / AB IR = ID + (IC – ID) . DR / DC IP = IL + (IR – IL) . LP / LR Possibilité de calcul incrémental : ¾ ILi+1 ¾ ¾ = ILi + (IB – IA) / AB IRi+1 = IRi + (IC – ID) / CD IPj+1 = IPj + (IR – IL) / LR 140 Lissage de Gouraud (3) Dans le cas de surfaces approchées par des facettes planes, la normale en un point partagé par plusieurs facettes doit être égale à la moyenne des normales de ces facettes pour obtenir un effet de lissage N N1 N2 N4 N = moyenne (N1, N2, N3, N4) N3 141 Lissage de Phong Ombrage par interpolation des vecteurs normaux : ¾ ¾ Interpoler dans l’intervalle d’un polygone sur une ligne de balayage, entre les normales de début et fin d’intervalle : ¾ ne pas interpoler les intensités interpoler la normale pour chaque pixel couvert ces normales sont elles-mêmes interpolées à partir des normales aux sommets, calculées si nécessaire en appliquant le modèle de Gouraud Lissage beaucoup plus réaliste que celui de Gouraud… mais beaucoup plus exigeant en terme de calculs 142 Comparaison Gouraud / Phong (1) Cas d’une facette triangulaire avec : ¾ ¾ ¾ n grand angle faible sur l’un des sommet angle important sur les 2 autres Gouraud Phong 143 Comparaison Gouraud / Phong (2) Cas d’une facette triangulaire avec : ¾ ¾ ¾ n grand reflet sur l’intérieur de la facette angle important sur les 3 sommets Gouraud Phong 144 Lissage en VRML Par défaut, pas de lissage : ¾ rendu facettisé Possibilité de donner un angle seuil de lissage : ¾ ¾ en dessous de cet angle, on interpole les normales au dessus de cet angle, on facettise Champ de lissage : creaseAngle Formes VRML « lissables » : ¾ ¾ ¾ indexedFaceSet elevationGrid extrusion 145 Placage de textures Plaquer une image sur une surface : ¾ ¾ image numérisée ou fabriquée chaque élément de l’image est appelé texel Une texture peut être rectangulaire : ¾ elle a son propre système de coordonnées Une texture peut aussi être définie par un algorithme Pour le rendu d’un pixel, les texels sont utilisés pour modifier une ou plusieurs propriété d’un matériau : ¾ la couleur diffuse par exemple 146 Technique de projection (1) Texture : tableau 2D de triplets RVB Associer à chaque sommet du polygone 3D ses coordonnées dans l’espace texture : ¾ espace de texture normalisé : (u, v), u et v variant de 0 à 1 y v D (0,1) (1,1) (0,0) (1,0) A C B espace x espace texture u 147 Technique de projection (2) Pour un pixel donné P : ¾ calculer ses coordonnées texture par interpolation bilinéaire des coordonnées texture des sommets du polygone ABCD y v D (0,1) (1,1) (0,0) (1,0) A P C B espace x espace texture u 148 Problèmes avec les textures Textures trop précises : ¾ Textures pas assez précises : ¾ il faut sous-échantillonner il faut sur-échantillonner Besoin de différentes résolutions : ¾ ¾ stockage de différentes versions de textures changement dynamique de la résolution en fonction des besoins 149 Placage de textures en VRML Textures d’images fixes ou animées Les textures colorées : ¾ surchargent les couleurs d’un Material Les textures en niveau de gris : ¾ se combinent avec les couleurs d’un Material 150 Textures d’images fixes en VRML Shape { appearance Appearance { material Material { } texture ImageTexture { url "wood.jpg" } } geometry . . . } 151 Textures d’images animées en VRML Shape { appearance Appearance { material Material { } texture MovieTexture { url "movie.mpg" loop TRUE speed 1.0 startTime 0.0 stopTime 0.0 } } geometry . . . } 152 Transformations de textures en VRML Possibilité de choisir les points de correspondance des textures : ¾ choisir les points de coordonnées de texture à associer aux sommets d’un polygone Possibilité de transformer les repères des textures : textureTransform TextureTransform { translation 0.0 0.0 rotation 0.0 scale 1.0 1.0 } 153 5. Interaction 1. Introduction 2. Modélisation d’univers 3. Animation 4. Rendu 5. Interaction ¾ ¾ ¾ capter des entrées de l’utilisateur les traduire en actions fournir un retour à l’utilisateur 6. Conclusion 154 Capture des entrées de l’utilisateur Utilisation de périphériques physiques dédiés : ¾ ¾ ¾ clavier/souris classiques joypads, joysticks capteurs à 6 DDL : • magnétiques, optiques, ultrasoniques Besoin de pilotes (drivers) logiciels : ¾ ¾ doivent être compatibles avec le logiciel de rendu peuvent y être intégrés 155 Interprétation des entrées Traduction en actions : ¾ ¾ parfois/souvent 3D … sélection d’objets (picking 2D ou 3D) : • parcours du graphe de scène ¾ modification d’objets : • actions sur des paramètres de certains objets de l’univers À exprimer en parallèle de l’étape de rendu : ¾ travail sur une structure de données commune 156 Retour à l’utilisateur Visualiser les effets des actions de l’utilisateur : ¾ Prévus dans les environnements graphiques : ¾ souvent le cas pour les curseurs souris À fournir explicitement : ¾ ¾ ¾ ¾ pour l’aider à interagir curseurs 3D associés à des périphériques particuliers interacteurs logiciels évolués intentions des utilisateurs réactions des objets aux tentatives d’interaction Ajouts d’objets 3D dans la scène… 157 Interactions en VRML Notion de « Sensors » : ¾ ¾ Seul périphérique géré directement : ¾ pour capturer la présence ou les actions de l’utilisateur orientations, positions, … la souris … avec les échos appropriés Possibilités supplémentaires : ¾ par programmation (Java …) 158 CylinderSensor en VRML Transform { children [ DEF VolantSensor CylinderSensor {} DEF Volant Transform { … } ] } ROUTE VolantSensor.rotation_changed TO Volant.set_rotation 159 Exemples de retours visuels (1) 160 Exemples de retours visuels (2) 161 Exemples de retours visuels (3) 162 Exemples de retours visuels (4) 163 6. Conclusion 1. Introduction 2. Modélisation d’univers 3. Animation 4. Rendu 5. Interaction 6. Conclusion ¾ ¾ ¾ en résumé… points non abordés perspectives 164 En résumé… Quelques éléments de modélisation : ¾ ¾ ¾ Quelques notions d’animation : ¾ interpolation par images clés (keyframing) Quelques notions de rendu : ¾ ¾ ¾ primitives élémentaires extrusion facettes indexées algorithmes d’élimination des parties cachées (Z-Buffer) modèles d’éclairement placage de textures Quelques notions d’interaction… 165 Points non abordés Courbes et surfaces paramétrées : ¾ Bézier, Splines, NURBS, … Modélisation fractale Algorithmes de rendus réalistes : ¾ ¾ Mécanismes particuliers de rendu : ¾ anticrénelage (antialiasing), calcul d’ombres portées, … Modèles physiques d’éclairement : ¾ éclairage indirect lancé de rayons, radiosité, … … composantes spectrales et non pas RVB 166 Perspectives Apprendre un langage de modélisation et de programmation 3D : ¾ Se familiariser avec : ¾ ¾ ¾ VRML (Virtual Reality Modelling Language) ses modèles géométriques ses transformations ses animations Découvrir en plus ses possibilités : ¾ d’interaction 167 Bibliographie J. Foley, A. van Dam, S. Feiner, J. Hugues, R. Phillips : « Introduction à l ’infographie », Addison-Wesley France, 1995. D. Nadeau, J. Moreland, M. Heck : « Introduction to VRML 97 », cours SIGGRAPH 1998. K. Bouatouch, C. Bouville : « Synthèse d’image », polycopié IFSIC. S. Donikian : « Modélisation 3D », notes de cours, DESS MITIC, IFSIC Rennes. E. Maisel : « Modélisation géométrique », notes de cours, IFSIC Rennes. A. Nédélec : « Modélisation », notes de cours, module Réalité Virtuelle, ENIB, Brest. 168