Synthèse d’images animées

Slides:



Advertisements
Présentations similaires
Chaîne de Synthèse Réel Modélisation Rendu Image Fichier Scène
Advertisements

The Reyes Image Rendering Architecture
Matthias Zwicker Hanspeter Pfister Jeroen van Baar Markus Gross
Efficient Simplification of Point-Sampled Surfaces
SI28 FLASH MX Partie 1 Jérémy Dufetre - Ludovic Pilache.
La lumière et les couleurs (Chap4)
Synthèse d’images.
Modèles empiriques d’éclairement
Rendu de pierres taillées en temps réel Stéphane Guy Directeur de stage: Cyril Soler.
IMAGIS-GRAVIR / IMAG Rendu de forêts en temps-réel iMAGIS / GRAVIR Franck Sénégas DEA IVR Tuteur: Fabrice Neyret.
Xavier Décoret* Frédo Durand° François Sillion*
2. Echantillonnage et interpolation des signaux vidéo
Lancer de rayons interactif
GIF-19263/GIF Vision numérique
Synthèse d’images animées
Création d’un programme :
IFT3730: Infographie 3D Transformations Géométriques
Transformations de visualisation en OpenGL
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Transformation linéaires
Modélisation géométrique à l’aide d’un maillage
Représentation numérique de l’information
IFT3730: Infographie 3D Illumination locale
Nicolas Holzschuch iMAGIS-GRAVIR/IMAG
Modélisation de l’éclairage
Création d’images virtuelles
Nicolas Holzschuch iMAGIS-GRAVIR/IMAG
Cours #3 Formation des images
Visualisation de surfaces décrites analytiquement
OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
IFT3355: Infographie Illumination globale
IFT3355: Infographie Imagerie 2D
IFT3355: Infographie Visualisation
Synthèse d'images : introduction
L ’acquisition d ’images
IFT3355: Infographie Visibilité
SCHNEIDER Laurent NOYER Vincent TEISSIE Alexis
IFT3355: Infographie Transformations Géométriques
IFT3355: Infographie Imagerie 2D
Modélisation géométrique
Les images de synthèses Duprat Anatole. Les images de synthèses consistent en la création assistée par ordinateur, d'images numériques. Il existe différentes.
Création en images de Synthèse Modèles de rendu d’une scène 3D
Chapitre 4 Réflexion et réfraction de la lumière
Images Matrice de points (pixels) Caractérisée par : Poids en octets
Projet Lancer de Rayons
L’image numérique : concepts et principes de traitement
Les bases de la modélisation Primitives simples et CSG.
CHAPITRE III Calcul vectoriel
Principes, usages et conception
OUTILS MATHEMATIQUES POUR LES SII
Credits : Joëlle Thollot, Hector Briceño, Edmond Boyer
Equipe SIMM Signaux et Image Multisources Multicomposantes
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
Synthèse d’images Introduction Doc. non diffusé En cours d’élaboration.
DESIGN GRAPHIQUE A. DAAIF ENSET Université Hassan II
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
LCIN4U73 Bases géométriques de l’imagerie
La 3D.
Astrophotographie HDR
Plan du cours Cours 1,2 : le pipeline graphique
Visualisation des flots optiques en 3D
Éclairage, ombrage Fiat lux !.
Introduction aux technologies du jeux-vidéo Steve Gury
Image Ready SI28 _ P09 MACHIN Alexandre BRUTEL Aline.
Photoshop 6.0 Aurélie KNOSP Ye LU.
SI28 Partie 1 Bruno Binet FLASH MX. Les atouts de Flash Création d’animation pour le Web, pouvant contenir une forte interactivité Faible poids des fichiers.
SI 28 - Présentation Image Ready Aurélie Letenoux GSU 4.
Elise Pierrot, GSU04 ImageReady, traitement d’image pour le WEB Présentation SI28.
Transcription de la présentation:

Synthèse d’images animées 2008-2009 Synthèse d'images : introduction Synthèse d’images animées 2008-2009 Joëlle Thollot (rendu) Marie-Paule Cani (modélisation et animation) Estelle Duveau (OpenGL) Joelle.Thollot@imag.fr Credits : Antoine Bouthors, Hector Briceño, Edmond Boyer, Frédo Durand Joëlle Thollot

