la synthèse d'imagesigm.univ-mlv.fr/~biri/enseignement/mii2/tdpdf/lancer_de...amanatides & woo...
TRANSCRIPT
-
LA SYNTHÈSE D'IMAGES
II. Lancers de rayons & compagnie
-
2
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
-
LA SYNTHÈSE D'IMAGES
II. Lancers de rayons & compagnie A. Le lancer de rayons
-
4
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
-
5
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é ?
-
6
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
-
7
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
-
8
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
-
9
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
zz
yy
xx
utOz
utOy
utOx 0 dzcybxa
0)( zyxzyx cubuautdOcObOa
)( zyx
zyx
cubuau
dOcObOat
Ou, vectoriellement : un
Oequplant
.
)(
-
10
Intersections
Exemple d’intersection : plan / rayon
Avec objet canonique : plan z = 0
Rapidité de calcul … après transformation
Exemple d’intersection : sphère / rayon
Vectoriellement, c’est plus simple !
z
z
u
Ot
-
11
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
-
12
Optimisations
Algorithme de traversé rapide d’un rayon Amanatides & Woo (Eurographics 87) Exemple en 2D 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
Équation du rayon : vtO
-
13
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
-
14
Optimisations
Problème de la traversée rapide :
1 2 3 B
A
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
-
15
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
-
16
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é
)''()'()()coscos(),(),(
:
uLuLsLuxuxL ttsssourcess
nsd
éventuellement n fois
-
17
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
-
18
Illumination
Réflexion : réflexion spéculaire pure
Transmission pure :
Snell-Descartes
N I R Calculez R !
)sin()sin( 2211 nn
-
19
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
-
20
Lancer de rayons de Whitted
OpenRT :
http://www.openrt.de/
Bibliothèque de calcul en lancer de rayon
Parallélisé & Distribué
-
21
Des défauts
Lent
Ne modélise pas :
Les matériaux diffus
Les caustiques
Apparition de crénelage :
Épaisseur nulle des rayons
-
LA SYNTHÈSE D'IMAGES
II. Lancers de rayons & compagnie B. Techniques de suivi de rayons
-
23
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
-
24
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
-
25
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
-
26
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 !
-
27
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
-
28
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é
-
29
Distributed ray tracing
-
30
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
-
LA SYNTHÈSE D'IMAGES
II. Lancers de rayons & compagnie C. Techniques de suivi de lumière
-
32
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
-
33
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
-
34
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
-
35
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
-
36
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
-
37
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 ?
-
38
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
-
39
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
-
40
Vecteurs lumineux
Auteurs :
J. Zaninetti, J. Serpaggi, B. Péroche, A Vector Approach for Global Illumination in Ray Tracing, Eurographics’98
-
41
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
-
42
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
-
43
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
-
LA SYNTHÈSE D'IMAGES
II. Lancers de rayons & compagnie D. Techniques bidirectionnelles
-
45
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
-
46
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
-
47
Lancer de rayons bidirectionnel
Exemples : Bruit atténué mais pas éliminé
-
48
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
-
49
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
-
50
Metropolis Light Transport
Résultats : 450 mutations par rayon
1000 mutations par rayon algorithme optimisé : Coherent Metropolis Light Transport (2007)
-
LA SYNTHÈSE D'IMAGES
II. Lancers de rayons & compagnie C. Quelques comparaisons
-
52
Comparaisons
Bidirectional Ray Tracing 1400 s ; 25 rayons / pixel
Path Tracing 1510 s ; 100 rayons / pixel
-
53
Comparaisons
Lancer de rayon Bidirectionnel
Path tracing
-
54
Comparaisons
Lancer de rayon 10 rayons par pixel 20 échantillons lumière 4 minutes
Path Tracing : 5000 rayons par pixel ; 5h Bidirectional Ray Tracing : 300 rayons/pixel ; 2h
-
55
Comparaisons
Path Tracing 200 rayons par pixel
MLT
-
56
Comparaisons
Bidirectionnal Ray Tracing
Metropolis Light Transport Same rendering time
-
57
Comparaisons
-
58
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
-
LA SYNTHÈSE D'IMAGES
III. Photon mapping
-
60
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
-
LA SYNTHÈSE D'IMAGES
III. Photon mapping
A. Description générale
-
62
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
-
Photon mapping
Exemple :
63
-
64
Photon mapping
Photon Mapping & Radiosité : Amélioration de la simulation des échanges diffus dans le photon mapping S. Dumazet, V. Biri
-
65
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
-
LA SYNTHÈSE D'IMAGES
III. Photon mapping B. Le lancer de photon et les cartes de photons
-
67
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
-
68
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
}
}
-
69
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
-
70
Lancer de photons
Lancer de photons : détails Conservation de l’énergie
On donne aux photons une énergie moyenne :
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é
photons
lp
N
-
71
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
-
72
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
}
-
73
Lancer de photons
4 catégories de photons
Photons directs
Photons d'ombre
Photons caustiques ou spéculaires
Photons diffus
-
74
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
-
75
Lancer de photons
Exemples de carte de photon
-
LA SYNTHÈSE D'IMAGES
III. Photon mapping C. Estimation sur les cartes de photons
-
77
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
-
78
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 …
-
79
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
e
ew
r
d p
1
11
2
2
2 dp : distance au photon r : rayon maximal α,β : constantes
-
80
Estimations
Filtre gaussien Filtre conique
-
LA SYNTHÈSE D'IMAGES
III. Photon mapping D. Modèle d’illumination & lancer de rayon final
-
82
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
-
83
Lancer de rayon
Illumination directe : L(S|D)
Calcul du modèle de Phong (par exemple) directement par le lancer de rayon
Cohérence énergétique :
iii
N
i
i lnlxLlxFxL .),(),,(),(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
photons
lp
N
dxN lpphotons .)(
-
84
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.
-
85
Lancer de rayon
Illumination spéculaire (L|LD)S+
Utilisation du lancer de rayon classique
Équation :
Illumination caustique (LS+D)
Équation :
Utilisation de la carte de photon caustique
Photons spéculaires
''.)',()',,(),( dnxLxFxL isd
''.))',()',(()',,(),( dnxLxLxFxL idiss
-
86
Lancer de rayon
Illumination indirecte diffuse (L(S*D)+S*D)
Utilisation de la carte de photon globale
Photons diffus uniquement
Équation :
''.)',()',,(),( dnxLxFxL idd
-
LA SYNTHÈSE D'IMAGES
III. Photon mapping D. Points forts & critiques
-
88
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
-
89
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
-
90
Photon mapping
Estimation de l’énergie : bords
-
91
Photon mapping
Estimation de l’énergie : sous échantillonnage
-
92
Photon mapping
Bruit de basse fréquence sur l’indirect diffus
Rendu de l’indirect diffus S.Dumazet, V. Biri
Rendu mental ray http://www.3dvf.com/
History of rendering Dmitry Shklyar (3DVF)
V-Ray rendering (tutorial)
-
93
Photon mapping
Solution pour éviter le bruit en diffus indirect : Irradiance Gradiant