P1C5 - Modèle d'illumination globale Flashcards
utilisation du modèle
- parties cachées
- ombres portées
- réflexions, réfraction, interaction spéculaire
- pas d’élimination de faces arrières, pas de tri de faces
Suivi de rayon
part de l’observateur, tracer le rayon qui passe par le centre d’un pixel (vecteur vision) et suivre les interactions avec la scène pour déduire la couleur du pixel
Modèle de Whitted
I = Ia.ka + ∑j Sj fattj.Ipj(kd(N.Lj) + ks(Rj.V)^n) + ks.Is + kt.It (réflexion spéculaire et transparence)
/!\ Additif et borné donc coefficients faibles !
Pour un rayon V, calcul récursif de Is en suivant r et de It en suivant p puis appliquer la formule de Whitted.
Arrêt : sortie du rayon de la scène, surface opaque non réfléchissante, profondeur de récursivité atteinte, pile pleine.
traceRayon
traceRayon(depart, direction, nb) → intensité {
. si (nb=0) alors intensité = 0
. sinon si (!intersection(depart, direction): pointI, facette
.. alors intensité = Ifond
.. sinon {
… si (facette.ks = 0) alors Is = 0
… sinon { calculReflechi(direction, facette.N) → r
… traceRayon(pointI, r, nb-1) → Is }
… si (facette.kt = 0) alors It = 0
… sinon { calculTransmis(direction, facette.N, facette.kη) → p;
… traceRayon(pointI, p, nb-1) → It }
… I = Ia*facette.ka
… Pour j=1 à nbsource {
…. si (!ombre(pointI, facette.N, direction, j)) alors
….. I=I+Idj[facette.kd(facette.N.Lj)+facette.ks(R.(-direction))^(facette.N)]
… }
… I = I+facette.ks * Is + facette.kt * It
… si (depart ≠ observateur) alors {
…. calculDistance(depart, pointI) → d
…. I=I/d
… }
… intensite = I
.. }
}
Calculs d’intersections
équation paramétrique du rayon :
x = x0+t(x1-x0)
y = y0+t(y1-y0)
z = z0+t(z1-z0)
Sphère : (x-xc)²+(y-yc)²+(z-zc)²=r² A = (x1-x0)²+(y1-y0)²+(z1-z0)² B = 2[(x1-x0)(x0-x1)+ ... )] C = (x0-xc)²+(y0-yc)²+(z0-zc)²-r² At²+Bt+C=0, pas de racine=pas d'intersection, 1 racine tangent, 2 racines prendre t inférieure
Plan : Ax+By+Cz+D=0 on obtient t=-U/V
Si V=0 rayon parallèle, pas d’intersection
Polygone : intersection plan puis vérification que l’intersection et à l’intérieur du polygone.
Coût raytracing
x.y.2^a.(m+1)(2^n-1)^p
x.y nb de pixels
a anti-aliasing (facteur de sur-échantillonnage)
m nb de sources
n profondeur de réclusion
p nb de primitives testées pour le calcul d’intersection
Autre technique
échantillonnage stochastique (R. Cook) : moyenne pondérée (rayons aléatoires sur un pixel, distribution gaussienne)
Principe du modèle de la radiosité
Très couteux, indépendant de la position de l’obs. Corneill University. Processus d’émission et réflexion basés sur des réflecteurs parfaits, on ne considère plus de modèles ponctuels mais basés sur une surface. Calcul de la lumière arrivant sur une surface (chemin direct + réflection sur d’autres surfaces). Pas de terme ambiant mais meilleure simulation de l’ambiant.
Radiosité
taux avec lequel l’énergie quitte une surface par unité de temps et de surface (patch).
- énergie émise (émetteur) / énergie réfléchie (réflecteur)
Equation radiosité
Bi = Ei + pi ∑j Bj Fij
Bi, Bj radiosités des surfaces i et j
Ei émissivité de la surface i
pi réflectivité de la surface i
Fij facteur de forme de la surface j // à la surface i
((∑j Bj Fij) arrive sur i et i émet (pi . ∑j Bj Fij) et Ei)
facteur de forme
Fij = ∫i∫j (cosΦi.cosΦj)/(π||r||²) dAidAj (avec r rayon entre les deux surfaces, Φi et Φj les angles entre N et R.
Intégrale quadruple puisque surface-surface
Solution approximative : projection sur un hémicube
Matrice de radiosité:
1-p1F11 -p1F12 … -p1F1n |B1 | = | E1 |
-p2F21 1-p2F22 .. -p2F2n |B2 | = | E2 |
…..
-pnFn1 -pnFn2 .. 1-pnFnn | Bn |= | En|
Rendu photoréaliste ?
combination de plusieurs techniques
- raytracing pour réflexions directs
- radiosité pour réflexions diffuses
- photon mapping pour les caustiques