La synthèse d`images

publicité
II. Lancers de rayons & compagnie
LA SYNTHÈSE D'IMAGES
Plan du cours
I.
Techniques d’ombrage
II.
Lancers de rayons et consort
A.
L’algorithmique des lancers de rayon
B.
Suivis de rayons
C.
Suivis de lumière
D.
Techniques bi directionnelles
E.
Comparaisons
III.
Photon mapping
IV.
Radiosité
V.
Simple diffusion & milieux participants
VI.
Techniques hybrides
2
II. Lancers de rayons & compagnie
A. Le lancer de rayons
LA SYNTHÈSE D'IMAGES
Algorithme
 Principe
 On place la caméra virtuellement dans la scène
 On « muni » la caméra d’un écran (virtuel)
 On tire des rayons du centre focal de la camera a
travers chaque pixel de l’écran
 On suit ces rayons pour voir ce qu’ils touchent
4
Algorithme
 Algorithme
Image lancer_rayon(Scene s) {
pour chaque pixel p {
Calcul du rayon r passant par la focale caméra et le pixel p
last_inter = +infini
pour chaque objet o de la scène s {
si (intersection(r,o) < last_inter) {
calcul illumination c au point d’intersection
}
}
fixer la couleur c au pixel
}
renvoie image
}
Complexité ?
5
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
6
Calcul des 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
7
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
8
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  Ox  t u x

 y  Oy  t u y
z  O  t u
z
z

Ou, vectoriellement :
a x b y  c z  d  0
a Ox  b Oy  c Oz  d  t (au x  bu y  cu z )  0
t
a Ox  b Oy  c Oz  d
(au x  bu y  cu z )
equplan (O)
t

n.u
9
Intersections
 Exemple d’intersection : plan / rayon
 Avec objet canonique : plan z = 0
O
t z
uz
 Rapidité de calcul … après transformation
 Exemple d’intersection : sphère / rayon
 Vectoriellement, c’est plus simple !
10
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
11
Optimisations
 Algorithme de traversé rapide d’un rayon
 Amanatides & Woo (Eurographics 87)
 Exemple en 2D

Otv
Équation du rayon :
 Initialisation :
 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
12
Optimisations
 Algorithme de traversé rapide d’un rayon
loop {
if(tMaxX < tMaxY) {
tMaxX= tMaxX + tDeltaX;
X= X + stepX;
} else {
tMaxY= tMaxY + tDeltaY;
Y= Y + stepY;
}
NextVoxel(X,Y);
}
Comportement identique en 3D
13
Optimisations
 Problème de la traversée rapide :
A
B
1
2
3
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
14
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
15
Lancer de rayons de Whitted
 Modélisation de
l’illumination :
 Modèle de Whited (1980)
 Modèle de Phong
 Une composante de
transparence
 Non explicité
 Une composante de
réflexion
 Non explicité


L( x, u )   ( x, u ) 



(  d cos    s cos n  ) L(s)   s Ls (u ' )  t Lt (u ' ' )
s:sources
éventuellement n fois
16
Illumination
 Intervient dans le calcul de l’illumination




Éclairage directe de la lumière
L’ombre associée
Composante de réflexion
Composante de transmission
 Séparation des rayons en 2 groupes :
 Rayon d’ombre
 Seul la présence ou non d’occulteur est testée
 Rayon d’illumination
 On veut connaître les caractéristiques géométrique des
points d’intersection
17
Illumination
 Réflexion : réflexion spéculaire pure
I
N
R
Calculez R !
 Transmission pure :
 Snell-Descartes
n1 sin(1) n2 sin(2)
18
Lancer de rayons de Whitted
 Véritable algorithme du lancer de rayon
 Direction spéculaire u’ : direction spéculaire pure
 Direction transmise u’’ : transmission pure
 loi optique de snell-descartes
 Arrêt de la récursivité :
 Sortie de la scène
 Après n rebonds
19
Lancer de rayons de Whitted
 OpenRT :
 http://www.openrt.de/
 Bibliothèque de calcul en lancer de rayon
 Parallélisé & Distribué
20
Des défauts
 Lent
 Ne modélise pas :
 Les matériaux diffus
 Les caustiques
 Apparition de crénelage :
 Épaisseur nulle des rayons
21
II. Lancers de rayons & compagnie
B. Techniques de suivi de rayons
LA SYNTHÈSE D'IMAGES
Suivi de rayons
 Attention : Terminologie propre
 Suivi de rayons :
 Poursuite des rayons lumineux
 Dans le sens caméra / lumière
 Deux techniques :
 Suivi de chemin
 Distributed ray tracing
23
Suivi de chemins
 Auteurs :
 J.T. Kajiya (1986)
 Philosophie :
 Suivre un rayon
primaire jusqu’au
« bout »
 Choix des directions
de réflexion aléatoire
 On ne collecte la luminance qu’à la fin
 sources lumineuses / nombre max de réflexions
En anglais : PATH TRACING
24
Suivi de chemins
 Mise en œuvre :
 Sur une intersection :
 On calcul l’éclairage direct
 On choisi une direction de réflexion
 Guidée par la BRDF de l’objet
 On fait l’appel récursif sur ce nouveau rayon
 La luminance sera rajoutée
 Défauts :
 Bruit généré sur l’image
 Deux pixels consécutifs ne vont pas engendrer les
mêmes chemins lumineux
25
Distributed ray tracing
 Auteur :
 R. L. Cook, T. Porter,
and L. Carpenter
(1984)
 Philosophie :
 Pb : tout n’est pas
net dans la vie
 Solution : on tire
plutôt 2 fois (n fois)
qu’une !
26
Distributed ray tracing
 Suréchantillonage
 Sur les réflexions : modélise les BRDF
 Sur les transparences : modélise les BTDF
 Sur les sources lumineuses : modélisation des
ombres douces
 Sur le temps : motion blur
 Sur les pixels caméra : profondeur de champs
27
Distributed ray tracing
 Exemple : réflexion
 A partir des rayons primaires
 Touchent une surface
 Tirs de rayons secondaires
 Selon la BRDF
 Qui peuvent
devenir primaire
 Récursivité
28
Distributed ray tracing
29
Distributed ray tracing
 Défauts :
 Très très très long
 Complexité exponentielle sur le nombre de
récursion autorisée
 Problèmes liés au suréchantillonage
 Apparition de bruit
 Peut s’atténuer en envoyant beaucoup de rayons
30
II. Lancers de rayons & compagnie
C. Techniques de suivi de lumière
LA SYNTHÈSE D'IMAGES
Suivi de lumière
 Attention : Terminologie propre
 Suivi de lumière :
 Poursuite des rayons lumineux
 Dans le sens lumière / caméra
 Deux techniques :
 Suivi de photons
 Tracé de lumière : Monte Carlo Light Tracing
 Méthode des vecteurs lumineux
 Photon Mapping
32
Suivi de photons
 Auteurs :
 J. Arvo « Backward Ray Tracing » (1986)
 Philosophie : Suivre la lumière
 A partir de la caméra
 Sur surface spéculaire : rebond
 Sur surface diffuse : stockage
33
Suivi de photons
 Objectif :
 Obtention des caustiques
 Contraintes
 Deux types de surfaces :
 Parfaitement diffuses
 Parfaitement spéculaires
 Limité à une réflexion
diffuse
 Stockage :
 Dans des textures
34
Caustiques ?
 Définition :
 C’est une réflexion diffuse précédée d’une ou
plusieurs réflexions spéculaires (pures ou non)
 Phénomène très local et très global
35
Suivi de photons
 Mise en œuvre :
// Passe 1
Pour chaque source {
Choix rayon r
send_rayon(Rayon r, Scene s) {
if (objet o = intersect(s)) {
if (o.speculaire)
r.light += send_rayon(r’,s);
if (o.diffuse)
stockage(r,o.illumination_map);
}
}
}
// Passe 2
Rendu en lancer de rayon
Surfaces texturées par les illumination_map
36
Suivi de photons
 Algorithme efficace
 Limité par ses deux contraintes
 Défauts :
 Bonnes textures d’illumination
=> beaucoup de photons : algorithme lent
 Une texture par surface :
gourmand en mémoire ?
37
Tracé de lumière
 Auteur :
 P. Dutré, E. Lafortune, Y.D. Willems, Monte Carlo
Light Tracing with Direct Computation of Pixel
Intensities (1993)
 Philosophie :
 Suivre la lumière
 A chaque intersection,
modifier l’image
38
Tracé de lumière
 Mise en œuvre :
 Aux intersections :
 Absorption du rayon
 Choix aléatoire de la direction guidé par la BRDF de
la surface
 Projection directe de la luminance vers le centre
optique
 Défauts :
 Présence de bruit dû au comportement aléatoire
 Nécessité de tirer beaucoup de particules
39
Vecteurs lumineux
 Auteurs :
 J. Zaninetti, J. Serpaggi, B. Péroche, A Vector
Approach for Global Illumination in Ray Tracing,
Eurographics’98
40
Vecteurs lumineux
 Philosophie :
 Séparer le calcul / le comportement de
 Contribution indirecte
 Contribution directe
 Caustiques
 Stockage de vecteurs d’illumination
 Dans des kdtree pour chaque surface
 Calcul différentié des vecteurs lumineux
 Chaque contribution en un point résulte en 2+n
vecteur lumineux
 n : nombre de source lumineuse
41
Vecteurs lumineux
 Mise en œuvre :
 2 passes
 Passe 1
 Sélection aléatoire de points dans la scène où les
vecteurs lumineux sont calculés
 Différentes méthodes de calcul :
 Caustiques : tirs focalisés sur les objets spéculaires
 Direct : échantillonnage de la source
 Indirecte : échantillonnage de l’hémisphère
42
Vecteur lumineux
 Mise en œuvre :
 Passe 2 : lancer de rayon classique
 En chaque point d’intersection, interpolation des
vecteurs lumineux les plus proches
 Si insuffisant, un calcul complet est réalisé
 Problèmes :
 Bruit de haute
et basse fréquence
 Echantillonnage
source
 Echantillonnage
43
II. Lancers de rayons & compagnie
D. Techniques bidirectionnelles
LA SYNTHÈSE D'IMAGES
Lancer de rayons bidirectionnel
 Auteurs :
 E.P. Lafortune, Y. Willems, Bi-directional Path
Tracing,CompuGraphics 93
 Philosophie :
 Suivre une paire de chemin lumière / caméra
Pour chaque point
d’intersection, envoyer un
rayon d’ombre pour tester
l’existence d’un chemin
et le conserver
45
Lancer de rayons bidirectionnel
 Mise en œuvre (simple)
 Suivre les deux chemins
 Pour chaque intersection
 Lancer un rayon d’ombre entre le nouveau point et
tout ceux de l’autre chemin
 Si la visibilité est ok : stockage du chemin
 Moyenne pondérée des flux sur les chemins
déterminé précédemment
46
Lancer de rayons bidirectionnel
 Exemples :
Bruit atténué mais pas
éliminé
47
Metropolis Light Transport
 Auteurs :
 E. Veach, L.J. Guibas, Metropolis Light Transport,
SIGGRAPH’97
 Nom issu d’une méthode de physique Metropolis
Sampling
 Idée :
 A partir d’un ensemble de rayons reliant lumières
et caméra
 Les faire muter
 Reconsidérer les nouveaux chemins
48
Metropolis Light Transport
 Mise en œuvre :
 Trois stratégies de mutation :
 Mutations bidirectionnelles
 Perturbations (écran / caustiques)
 Mutations écrans
 Chaque chemin ajoute sa contribution à l’écran
49
Metropolis Light Transport
 Résultats :
450 mutations par rayon
1000 mutations par rayon
algorithme optimisé :
Coherent Metropolis Light Transport (2007)
50
II. Lancers de rayons & compagnie
C. Quelques comparaisons
LA SYNTHÈSE D'IMAGES
Comparaisons
Bidirectional Ray Tracing
1400 s ; 25 rayons / pixel
Path Tracing
1510 s ; 100 rayons / pixel
52
Comparaisons
Lancer de rayon
Bidirectionnel
Path tracing
53
Comparaisons
Lancer de rayon
10 rayons par pixel
20 échantillons lumière
4 minutes
Bidirectional
Ray Tracing
: 300 rayons/pixel
Path Tracing
: 5000 rayons
par pixel ; 5h; 2h
54
Comparaisons
Path Tracing
200 rayons par pixel
MLT
55
Comparaisons
Bidirectionnal Ray Tracing
Metropolis Light Transport
Same rendering time
56
Comparaisons
57
Plan du cours
I.
Techniques d’ombrage
II.
Lancers de rayons et consort
III. Photon mapping
IV. Radiosité
V. Simple diffusion & milieux
participants
VI. Techniques hybrides
58
III. Photon mapping
LA SYNTHÈSE D'IMAGES
Plan du cours
I.
Techniques d’ombrage
II.
Lancers de rayons et consort
III.
Photon mapping
A.
Description générale
B.
Lancer de photon et cartes de photon
C.
Estimation sur les cartes de photon
D.
Lancer de rayon final & le modèle d’illumination
E.
Points forts et critiques
IV.
Radiosité
V.
Simple diffusion & milieux participants
VI.
Techniques hybrides
60
III. Photon mapping
A. Description générale
LA SYNTHÈSE D'IMAGES
Photon mapping
 Article fondateur :
 H.W. Jensen « Global Illumination using Photon
Maps », Rendering Techniques '96
 Méthode d’illumination globale
 Très réaliste
 Parallélisable
 Bonne modélisation des différents
comportements lumineux
 Idée phare :
 Choisir une méthode de traitement différente
pour chaque comportement de la lumière
62
Photon mapping
 Exemple :
63
Photon mapping
Photon Mapping
& Radiosité :
Amélioration de la
simulation des
échanges diffus dans
le photon mapping
S. Dumazet, V. Biri
64
Photon mapping
 Technique générale :
 Algorithme en 2 passes
 1ère passe : lancer de photon dans la scène
 Avec stockage des photons
 Dans des directions spécifiques
 2nde passe : lancer de rayon « classique »
 Définition d’un « nouveau » modèle d’illumination
 Algorithmique distinct pour chaque composant de
ce modèle
 Exploitation des cartes de photons de la première
passe
65
III. Photon mapping
B. Le lancer de photon et les cartes de photons
LA SYNTHÈSE D'IMAGES
Lancer de photons
 1ère passe : envoyer et stocker dans la scène
des photons lumineux
 Deux tirs distincts
 Carte de photon globale
 Utilisation d’une structure de stockage des photons
 Cartes de photon
 On tire les photons dans toute la scène
 A partir des sources lumineuses
 Permet une rapide et imprécise évaluation du
comportement de la lumière
67
Lancer de photons
 Algorithme :
Sélection d’une source lumineuse s
pour chaque photon p parmi N partant de s {
calculer l’intersection avec la scène
enregistrement de p dans la carte de photon globale
prolongation de p dans la scene
pour chaque surface touchée {
stocker un photon d’ombre po à l’intersection
}
roulette russe sur p pour être réémis en q
pondération de q par les propriétés matériaux
tant que q energie positive & q non “mort” {
faire l’intersection avec la scene
pondérer le photon par les propriétés matériaux
roulette russe sur q
}
}
68
Lancer de photons
 Lancer de photons : détails
 Cas particulier des photons issus des sources
 Prolongés pour détecter les zones d’ombre
 Accélération de la phase de rendu
 Réflexions
 Suivant les propriétés de réflexivité et de transmission,
faire un tirage de roulette russe
 Élimination du photon ou poursuite de la trajectoire
 Trajectoire déterminée aléatoirement en accord avec la
BRDF
 Suivant la nature de la réflexion (diffuse ou spéculaire), le
photon est « flagué » diffus dès qu’il subit une réflexion
diffuse et spéculaire sinon
69
Lancer de photons
 Lancer de photons : détails
 Conservation de l’énergie
 On donne aux photons une énergie moyenne :
p 
l
N photons
 A chaque réflexion, l’énergie du photon est pondéré
par les coefficients de réflexion du matériau
 Puis il est normalisé afin de conserver son énergie
totale
 Si sa couleur devient noire, alors il est éliminé
70
Lancer de photons
 2ème tir de photons : carte caustique
 Même schéma de tir
 Dans les directions des surfaces spéculaires
 100 fois plus de photons tirés par unité d’énergie
 Pour modéliser les caustiques, très locales
 Obtention des directions privilégiés
 Carte de projection
 Discrétisation en cellule de l’hémisphère de tir des
sources
 Lancer de rayon sur chaque cellule
 Flag si interception sur une surface spéculaire
 Tir uniquement sur cellule valide
71
Lancer de photons
 Structure de photon importante
 Taille mémoire critique
 Structure de Jensen :
 Compression de l’angle d’incidence
 Compression des « couleurs »
struct photon {
float x,y,z; //Position
char p[4]; //Power packed as 4 chars
char phi, theta; //Compressed incident direction
short flag; //Flag used in the Kdtree
}
72
Lancer de photons
 4 catégories de photons
 Photons directs
 Photons d'ombre
 Photons caustiques ou spéculaires
 Photons diffus
73
Lancer de photons
 Structure de stockage des photons
 Ce sont les fameuses cartes de photon
 Au choix mais :
 Nécessiter de les construire « rapidement »
 Opération courante : trouver les photons voisins d’un
point donné
 Le Kdtree s’impose
 J. L. Bentley, Multidimentionnal Binary Search Trees
Used for Associative Searching, ACM Student Award
1975
 Un Kdtree pour la carte de photon globale
 Un autre pour la carte de photon caustique
74
Lancer de photons
 Exemples de carte de photon
75
III. Photon mapping
C. Estimation sur les cartes de photons
LA SYNTHÈSE D'IMAGES
Estimations
 Problème clé :
 Étant donné un point de l’espace, quelle est son
énergie ?
 Méthode
 Quérir les n photons les plus proches
 Représentent l’illumination à partir du point
 Éclairement énergétique ou luminance pondérés par
la BRDF au point considéré
 Utilisé directement au rendu (caustique)
 Besoin d’une méthode précise
77
Estimations
 Recherche des photons proches :
 Utilisation du kdtree
 Deux stratégies :
 Tous les voisins dans une sphère
 Potentiellement beaucoup de photons
 Taille de lissage fixe
 N plus proches voisins
 Taille de lissage adaptative
 Attention à ne pas aller trop loin …
78
Estimations
 Filtrage
 Saut de luminance à l’ajout / retrait de photons
 Nécessité de pondérer la contribution des photons
 Utilisation d’un filtre
 Exemple : filtre gaussien

 2
 1  e 2r
w   1 

1

e


d 2p





dp : distance au photon
r : rayon maximal
α,β : constantes
79
Estimations
Filtre gaussien
Filtre conique
80
III. Photon mapping
D. Modèle d’illumination & lancer de rayon final
LA SYNTHÈSE D'IMAGES
Lancer de rayon
 Caractéristique du photon mapping : Scinder
l’illumination en 4 facteurs
 Illumination directe des sources
 Illumination spéculaire
 Illumination caustique
 Illumination indirecte diffuse
 Chaque type a son traitement spécifique
 Utilisation d’un lancer de rayon traditionnel
 Utilisant les cartes de photons précédentes
82
Lancer de rayon
 Illumination directe : L(S|D)
 Calcul du modèle de Phong (par exemple)
directement par le lancer de rayon

N
L( x,  )   F ( x,  , li ) Li ( x, li ) n.li
i 1
F : BRDF de la surface
x : point sur la surface
n : normale en x à la surface
li : vecteur directeur en
provenance de la ième source
Li : luminance de la ième source
 Cohérence énergétique :
p 
l
N photons
N photons p   l ( x). d

83
Lancer de rayon
 Gestion des ombres
 On exploite la carte de
photon globale
 Heuristique :
 Photons voisins :
 Très large pourcentage
de photons directs : point
éclairé
 Très large pourcentage
de photons d’ombre :
point ombré
 Sinon, on tire un rayon
Visualisation des zones d'ombres : en rouge les
zones indéterminées, en blanc les zones
éclairées et en noir les
zones d'ombres.
84
Lancer de rayon
 Illumination spéculaire (L|LD)S+
 Utilisation du lancer de rayon classique

 Équation : L( x,  )   Fs ( x, ,  ') ( Lis ( x,  ')  Lid ( x,  ')) n. ' d '

 Illumination caustique (LS+D)

 Équation : L( x,  )   Fd ( x, ,  ') Lis ( x,  ') n. ' d '

 Utilisation de la carte de photon caustique
 Photons spéculaires
85
Lancer de rayon
 Illumination indirecte diffuse (L(S*D)+S*D)
 Utilisation de la carte de photon globale
 Photons diffus uniquement
 Équation :

L( x,  )   Fd ( x, ,  ') Lid ( x,  ') n. ' d '

86
III. Photon mapping
D. Points forts & critiques
LA SYNTHÈSE D'IMAGES
Photon mapping
 Points forts :
 Segmentation des composantes de la lumière
 Traitement efficace sur chacun d’eux
 Souplesse du lancer de rayon
 Modélisation simple de nouveau modèle :
 Milieux participants
 BRDF
 Autres longueurs d’onde
 Peu de dépendance à la géométrie des modèles
 Modélisation & complexité
 Parallélisable et distribuable
88
Photon mapping
 Défaut :
 Méthode essentiellement statique
 Dès qu’un objet bouge, les cartes de photon sont
fausses
 Problème à l’estimation de l’énergie
 Aux bords des surfaces
 Dû au manque d’échantillonnage
 Mauvaise modélisation des échanges diffus
multiples
 Apparition d’un bruit de basse fréquence
89
Photon mapping
 Estimation de l’énergie : bords
90
Photon mapping
 Estimation de l’énergie : sous échantillonnage
91
Photon mapping
 Bruit de basse fréquence sur l’indirect diffus
Rendu mental ray
http://www.3dvf.com/
History of rendering
Rendu de l’indirect diffus
Dmitry Shklyar (3DVF)
S.Dumazet, V. Biri
V-Ray rendering (tutorial)
92
Photon mapping
 Solution pour éviter le bruit en diffus indirect :
Irradiance Gradiant
93
Téléchargement