Pourquoi faire ? Effets spéciaux pour le cinéma Dessins animés Jeux vidéo CAO Simulateurs Réalité virtuelle Visualisation, imagerie médicale

Question – 3mn Que faut-il faire pour faire un film d’animation ou un jeu vidéo ?

Synthèse d'images : introduction Problèmes à résoudre 1. Modélisation des objets, d’une scène 2. Rendu d’une image à partir des objets, matières, éclairages, caméras… 3. Animation spécifier ou calculer des mouvements et déformations Trois problèmes~: - Modéliser les objets (modélisation ``3D"). - Rendu de l'image : calculer une image 2D en fonction de la forme des objets mais aussi de la matière qui les constitue, de l'éclairage de la scène, de la position de la caméra virtuelle. - Animation : spécifier ou calculer mouvements et déformations des objets de manière à leur donner vie. 25 images/sec Joëlle Thollot

Ce que vous apprendrez Fondements de la synthèse d’images Présentation rapide des méthodes récentes Vocabulaire complet Pratique d’OpenGL pour créer des images animées Études de cas Connaissance globale de ce qui existe Capacité à faire des choix de méthodes

Ce que vous n’apprendrez pas Les détails L’utilisation de logiciels de synthèse d’images (Catia, 3DS, Maya, Photoshop) La conception artistique En complément : Ingénierie de l’animation 3D (exemples MAYA)

Fonctionnement du cours 3h coupées en 2 parties si possible KIOSK Horaire : 10h ou 10h15 ?

Cours 1 : Les bases Historique Pipeline graphique Transformations Image, couleur Rasterisation Visibilité Illumination

Cours 1 : Les bases Historique Pipeline graphique Transformations Image, couleur Rasterisation Visibilité Illumination

Lignes 2D

Image 2D

Lignes 3D

Lignes cachées

Image 3D

Photo-réalisme

Rendu expressif © 1998 Jörg Hamel © 1998 Cassidy Curtis

Historique 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.

1970 : premier terminal graphique a bas prix (Tektronix) 1970 : premier terminal graphique a bas prix (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 (macintosh). Photo-réalisme (lancer de rayons, radiosité). Animations. 1984 : le langage PostScript. 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

Le pipeline graphique Modeling Transformations Modèle géométrique : objets, surfaces, sources de lumière… Modèle d’illumination : calcul des interactions lumineuses Caméra : point de vue et ouverture (frustum) Fenêtre (viewport) : grille de pixel sur laquelle on plaque l’image Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Couleurs, intensités convenant à l’afficheur (ex : 24 bits, RVB) Visibility / Display

Le pipeline graphique Modeling Transformations Chaque primitive passe successivement par toutes les étapes Le pipeline peut être implémenté de diverses manières avec des étapes en hardware et d’autres en software A certaines étapes on peut disposer d’outils de programmation (ex : vertex ou pixel program) Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Le pipeline graphique Sans carte graphique 3D Software configurable Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Sans carte graphique 3D Software configurable Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Le pipeline graphique Software configurable Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Software configurable Cartes graphiques première génération Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Hardware Visibility / Display

Le pipeline graphique Hardware configurable Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Hardware configurable Cartes graphiques deuxième génération Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Le pipeline graphique Hardware programmable Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Hardware programmable Cartes graphiques troisième génération Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Modeling transformations Passage du système de coordonnées local de chaque objet 3D (object space) vers un repère global (world space) Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Object space World space Visibility / Display

Illumination Les primitives sont éclairées selon leur matériau, le type de surface et les sources de lumière. Les modèles d’illumination sont locaux (pas d’ombres) car le calcul est effectué par primitive. Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Transformation caméra 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. Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Eye space Projection (to Screen Space) Scan Conversion (Rasterization) World space Visibility / Display

Clipping Coordonnées normalisées (NDC : normalized device coordinates) Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Eye space NDC Clipping Les portions en dehors du volume de vue (frustum) sont coupées. Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Projection Les primitives 3D sont projetées sur l’image 2D (screen space) Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) NDC Screen Space Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Rasterisation Découpe la primitive 2D en pixels Interpole les valeurs connues aux sommets : couleur, profondeur,… Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Visibilité, affichage Calcul des primitives visibles : z-buffer Modeling Transformations Calcul des primitives visibles : z-buffer Remplissage du frame buffer avec le bon format de couleur Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Système de coordonnées Modeling Transformations Object space Illumination (Shading) World space Viewing Transformation (Perspective / Orthographic) Eye Space / Camera Space Clipping Projection (to Screen Space) Clip Space (NDC) Scan Conversion (Rasterization) Screen Space Visibility / Display

