IFT3355: Infographie Visibilité

Slides:



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

Constructive Volume Geometry (CVG) Article de Min Chen & John V. Trucker COMPUTER GRAPHICS Benoît Capelli – Stéphane Renaudie DESS IMM
Hierarchical Z-Buffer Visibility
Unstructured Lumigraph Rendering
The Reyes Image Rendering Architecture
Accélération du Rendu Volumique basée sur la Quantification des Voxels
Visible Surface Determination (Hidden Surface Removal)
Technique des Surfels Surfels: Surface Elements as Rendering Primitives SIGGRAPH 2000 H.Pfiste, J.van Baar, M.Zwicker, M.Gross.
Matthias Zwicker Hanspeter Pfister Jeroen van Baar Markus Gross
Efficient Simplification of Point-Sampled Surfaces
Ray Tracing Acceleration Techniques A Survey of Ray Tracing Acceleration Techniques James Arvo et David Kirk Ray Tracing on Programmable Graphics Hardware.
Détection des collisions dans un moteur 3D temps réel
Le microscope.
Synthèse d’images.
Scène de test (60000 polygones, 4000m2)
Comment afficher rapidement un univers immense ?.
Modèles empiriques d’éclairement
IMAGIS-GRAVIR / IMAG Rendu de forêts en temps-réel iMAGIS / GRAVIR Franck Sénégas DEA IVR Tuteur: Fabrice Neyret.
Etude d’un instrument d’observation astronomique
Lancer de rayons interactif
Traitements d'images et Vision par ordinateur
La segmentation
FICHIERS : Définition : Algorithme général:
Sens conventionnel de déplacement de la lumière
Les fichiers indexés (Les B-arbres)
IFT3355: Infographie Courbes et surfaces
IFT3730: Infographie 3D Illumination locale
Modélisation de l’éclairage
Images synthètiques de haute qualité
OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
Calcul d’une scène visible
IFT3730: Infographie 3D Textures
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
Design dun système de vision embarqué. Application:
SUJETS SPÉCIAUX EN INFORMATIQUE I
Systèmes optiques chap2
Les points essentiels Les rayons lumineux; Sources lumineuses;
GAMMA CAMERA (images).
IFT3355: Infographie Courbes et surfaces
IFT3355: Infographie Transformations Géométriques
L’adaptativité pour un solveur de l’équation de Vlasov
IFT3355: Infographie Imagerie 2D
Modélisation géométrique de base
IFT3355: Infographie Textures et aliassage
IFT3355: Infographie Illumination locale
1 Modèles de particules Reeves, W. T., "Particle Systems - A technique for Modeling a Class of Fuzzy Objects," SIGGRAPH 83, Reeves, W. T., and.
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
GRAPHISME PAR ORDINATEUR
Un état de l’art sur les logiciels de détection de collision
Projet Lancer de Rayons
La Science – 8ème année Unité 2- L’optique
Etude des structures de données au coeur des algos 3D des FPS.(BL2) Vos noms ici, encadreur, etc…
Chapitre VIII Découpage d’une scène selon une fenêtre donnée.
CHAPITRE III Calcul vectoriel
Credits : Joëlle Thollot, Hector Briceño, Edmond Boyer
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.
Les schémas des rayons.
LCIN4U73 Bases géométriques de l’imagerie
Plan du cours Cours 1,2 : le pipeline graphique
Visualisation des flots optiques en 3D
GRAPHISME PAR ORDINATEUR
IFT3355: Infographie Plan © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.
1 CSI 4506: Introduction à l’Intelligence Artificielle La Recherche Adversariale.
Transcription de la présentation:

IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal

Visibilité 1. Pour créer une image, on doit premièrement effectuer la projection et le clippage 2. Pour une scène constituée d’objets opaques et non-réfléchissants, on doit ensuite déterminer ce qui est à l’avant pour chaque élément de l’image 3. Finalement, on doit afficher l’élément de l’image avec la bonne couleur

Visibilité Déterminer les surfaces visibles ou éliminer les surfaces cachées Il existe deux classes d’algorithmes pour résoudre le problème de la visibilité: Algorithmes en espace image Algorithmes en espace objet

1. Algorithmes en espace image Détermine pour chaque élément d’image (de p pixels), l’objet (de n objets) qui est le plus près du centre de projection tout en étant dans le volume de vision O(n p)‏ Ex: 100 x (640x480) = 30,720,000 opérations

1. Algorithmes en espace image - Précision dépend de la résolution de l’image - La visibilité doit être recalculée à chaque changement de résolution et/ou de positionnement de la fenêtre + Les algorithmes et leurs structures sont habituellement plus simples Ex: tampon de profondeur, balayage de lignes, subdivision, lancer de rayons

2. Algorithmes en espace objet Détermine entre chaque objet lequel est devant l’autre étant donnée la direction de projection O( )‏ Ex: 100 x 100 = 10,000 opérations

