Lien de la note Hackmd
La Radiosite
On essaye d’estimer la “radiosite” de chaque element de la scene, c’est a dire la quantite d’energie de chaque element emet…
- $B_i$ la radiosite de la surface $i$
- $E_i$ la quantite de lumiere emise par la surface $i$
- $P_i$ la fraction de lumiere incidente qui est reflechie par la surface $i$
- $F_{ij}$ la fraction de lumiere quittant la surface $i$ et atteignant la surface $j$
Calcul des $F_{ij}$ par hemi-cubes On projet un triangle, la partie bleue est la projection de ce triangle.
Cela nous donne le niveau d’energie recue par “petits carres”.
Ne permet pas directement de calculer une vue de la scene mais simplement l’illumination globale
- Avantages:
- Prend mieux en compte les sources secondaires
- Calculee une fois pour toutes
- Inconvenients
- Tient compte de la diffusion
- Assez lourd
- Obligation d’avoir un maillage (il faut discretiser les surfaces)
- Objets transparents ?
Photon map
- Pre-calcul de l’illumination de la scene
- Lancement des rayons lumineux depuis les sources et calcul des accumulations des photons
- Avantages:
- Permet de modeliser plus proprement les sources secondaires, les ombres portees (…) et surtout les objets transparents (caustiques)
- Faire des ombres correctes sous les objets transparents
- Permet de modeliser plus proprement les sources secondaires, les ombres portees (…) et surtout les objets transparents (caustiques)
- Inconvenients
- Calculs
- Complexite
- Penible a coder
Resultats: video manquante :(
Ameliorations:
- Projection Maps
- Visual importance map (3-pass Technique)
- Shadow photons
- …
Path Tracing/Bidirectional Path Tracing
- Modelisation des proprietes de reflexion des surfaces: (Bidirectional reflectance distribution function BRDF) (idem pour la transmission)
- Si on a une surface et qu’on lance un laser, qu’elle est l’energie ressortante en fonction de l’angle d’incidence?
- Solution pour resoudre l’illumination
BRDF: Biderectional reflectance distribution function (Reflectivite bidirectionnelle)
Conservative: \(\int f_r(x,\theta,\theta_o)L_{input}(x, \theta_i)\vert\theta_i.N_x\vert\delta w_0\le 1\) Reciprocite de Helmholtz: \(f_r(x, \theta_i, \theta_o) = f_r(x,\theta_o^{-1}, \theta_i^{-1})\)
- Mesuree
- Goniophotometer
- …
- Modele
- Blinn-Phong
- Cook-Torrance
- GGX
- …
Principe du rendu:
Path Tracing
- Avantages:
- Rendu realiste
- Convient bien aux scenes d’exterieurs
- Prend bien en compte l’apport des autres objets
- Rend les caustiques
- Possibilite de modeliser les effets (profondeur de champ…)
- Inconvenients:
- len
- bruite (Il faut bcp d’iterations pour converger)
- difficile pour scenes avec des petites sources lumineuse (ou sources cachees)
Bidirection Path Tracing
Amelioration du calcul du rendu
- Lancement des rayons depuis l’observateur et depuis les sources
Avantages:
- Facilite la recherche du chemin vers la source lumineuse
- Permet de modeliser les petites sources lumineuses
PBGI: Point-Based Global Illumination
- Tres peu enseigne
- Beaucoup utilise dans l’industrie du cinema
- Monster Academy: 1er long-metrage en raytracing
- La-haut: utiliser PBGI
- SFX de Pirates des Caraibes avec PBGI
Methode pour estimer l’illumination globales
- Avantages:
- Rapide
- Image non bruitee (pas d’artefacts temporel)
- Inconvenients
- Pas aussi precis que le raytracing
- Difficile de gerer les effets miroir
Approximation de la scene par nuage de points
- Un point - un disque de couleur
- Calcul de l’illumination direct de la scene
- Approximation de la scene par nuage de points
- Un point = un disque de couleur
- Calcul de l’illumination directe de la scene
Regroupement des points
Calcul de l’illumiantion globale
- Calcul de la contribution des points sur un disque
- Pour les points eloignes
- Utilisation du cluster
- Pour les points proches
- Raytracing
- Pour les autres points
- Utilisation directe du disque
- Pour les points eloignes
Bilan et remarques
Rendus
Rendu simple
Rendu simple avec anti-aliasing
Rendu avec la radiosite
Rendu avec les photons
Rendu avec la radiosite et les photons
Rendu avec anti-aliasing
Bilan
- Raytracing
- Calcul de l’illumination en fonction d’un point de vue
- Calcul l’illumination approximatif : gère mal les objets transparents, les lumières secondaires, les ombres portées…
- On peut combiner cet algorithme avec des techniques de calcul d’illumination globale pour palier à ces problèmes
- Radiosity
- Calcul l’illumination globale
- Gère que la diffusion mais améliore l’apport des lumières secondaires
- PhotonMap
- Calcul l’illumination globale
- Plus diffcile à mettre en ÷uvre (implémentation, artéfacts…)
- Gère bien les objets transparents (caustiques) et éventuellement les ombres portées et les sources secondaires
- PathTracing
- Gère bien les objets transparents, les lumières secondaires, les ombres portées
- Calcul très long
- Risque d’apparition de bruit
- PBGI
Remarques sur l’implementation
- Doit être bien réfléchie
- Parallélisation possible
- Utilisation du GPU possible
- …
Modelisation
Pour chaque “forme” il faut être capable de:
- calculer la normale en chaque point
- calculer l’intersection avec une droite,
- éventuellement calculer les coordonnées de la texture
Calcul des intersections : dans le repère monde ou le repère objet ?
Pour aller plus loin
- Textures
- Autres effets (Brouillard, Bleu atmosphérique, …)
- …
- génération d’anaglyphes (cyan et rouge (espacement $\frac{1}{30} ∗ f$ ))
Post scriptum
Raycasting
Principe: On ne lance que les rayons depuis l’observateur et on ne calcul pas les rebonds…
(Raytracing est une extension du raycasting ?)
Wolfstein:
- On lance des rayons dans le plan!
La longueur du rayon permet de conclure sur la hauteur du mur
- 1 rayon donne 1 colonne de l’image + gestion des objets
Avanatages:
- Algorithme rapide
On est loin du rendu photoréaliste…