Plan Historique Pipeline graphique Transformations Image, couleur Rasterisation Visibilité Illumination

Transformations Projective Affine Similitude Linéaire Rigide / Euclidienne Homothétie isotrope Identité Homothétie Translation Rotation Reflection Perspective

Transformations Modeling Transformations Passage du système de coordonnées local de chaque objet 3D (object space) vers un repère global (world space) Positionnement des objets dans la scène 3D Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Coordonnées homogènes Représentation matricielle uniforme de tous les types de transformations x' y' z' w' a e i m b f j n c g k o d h l p x y z w = p' = M p

Coordonnées homogènes 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' 1 a e i b f j c g k d h l 1 x y z 1 =

Transformations affines Rotations : Représentation par les angles d'Euler : Translations : Changements d'échelles :

Composition Multiplication de matrices Question – 4mn : Ecrire les matrices des deux transformations ci-dessous puis calculer la matrice composition Que ce passe-t’il si on inverse la multiplication ? (5,3) Scale(2,2) (2,2) Translate(3,1) (1,1) (3,1) (0,0) (0,0)

Composition p' = T ( S p ) = TS p TS = = 1 1 1 3 1 1 2 2 1 2 2 3 1 (5,3) Scale(2,2) (2,2) Translate(3,1) (1,1) (3,1) (0,0) (0,0) p' = T ( S p ) = TS p 1 1 1 3 1 1 2 2 1 2 2 3 1 TS = =

Non-commutatif !!! homothétie puis translation : p' = T ( S p ) = TS p (5,3) Scale(2,2) (2,2) Translate(3,1) (1,1) (3,1) (0,0) (0,0) translation puis homothétie : p' = S ( T p ) = ST p (8,4) Translate(3,1) (4,2) Scale(2,2) (1,1) (6,2) (3,1) (0,0)

Hiérarchie de transformations Objet complexe Coordonnées relatives (ex : la roue par rapport au socle) Concaténation de transformations Hiérarchie dessiner = parcourir un arbre conserve la cohérence

Projections Passe des coordonnées du monde 3D aux coordonnées écran 2D Modeling Transformations Passe des coordonnées du monde 3D aux coordonnées écran 2D Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Projections Utilisées en synthèse et en vision (modèles de caméras) Deux grandes familles :

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 : Les projections parallèles conservent le parallélisme des droites Les projections parallèles conservent les rapports des distances selon une direction donnée

Matrice en coordonnées homogènes de la projection orthographique canonique : P(xM, yM, zM, wM) = 30s

Matrice en coordonnées homogènes de la projection orthographique canonique : P(xM, yM, zM, wM) = (xM, yM, 0, 1)

Les projections perspectives : 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.

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. On différencie les projections en perspective par le nombre de points de fuite pour les directions des axes du repère.

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/d . |MM'|

Calcul des coordonnées projetées en perspective On se place dans le cas d'une projection canonique : Centre de projection O et plan de projection parallèle à xOy. Coordonnées dans le plan de projection P(xM, yM) = 45s

Calcul des coordonnées projetées en perspective On se place dans le cas d'une projection canonique : Centre de projection O et plan de projection parallèle à xOy. Coordonnées dans le plan de projection P(xM, yM) = ((near . xM) / (zM), (near . yM) / (zM))

Plan Historique Pipeline graphique Transformations Image, couleur Rasterisation Visibilité Illumination

Affichage Remplissage du frame buffer avec le bon format de couleur Modeling Transformations Remplissage du frame buffer avec le bon format de couleur Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Qu’est-ce qu’une image ? Question : 30s

Qu’est-ce qu’une image ? Image réelle fonction de 2 variables vers une couleur Image numérique tableau de pixels (picture element) Informations nécessaires nombre de lignes nombre de colonnes format des pixels (bits, niveaux de gris, de couleurs) compression éventuelle Très nombreux formats de fichiers images formats textes (PPM), binaires (BMP, GIF), binaires compressés avec (JPG) ou sans perte (PNG), …