2. Algorithmes en espace objet + Précision dépend de la résolution des objets + La visibilité est indépendante de la résolution de l’image et peut même être indépendante de la position de la fenêtre - Les algorithmes et leurs structures sont habituellement assez complexes Ex: algorithme du peintre, octree, arbres BSP

Cohérences Hiérarchies en 3D Face polygonale (si aucune inter-pénétration)‏ Changements seulement aux segments Faces orientées vers l’arrière (backface culling)‏ Similarités entre lignes de balayage adjacentes Similarités entre régions adjacentes de l’espace Similarités de profondeur pour des parties d’un même objet Similarités dans une séquence d’images

Tampon de profondeur (z-buffer)‏ Initialise tous les pixels rgb (x,y) = couleur arrière-plan z (x,y) = distance arrière-plan Pour chaque objet, scan-conversion dans le tampon Pour chaque pixel (x,y) couvert par l’objet Si distance-objet (x,y) < z (x,y)‏ z (x,y) = distance-objet (x,y)‏ rgb (x,y) = couleur objet

Tampon de profondeur (z-buffer)‏ * * * 3 4 4 4 5 * * * * * * * * * * * * * 3 * * * * * * 3 3 4 * * * * 3 3 4 4 * * * * 3 4 4 4 5 * * * * * * * * * * 5 6 * * * * * 5 6 6 * 3 * * * * 6 7 3 3 4 * * * * 3 3 4 4 *

Tampon de profondeur (z-buffer)‏ Scan-conversion: remplissage par balayage Profondeur:

Interpolation bilinéaire (alternative)‏ Y X Interpole aussi: couleur, texture, normale, etc.

Tampon de profondeur (z-buffer)‏ Avantages/désavantages: + simplicité, généralité + hardware, parallélisme - mémoire additionnelle pour les tampons + aucune mémoire pour conserver la scène - aliassage (en XY et en Z)‏

Z-fighting dérivée de chaque côté taille des bins en espace monde Majeed Hayat dérivée de chaque côté taille des bins en espace monde Donc rendre aussi petit que possible correspond à minimiser f et maximiser n Donc rendre aussi petit que possible correspond à minimiser f et maximiser n

Partition de l’espace Dans l’algorithme du peintre, les objets sont ordonnés en fonction de leur distance à la fenêtre, et ils sont affichés du plus éloigné au plus rapproché Ex: celluloïdes, VLSI Dans certains cas, cet ordre est impossible sans découpage au préalable

Octree Pour n’importe quel point de vue, on peut énumérer les faces d’un cube de la plus éloignée à la plus rapprochée. Cette approche se généralise à l’octree En alternant selon X, Y, Z et glissant le plan de subdivision, on obtient un kd-tree

Partition binaire de l’espace (BSP tree)‏ L’octree se généralise à son tour à la partition binaire de l’espace en se servant des plans de support des polygones comme éléments de séparation + Très utile lorsque la scène est statique mais que le point de vue peut être n’importe où dans la scène

Création d’une partition binaire BSPTree * BSPMakeTree (liste de polygones)‏ choisit un polygone comme racine pour tous les autres polygones p si p est devant, ajoute p à la liste de devant si p est derrière, ajouter p à la liste de derrière sinon, découpe p en deux par rapport au plan de la racine et ajoute chaque moitié à sa liste respective BSPTree = BSPCombineTree ( BSPMakeTree (liste de devant), racine, BSPMakeTree (liste de derrière))‏

Exemple de construction d’arbre BSP

Découpage en 3D T1 = (a,b,A) T2 = (b,B,A) T3 = (A,B,c)

Ordonnancement dans un arbre BSP Si l’oeil est d’un côté d’un plan, les objets de l’autre côté ne pourront jamais être devant un objet du même côté du plan que l’oeil On peut donc traverser l’arbre de derrière à devant pour tout point de vue en affichant simplement avec un algorithme du peintre

Algorithme d’affichage d’un arbre BSP AfficheArbre (sousArbre)‏ si l’oeil est devant la racine AfficheArbre (sousArbre->arrière)‏ AffichePolygone (sousArbre->racine)‏ AfficheArbre (sousArbre->devant)‏ sinon // si aucun backface culling

Avantages et inconvénients du BSP + Les plans de la pyramide de vue peuvent être utilisés pour le clippage avec BSP + Si l’illumination (shading) est coûteuse, on peut aussi afficher de devant à derrière en n’affichant un pixel que s’il n’a pas déjà été affiché + On peut aussi traiter les ombres de sources de lumière ponctuelles Obtenir un arbre BSP avec le moins de polygones coupés est une tâche complexe Problèmes de robustesse en créant des polygones étroits

Optimization du BSP Racine T1: 2 nodes Racine T2: 4 nodes n objets: n! possibiliés

Lancer de rayons (ray tracing/ray casting)‏ Généralement, les techniques précédentes en espace image projettent les objets sur une fenêtre. Il faut alors projeter tous les n objets: O(n p)‏ Le lancer de rayons (ou ray casting pour ne traiter que la visibilité) consiste à lancer un rayon au travers de la fenêtre pour identifier la première surface entre la fenêtre et la scène 3D: O(n res) pour res pixels Traitement pixel par pixel plutôt que objet par objet Utilisé aussi pour le picking

