Slides de la partie introduction au rendu

publicité
Synthèse d'images I
Venceslas BIRI
IGM
Université de Marne La
La synthèse d'images
II. Rendu & Affichage
1. Introduction
Venceslas BIRI
IGM
Université de Marne La
Introduction
 Objectif
– Réaliser une image …
• Nécessité de choix d’un point de vue
 Caméra
– … d’un environnement virtuel …
• Nécessité de modéliser le monde virtuel
 Objets
– … éclairé (réaliste)
• Nécessité de concevoir de l’éclairage
 Lumières
3
Introduction
 Rendu
A l’aide d’une caméra, d’objets et de lumière,
dessiner une image des objets visibles éclairé
par les lumières.
Source
lumineuse
La projection
La perception
Interaction
lumière matière
4
Introduction

Le coté caméra
– Position d’une caméra
dans l’environnement
virtuel
– Association d’un écran
(virtuel) à la caméra
– Cet écran est constitué
de pixel
– Appelé « buffer » ou
« framebuffer »
– Souvent en RGB
5
Introduction
 L’environnement virtuel / les objets
–
–
–
–
Modélisation géométrique
Positionnement dans la scène
Modélisation colorimétrique
Modélisation physique
6
Introduction
 Les lumières
– A positionner dans la scène
– Peuvent être de tout type :
•
•
•
•
Ponctuelle
Surfacique voire volumique
Directionnelle
Isotrope ou anisotrope
7
Introduction
 Cas d’étude :
– Illumination locale :
La couleur d’un objet ne dépend que des
caractéristiques (locales) de celui-ci et des
lumières de la scène.
– Modèle d’illumination simple
 Possibilité d’illumination plus complexe
– Réflexion & réfraction
– Ombres
8
Introduction
 Deux grandes approches
– Rasterisation
– Lancer de rayons
 2 philosophies :
– Rasterisation : polygone par polygone
– Lancer de rayons : pixel par pixel
9
Introduction
Rasterisation :
On part de la scène, et on envoie
sur la caméra
Lancer de rayon :
On part de la caméra, et on envoie
sur la scène virtuelle
10
La synthèse d'images
II. Rendu & Affichage
2. Anciennes techniques
Venceslas BIRI
IGM
Université de Marne La
De vieilles techniques

Rendu mode fil de fer
(<1960)
– Approche polygone par
polygone
– Algorithme :
• Pour chaque polygone
 Projeter ses points
sur l’écran
 Pour chaque couple
de point : dessiner
la droite
– Problème :
• pas de gestion des
occlusions
• Rendu pauvre
12
De vieilles techniques (2)
 Algorithme du peintre (<1970)
– Philosophie simple :
• Ordonner les triangles du plus lointain au plus proche
• Les dessiner dans cet ordre
– Problème pour certaines
intersections entre triangles
13
De vieilles techniques (3)
 Scanline rendering (1967 – 1970)
– Proche de la rasterisation
• Mix entre la rasterisation et le lancer de rayon
– Approche ligne par ligne
Exemple de rendu avec le moteur
Scanline Rendering Engine de
3DS max
14
De vieilles techniques (3)
 Scanline rendering
– Algorithme
• On ordonne les polygones en Y
• On initialise la liste des polygones visible de la
première ligne
• On avance ligne par ligne :
 On calcul les intersections entre la ligne (de vue) et les
polygones
 On actualise la liste en enlevant les polygones non
visibles
15
De vieilles techniques (3)
16
De vieilles techniques (3)
 Scanline rendering
– Avantages :
• Permet de n’avoir qu’un nombre limité d’objet en
mémoire à chaque instant (l’ensemble des polygones
coupant la scanline)
• Chaque pixel est visité une seule fois
– Inconvénient :
• Il faut trier les primitives (objets)
• Les structures de données à maintenir et qui peuvent
dépasser la taille mémoire d’un Z-buffer
17
De vieilles techniques (4)
 Hidden line drawing
– Rendu fil de fer mais en conservant l’occlusion
– En fait, rendu de surface en ne dessinant que
les bords…
18
De vieilles techniques (4)
 Render cache (1999) : philosophie
Source : « Interactive Rendering using the Render Cache »
Bruce Walter, George Drettakis, Steven Parker
Rendering techniques '99,
Volume 10, page 235--246 - Jun 1999
19
De vieilles techniques (4)
Aperçu
Display process
renderer
project
Render
cache
depth cull
interpolate
renderer
image
sampling
20
De vieilles techniques (4)
 Render cache : résultat après chaque étape
Projection
Depth cull
Interpolation
21
De vieilles techniques (4)
 Render cache : sampling
Importance Sampling
22
La synthèse d'images
II. Rendu & Affichage
3. Rasterisation
Venceslas BIRI
IGM
Université de Marne La
Rasterisation
 Rasterisation ou algorithme du Z-buffer
 Fondé sur :