Le « frame buffer » Partie de la mémoire réservée à l’affichage Vidéo RAM Double buffer pour permettre un affichage plus fluide On affiche un des buffer pendant que l’on met l’autre à jour Quadruple buffer pour faire de la stéréo en double buffer Deux buffer par œil

Du réel au numérique Image réelle vers tableau de pixels Intensité réelle vers valeurs discrètes et finies Couleur physique vers couleur discrète RVB On perd quelque chose !

Echantillonnage : résolution

Et dans l’autre sens ? Résolution : dpi (dots per inch) 100 pour un moniteur 300-1200 pour une imprimante Diverses méthodes d’affichage

Echantillonnage : intensité 8 bits pour le niveau d’intensité (niveau de gris) donc 8*3 = 24 bit pour les couleurs (RVB)

Intensité lumineuse Avec 8 bits par couleur, 16m couleurs mais seulement 768 niveaux de luminosité possibles Dans la réalité, rapport de luminosité de 1:1010 entre la nuit et le jour Sensibilité de l’œil logarithmique Ferwerda et al. ‘96

HDR (High Dynamic Range) Image contenant une plus large gamme d’intensité 96 bits par pixel = 1 flottant Comment les acquérir et les voir ? Capteurs et écrans standards sur 24 bits…

HDR (High Dynamic Range) Acquisition Appareils spécialisés Fuji FinePix S3 Pro et Fuji FinePix F700 Plusieurs images avec un appareil standard

HDR (High Dynamic Range) Affichage Ecrans spécialisés BrightSide DR37-P Tone mapping sur un écran standard

La couleur Question 1mn : Qu’est-ce-que c’est ???

La couleur - Définitions Art Teinte, saturation, luminance/clarté Physique Spectre, stimulus Biologie Espaces perceptuellement uniformes Mathématiques Fonctions de base universelles Informatique RGB, CMYK, HSV…

Modèle du peintre : TLS = Teinte, Luminance, Saturation (HSV: Hue, Saturation, Brightness) Pratique pour les interfaces graphiques

Représentation spectrale Spectre = fonction de la longueur d’onde dans le domaine visible. Des spectres différents donnent la même couleur car l’oeil n’a que 3 types de capteurs : les cones. Cones 2 couleurs identiques pour l’oeil

Echantillonnage spectral Risque de perte d’information si on ne choisit pas un bon jeu d’échantillon Très bons résultats avec 4 échantillons choisis ou 9 échantillons réguliers RVB : additif, système visuel humain, écrans CMJ : soustractif, peinture, imprimantes

RVB : Un léger défaut

Une nouvelle fonction de base Les couleurs primaires ont un défaut : L’ensemble des couleurs visibles ne peut pas être représenté avec des coordonnées positives Besoin de nouvelles fonctions de base Couvrant tout le visible Avec des coordonnées positives Linéaires par rapport à RVB Commission Internationale de l’Éclairage www.cie.co.at 1931

Modèle de la Commission Internationale de l'Éclairage (CIE) : 3 primaires standard X, Y, Z sans coeff négatifs La couleur est donnée par x, y, z :

Gamme de couleurs d'une imprimante plus petite que celle du moniteur Les couleurs vues à l'écran ne peuvent pas toutes être rendues en impression Il faut réduire la gamme du moniteur Il n'existe pas de base trichromique de couleurs visibles qui permette de couvrir l'ensemble des couleurs visibles

Perception des couleurs Distance entre deux couleurs Dans l’espace de base : facile Pour la vision humaine : utile Idéalement, il y a un lien entre les deux Espace des couleurs perceptuellement uniforme Lien constant, indépendant de la couleur Différences juste perceptibles Plus petite distance entre deux couleurs perçues comme différentes

Différences juste perceptibles dans l’espace xy

Espaces perceptuellement uniformes L*a*b* et L*u*v* L* =                 pour    > 0,008856 L* =         autrement a* = 500 ( f       - f       ) b* = 200 ( f       - f       ) où f(t) =     pour t > 0,008856 f(t) = 7,787 t + 16/116 autrement Non linéaire par rapport à RVB En pratique, pas parfaitement conforme à la perception Il y a encore de la recherche…