Lancer de rayons - Le rayon Un rayon est défini par une origine une direction définie par un point sur la fenêtre Sous forme paramétrique, un rayon s’exprime comme

Lancer de rayons - Intersection avec un plan L’intersection d’un rayon avec un plan (A,B,C,D)‏ consiste à exprimer le plan en fonction de la forme paramétrique du rayon Pour l’intersection avec un polygone, il faudra déterminer si le point d’intersection est à l’intérieur du polygone

Lancer de rayons - Intersection avec une sphère Similairement pour l’intersection d’un rayon avec une sphère 0, 1 ou 2 intersections réelles

Lancer de rayons - Visibilité au pixel Pour identifier la surface visible du pixel, il suffit d’intersecter tous les objets et de ne conserver que l’intersection ayant la plus petite valeur positive de t

Lancer de rayons récursif (ray tracing)‏ Le premier rayon identifie la visibilité à partir de l’oeil Du point d’intersection, d’autres rayons peuvent être tracés pour déterminer la visibilité des lumières et calculer leurs contributions Du point d’intersection, d’autres rayons peuvent aussi être tracés pour déterminer les contributions de la réflexion et de la transmission/réfraction On doit s’assurer de ne pas ré-intersecter l’objet au nouveau point de départ (surface acné)‏ ajouter une distance epsilon au rayon (trouver la bonne valeur par rapport aux objets et la scène)‏ ne pas intersecter la surface elle-même (plus limité: surface convexe et test par rapport à la normale)‏

Lancer de rayons récursif (ray tracing)‏

Lancer de rayons: types de rayons Rayons d’ombre: Rayons réfléchis: 

Lancer de rayons: types de rayons Rayons transmis / réfractés: (la loi de Snell)

Lancer de rayons: réfraction

Intersection en espace objet (instancing) espace monde espace objet

Accélérations du lancer de rayons Rayon - objet algorithmes d’intersection volumes englobants Moins d’intersections par rayon subdivisions d’espace techniques directionnelles hiérarchies de volumes englobants Moins de rayons contrôle de profondeur statistiques Rayons généralisés faisceau conique paraxial

Volumes englobants boîte orientée (OBB)‏ espace objet boîte alignée sur les axes (AABB)‏ hiérarchie de boîtes englobantes (BVH)‏

Grilles 3e test: intersection valide, dans le voxel, stop 2e test: intersection hors du voxel courant 1er test: aucune intersection

Lancer de rayons distribués Anti-aliassage échantillonnage régulier échantillonnage stratifié (jitter)‏ Pénombres échantillonner la lumière échantillonner l’angle solide formé par la lumière Profondeur de champ échantillonner les lentilles (simulées) d’une caméra Réflexion glossy échantillonner le cone de réflexion Flou de mouvement échantillonner (le mouvement dans) le temps

Lancer de rayons distribués Anti-aliassage échantillonnage régulier échantillonnage stratifié (jitter)‏ Pénombres échantillonner la lumière échantillonner l’angle solide formé par la lumière Profondeur de champ échantillonner les lentilles (simulées) d’une caméra Réflexion glossy échantillonner le cone de réflexion Flou de mouvement échantillonner (le mouvement dans) le temps

Lancer de rayons distribués Anti-aliassage échantillonnage régulier échantillonnage stratifié (jitter)‏ Pénombres échantillonner la lumière échantillonner l’angle solide formé par la lumière Profondeur de champ échantillonner les lentilles (simulées) d’une caméra Réflexion glossy échantillonner le cone de réflexion Flou de mouvement échantillonner (le mouvement dans) le temps

Lancer de rayons distribués Anti-aliassage échantillonnage régulier échantillonnage stratifié (jitter)‏ Pénombres échantillonner la lumière échantillonner l’angle solide formé par la lumière Profondeur de champ échantillonner les lentilles (simulées) d’une caméra Réflexion glossy échantillonner le cone de réflexion Flou de mouvement échantillonner (le mouvement dans) le temps

Lancer de rayons distribués Anti-aliassage échantillonnage régulier échantillonnage stratifié (jitter)‏ Pénombres échantillonner la lumière échantillonner l’angle solide formé par la lumière Profondeur de champ échantillonner les lentilles (simulées) d’une caméra Réflexion glossy échantillonner le cone de réflexion Flou de mouvement échantillonner (le mouvement dans) le temps

Lancer de rayons distribués Anti-aliassage échantillonnage régulier échantillonnage stratifié (jitter)‏ Pénombres échantillonner la lumière échantillonner l’angle solide formé par la lumière Profondeur de champ échantillonner les lentilles (simulées) d’une caméra Réflexion glossy échantillonner le cone de réflexion Flou de mouvement échantillonner (le mouvement dans) le temps

Submissions 2007

Weathering