– Algorithme de remplissage des polygones
• Quels pixels sont concernés par la projection d’un
triangle (ou autre polygone convexe) sur un écran 2D ?
– Algorithme du Z-buffer
– En anglais : to rasterize
 Omniprésent dans les applications temps
réel
–
–
Jeux vidéo
Simulateurs & RV
24
Rasterisation : principe
 Idée générale
– Chaque polygone convexe est projeté sur
l’écran (image de pixels)
– Les occlusions sont gérées grâce à une image
de profondeur : le Z-buffer
 Philosophie orienté objet
– La complexité est dépendante du nombre de
primitive
25
Rasterisation : algorithme
Transformation repère caméra
Illumination
Projection des primitives
Rasterisation
Gestion occlusion
Insertion dans l’image
Déterminer les
coordonnées des points
relativement à la caméra
Éventuellement,
déterminer la couleur des
sommets par rapport aux
Projeter lumières
les sommets des
primitives sur l’image 2D.
Comprend le culling
Déterminer les pixels
recouvert par la primitive
Utilisation du Z-buffer
pour comparer les
profondeurs
Écriture
des couleurs des
pixels dans l’image finale
26
Rasterisation : le Z-buffer
 Précision sur le Z-buffer
– Principe simple : on conserve la plus proche
profondeur dans le buffer
– Si on veut insérer un nouveau pixel dans l’image
finale, on compare sa « profondeur » à celle
présente dans le Z-buffer
• Plus proche, on insére dans l’image finale et on stocke
la nouvelle profondeur dans le Z-buffer
• Plus loin, on écarte le pixel
Nécessité de transmettre, pour chaque pixel à insérer,
sa profondeur vis-à-vis de la caméra
27
Rasterisation : pipeline
28
La synthèse d'images
II. Rendu & Affichage
4. Lancer de rayon
Venceslas BIRI
IGM
Université de Marne La
Lancer de rayons
 Algorithme du « ray casting » ou « ray
tracing »
– « ray tracing » plutot pour des algorithmes
évolué
• Illumination globale
 Fondé sur
– Aspect particulaire de la lumière
– Algorithme d’intersection & de géométrie
 Omniprésent
– Dans les techniques réalistes non temps réel
30
Lancer de rayons
 Idée générale :
– Depuis une caméra, lancer un rayon passant par
un pixel
– Suivre le rayon dans la scène
– A l’intersection, calculer la couleur
 Philosophie orienté image
– La complexité est dépendante du nombre de
pixel de l’image
31
Lancer de rayons
Lancer un rayon
Calcul intersection
Transformation rayon
Illumination
Pour chaque pixel de
l’image, lancer un rayon
entre le centre optique et
Calcul
la 1ère
ce de
pixel
intersection entre le
rayon et les objets
Le rayon est transformé
dans les repères locaux
des objets à intersecter
Éventuellement calculer la
couleur de l’objet par
rapport
aux
lumières
Écriture
des
couleurs
des
pixels dans l’image finale
Insertion dans l’image
32
Lancer de rayons
 Algorithme