Résumé : Espaces de couleur Plus d’infos sur wikipedia

Plan Historique Pipeline graphique Transformations Image, couleur Rasterisation Visibilité Illumination

Rasterisation Découpe la primitive 2D en pixels Interpole les valeurs connues aux sommets : couleur, profondeur,… Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Primitives 2D Dans tous les cas il faut savoir afficher du 2D, ligne ou polygone il faut savoir quels pixels allumer pour un objet mathématique il faut savoir remplir un polygone

Tracé de droites Méthode brute (naïve) Méthode incrémentale Discrétisation de la primitive en n points Approximation au pixel le plus proche pour les n points Peu efficace et peu précis Méthode incrémentale La position du point suivant est choisie de façon à minimiser l’erreur d’approximation Méthode optimale pour le tracé de segments de droites

Algorithme de Bresenham (1965) Premier octant : Une droite est définie par l’équation y = mx +B On cherche le prochain pixel comme celui qui minimise l’erreur e = (d2 – d1)/2 Au premier point (x0+1, y0+m) e1 = (d2 - d1)/2 = - 0.5; Ensuite l’erreur se propage NE : e = e + m - 1; E : e = e + m. void Bresenham(x0, y0, x1, y1, valeur) { int x; double m = y1 - y0 / x1 - x0 ; double e = -0.5; int y = y0; for(x = x0; x <= x1 ; x++) { e = e + m ; AfficherPixel(x, y, valeur); if (e >= 0) { y = y + 1; e = e - 1; }}}

Remplissage de polygone Principe (scan-line) Remplissage par recherche des points d'intersection d'une ligne horizontale avec des contours (un nombre pair). Une fois les points d'intersection obtenus, remplissage selon une règle de parité : incrémentation de la parité à chaque traversée de frontière et tracé si impair. Gestion des conflits frontaliers : on prend les points intérieurs au polygone pour éviter les chevauchements.

Aliasing aliased antialiased

Plan Historique Pipeline graphique Transformations Image, couleur Rasterisation Visibilité Illumination

Élimination des parties cachées Synthèse d'images : introduction Élimination des parties cachées Joëlle Thollot

Combien ça coute ??? Une scène = un ensemble de primitives : en général un ensemble de polygones (triangles) Détermination des surfaces visibles : Combien ça coute ???

Une scène = un ensemble de primitives : en général un ensemble de polygones (triangles) Détermination des surfaces visibles : équivalent au tri => O(n log n)

Comment on fait alors ???

Algorithme à précision objet masquage sur le modèle de données physiques => Calcul en coordonnées du monde + : masquage valable quelle que soit l'échelle du dessin - : plus cher Algorithme à précision image masquage sur les pixels écran => Calcul en coordonnées fenêtre + : peut utiliser la cohérence, plus rapide en moyenne - : précision limitée au nombre de pixels

Backface culling : éliminer les parties de la surface pour lesquelles la normale pointe dans la direction opposée au point d'observation. Parties occultées par l'objet lui-même. La suppression des faces arrières suffit si l'objet est seul dans la scène (il ne faut pas qu'un objet puisse en masquer un autre) si l'objet est convexe (dans un objet concave, des faces avant peuvent être masquées par d'autres)

Calcul : produit scalaire (Sommet-PointDeVue)*normale > 0 : on garde le polygone < 0 : on l’élimine Économise 50 % du temps de calcul préalable aux autres algos

Algorithme du peintre : peindre les facettes polygonales dans la mémoire vidéo suivant un ordre de distance décroissante au point d'observation. 1. Trier les facettes suivant les z décroissants dans le repère de la camera. 2. Résoudre les ambiguïtés dans la liste lorsque les facettes se recouvrent. 3. Projeter les facettes et remplir les polygones suivant la liste.

Le plus intuitif des algorithmes Coût en mémoire : Pour ou contre ? Le plus intuitif des algorithmes Coût en mémoire : Affichage direct à l’écran : O(p) Il faut trier les polygones : O(nlogn) Temps de calcul : On affiche toute la scène Efficace surtout sur des petites scènes

Area Subdivision (Warnock) On utilise la cohérence spatiale On divise l’écran en zones de travail Pour chaque zone, on ne considère que les polygones qui l’intersectent Si la visibilité est connue, on s’arrête Si la visibilité est inconnue, on subdivise On interrompt la subdivision quand on atteint une taille limite

Polygones/zone de travail Inclus Intersecte Englobe Disjoint Quand est-ce que la visibilité est connue ? Tous les polygones sont disjoints Un seul polygone intersecte ou inclus Un polygone englobant qui est devant les autres

Warnock : exemple (1)

Warnock : exemple (2)

Warnock : exemple (3)

Synthèse d'images : introduction Warnock : exemple (4) Joëlle Thollot

Warnock : exemple (5)

Warnock : exemple (6)

Warnock : pour ou contre Utilise la cohérence spatiale Plus efficace avec des grands polygones Coût mémoire parfois élevé Implémentation facile : appels récursifs à la même fonction

Z-Buffer Un tableau, de la taille de l’écran On stocke la valeur maximale de z pour chaque pixel z est la direction de visée, exprime la distance à l’oeil Initialisation : tous les pixels à moins l’infini Projection de tous les polygones On met à jour les pixels de la projection du polygone

Z-buffer : algorithme Pour chaque polygone : Projeter le polygone sur le plan image Pour chaque pixel dans la projection du polygone Calculer la valeur de z pour ce pixel Si z > à la valeur courante de z max Changer z max Afficher le pixel à l’écran, de la couleur du polygone

Z-buffer (1) -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞

Z-buffer (2) -∞ 1 -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ 1 1 1 -∞ -∞ -∞ -∞ -∞ -∞ 3 3 3 3 3 -∞ -∞ -∞ -∞ 3 -∞ 3 -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞

Z-buffer (3) -∞ 1 -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ -∞ 1 1 2 2 2 2 2 2 2 -∞ 2 2

Z-Buffer : pour ou contre Facile à implémenter, scan-line Travaille dans l’espace image Rapide Contre : Coût en mémoire aliasing artefacts

Z-Buffer Combien d’information ? Combien de bits pour z max ? Limité par la mémoire : 8 bits, 1024x1280: 1.25 Mb 16 bits, 1024x1280: 2.5 Mb Nécessaire pour la séparation des objets proches : 8 bits, distance minimale entre objets de 0.4 % (4mm pour 1m) 16 bits, distance minimale de 0.001 % (1mm pour 1km) Que se passe t-il en dessous de cette limite ?

Plan Historique Pipeline graphique Transformations Image, couleur Rasterisation Visibilité Illumination

Illumination Les primitives sont éclairées selon leur matériau, le type de surface et les sources de lumière. Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Illumination Quelle couleur doit-on afficher pour ce pixel ? Dépend de Interaction de la lumière avec la scène et l’oeil Dépend de

Illumination Quelle couleur doit-on afficher pour ce pixel ? Dépend de Interaction de la lumière avec la scène et l’oeil Dépend de position du point dans l’espace orientation du point (élément de surface) caractéristiques de la surface (diffusion, réflexion, transparence…) sources de lumière (surfaciques, ponctuelles…) Position et orientation de la “caméra”

La lumière Onde et corpuscule => propagation et transport Un photon transporte une énergie à une longueur d’onde donnée A chaque interaction il peut changer sa direction et sa couleur (spatial et spectral) réflexion, transmission, réfraction, absorption, diffraction et interference Si un photon passe par la position de l’oeil tout en intersectant la fenêtre graphique, alors sa couleur contribue au pixel qu’il traverse Comment suivre une infinité de photons ? Illumination locale, ombrage, illumination globale

Modèles d'illumination locale Une seule source de lumière ponctuelle Pas d’interactions entre objets pas d’ombres, pas d’effet miroir… Calcul de la couleur en chaque point

BRDF : Bi-directional Reflectance Distribution Function

Rapport entre la quantité de lumière reçue et émise Décrit complètement le comportement de la surface en chaque point et pour chaque direction d’émission et de réception

Modèle complexe et difficile à obtenir Il existe des systèmes de saisie

Modèles simplifiés Lumière ambiante source lumineuse non ponctuelle qui émet de manière constante dans toutes les directions et sur toutes les surfaces une lumière d'intensité Ia Pour un point P de la surface, intensité lumineuse : I(P) = ρa Ia Constante en tous points de la surface ρa facteur qui détermine la quantité de lumière ambiante réfléchie par la surface fonction des propriétés matérielles de la surface (0 <= ρa <= 1).