Image
Image lancer_rayon(Scene
lancer_rayon(Scene s)
s) {{
pour
pour chaque
chaque pixel
pixel pp {{
Calcul
Calcul du
du rayon
rayon rr passant
passant par
par la
la focale
focale caméra
caméra et
et le
le pixel
pixel pp
last_inter == +infini
+infini
pour chaque
chaque objet
objet oo de
de la
la scène
scène ss {{
si
si (intersection(
(intersection(rr,,oo)) << last_inter)
last_inter) {{
calcul
calcul illumination
illumination cc au
au point
point d’intersection
d’intersection
}}
}
fixer
fixer la
la couleur cc au
au pixel
pixel
}}
renvoie
renvoie image
image
}}
Complexité ?
33
Lancer de rayons : algorithme

Plusieurs étapes :
1. Calcul des rayons r
2. Calcul de l’intersection
3. Calcul de l’illumination

Amélioration de la complexité :
– Boucle for orange !

Augmentation de la complexité :
– Récursivité sur l’instruction en bleue
34
Lancer de rayons : rayons
 Calcul des rayons : rayons centrés
– Détermination d’un coin de la grille
• Plus un demi pixel en hauteur et en largeur
– Pour chaque rayon on avance de la taille d’un
pixel
 Autres techniques :
– Détermination d’un point de manière
stochastique dans le pixel
– Détermination de n rayons dans un pixel
• Pixel sampling
35
Lancer de rayons : intersections
 Calcul de l’intersection :
– On utilise des primitives graphiques
• Sphère, cylindre, plan, carré, triangle, tore, ellipsoïde
– Chaque primitive définie dans un repère
canonique
• On détermine précisément les conditions
d’intersection rayon / objet
– Chaque primitive est placée dans la scène par
transformation
• Les rayons subiront la transformation afin de les
ramener dans le repère canonique des primitives
36
Lancer de rayons : intersections
 Stratégie de calcul d’intersection
– Équation paramétrique du rayon
– Équation cartésienne de l’objet
• Donne une condition sur le paramètre du rayon
 Exemple d’intersections : rayon / plan
{
x=O x t u x
y=O y t u y
z=O z t u z
Ou, vectoriellement :
a x by  c z  d = 0
a O x b O y c O z d t  au x bu ycu z =0
t=−
a O x b O y c O z d
 au x bu y cu z 
equplan O 
t=−
n . u
37
Lancer de rayons : intersections
 Exemple d’intersection : plan / rayon
– Avec objet canonique : plan z = 0
Oz
t=−
uz
– Rapidité de calcul … après transformation
 Exemple d’intersection : sphère / rayon
– Vectoriellement, c’est plus simple !
38
Lancer de rayons : optimisations
 Optimisation sur boucle orange
– Objectif : Se libérer de la dépendance à la scène
– Utilisation de structure de données (scène)
accélératrice :
•
•
•
•
•
•
BSP Tree
Grille uniforme
KDTree
Octree
Hiérarchie de volume englobant
Autres variantes (Hierarchie de grille uniforme…)
– Algorithme de traversée rapide
39
Lancer de rayons : optimisations
 Algorithme de traversé rapide d’un rayon
–
–
–
Amanatides & Woo (Eurographics 87)
Exemple en 2D Équation du rayon : Ot
Initialisation :
v
• Trouver le voxel X,Y origine de O
 Si pas dans la grille : trouver le premier point O
• Initialiser stepX et stepY à +1 ou -1 suivant le signe
des coordonnées de v
• Calcul de tMaxX et tMaxY, mesure du déplacement (en
t) avant de croiser la prochaine cellule sur l’axe des x
et des y
• Calcul de tDeltaX, tDeltaY, déplacement (en t) pour se
décaler d’un pixel en largeur et hauteur
40
Lancer de rayons : optimisations
 Algorithme de traversé rapide d’un rayon
loop
loop {{
}}
if(tMaxX
if(tMaxX < tMaxY) {
tMaxX=
tMaxX= tMaxX + tDeltaX;
X=
X= X
X ++ stepX;
stepX;
}} else
else {
tMaxY=
tMaxY= tMaxY + tDeltaY;
Y=
Y= Y
Y ++ stepY;
stepY;
}}
NextVoxel(X,Y);
NextVoxel(X,Y);
Comportement identique en 3D
41
Lancer de rayons : optimisations
 Problème de la traversée rapide :
A
1
2
3
B
Solution :
vérifier la valeur d’intersection de t
par rapport au tmax autorisée pour la cellule donnée
Optimisation supplémentaire :
Chaque objet stocke l’identifiant du dernier
rayon à l’avoir intersecté. Ainsi on ne calcule jamais
deux fois la même intersection objet / rayon
42
Lancer de rayons : optimisations
 Traversée rapide et structure hierarchique
– Pour BSP Tree / Octree / Hiérarchie de volume
englobant / KDTree
• Tous ont des structures d’arbre
– Méthode d’intersection récursive
• Parcours de l’arbre :
 Test sur le nœud
 Détermination de l’ordre de test sur les fils
 Récursivité dans cet ordre sur les fils
Explications détaillées (octree) dans
Geometric Data Structures for Computer Graphics
Gabriel Zachmann & Elmar Langetepe
Course notes
43
Lancer de rayons
 Illumination : possibilités
– Couleur constante
– Modèle d’éclairement pour chaque source
• blinn-phong
• Tir de rayon d’ombre vers les sources
– Suivi du rayon :
•
•
•
Dans la direction de réflexion spéculaire pure
Dans la direction de transmission
Algorithme récursif
44
La synthèse d'images
II. Rendu & Affichage
5. Comparaison des 2 approches
Venceslas BIRI
IGM
Université de Marne La
Comparaison
 Dernières technologies en lancer de rayons
– OpenRT
• VIDEO !
– Nvidia : OptiX
• Lancer de rayon sur GPU
• VIDEO !
46
Comparaison
 Rasterisation
– Toujours à la pointe
• Nombre de processeur augmentant
– Ambiant Occlusion
– Alléger la dépendance à la scène : Deferred
Shading (Rendu différé)
47
Comparaison
 Avantages
– Lancer de rayons :
• Peut être indépendant du nombre de primitive de la
scène
 avec structure de données
• Souplesse de calcul
• Représente la physique sous jacente
– Rasterisation
• Peut travailler dans l’espace image (deferred shading)
• Adapté à la parallélisation
48
Comparaison
 Inconvénient
– Lancer de rayons
• Stockage de la scène problématique pour
parallèlisation
• Complexité peut exploser
• Dépendance à la résolution
– Rasterisation
• Dépendance à la scène
• Z-test final : beaucoup de travail pour rien
• Limitation sur les effets représentables
49
Téléchargement