On augmente ρa On ne voit pas la 3D Modélise simplement l’interréflexion entre toutes les surfaces d’une scène Evite qu’un objet dans l’ombre soit complètement noir

Surfaces Lambertiennes (mates : craie, papier) Réflexion diffuse source lumineuse ponctuelle qui émet de manière constante dans toutes les directions Surfaces Lambertiennes (mates : craie, papier) l'intensité en un point de la surface dépend uniquement de l'angle entre la normale à la surface et la direction du point à la source lumineuse BRDF uniforme Surface

q I(P) = ρd I cos θ = ρd I NP • LP I : intensité de la source lumineuse ponctuelle ρd : coefficient de réflexion diffuse de la surface (propriété matérielle : 0 <= ρd <= 1) NP : normale à la surface au point P LP : direction du point P à la source lumineuse N L q P

On augmente ρd, ρa = 0

Diffuse + ambiante ρa ρd

Loi de Snell / Descartes Réflexion spéculaire Surfaces brillantes (miroir) Loi de Snell / Descartes la lumière qui atteind l’objet est réfléchie dans la direction ayant le même angle BRDF : distribution de Dirac n   r l Surface

Problème : avec une source de lumière ponctuelle, l’effet n’est visible que dans une direction Utile pour l’illumination indirecte (ombres, miroirs) mais inutilisable pour calculer la couleur des pixels On suppose que la surface n’est pas parfaitement spéculaire Modèle de Phong q

Modèle de Phong [1975] : la réflexion est importante lorsque l'angle α entre la direction d'observation du point de la surface V et la direction de réflexion R (symétrique de la direction LP par rapport à NP ) est faible. Cette réflexion diminue de façon importante lorsque l'angle augmente. I(P) = ρs I cosn α n = rugosité :  (1024) pour un miroir, 1 pour une surface très rugueuse. L R q q a V P

ρs n

I(P) = ρa Ia + Fd I ( ρd NP • LP + ρs cosn α ) Modèle complet : on ajoute tout, on pondère avec un coefficient d’atténuation Fd I(P) = ρa Ia + Fd I ( ρd NP • LP + ρs cosn α ) Modèle coloré : une intensité par composante de couleur Plusieurs sources lumineuses : somme des intensités Transparence : combiner couleur de fond et couleur de l’objet. Un paramètre de transparence t. I = t.I(P) + (1-t).I(derriere P) Halo : la couleur dépend de l’épaisseur traversée

Cook-Torrance-Sparrow Model Une surface est constituée de microfacettes La lumière arrivant sur une facette subit toutes les interactions possibles Etude statistique qui dépend de la répartition des micro-facettes pour obtenir une BRDF valable sur toute la surface Pas de formule simple mais ce modèle approxime très bien les effets physiques des matériaux

Modèles d’interpolation (shading) Flat shading : pour les facettes polygonales. Calculer une seule valeur d'illumination pour l'ensemble de la facette Ex. point milieu de la facette en prenant pour normale à la surface celle du plan contenant la facette Cette approche est valide par rapport aux modèles d'illumination vus précédemment lorsque la source lumineuse est à l'infini la projection est orthographique la surface est composée de facettes polygonales uniquement

Problème : discontinuités le long des facettes L’oeil les voit très bien : effet Mach Banding Interpolation. Intensité perçue Intensité réelle

Gouraud shading : élimine les discontinuités d'intensité sur une facette polygonale par interpolation des valeurs d'intensité aux sommets de la facette Calcul des normales aux sommets Calcul des intensités aux sommets des facettes polygonales Interpolation par un algo de balayage

Phong shading : calcul des normales par interpolation => Permet de traiter les effets spéculaires contenus dans une facette

Interpolation par balayage : perspective, rotation Problèmes Interpolation par balayage : perspective, rotation Normales : A B C D Normales aux sommets Normales aux faces

Prochains épisodes en rendu Quels traitements on peut faire sur la scène pour accélérer le rendu ou pour améliorer le résultat visuel ? Textures et matériaux Rendu temps-réel Calcul des ombres Visibilité Niveaux de détails Image-based rendering Illumination globale Rendu expressif