On ne considere pas tous les points de toutes les surfaces de l'espace, par contre on va aller explorer la direction du rayon rebondissant sur la table. Pour y arriver, on calcule l'illumination au point sur la table, rien nous empeche de "relancer" un rayon et voir quel objet on intersecte. Une fois qu'on l'intersecte, on calcul l'illumination au point.
Etape 2: Prise en compte des sources primaitres et certaines sources secondaire
Pour l'ensemble des points de l'image:
Calculer le vecteur directeur du rayon lumineux partant de l'observateur
Chercher les intersections de ce rayon lumineux avec l'integralite des objets de la scene et garder le plus proche
Relancer un rayon dans la direction de puis calculer le niveau d'eclairement recursivement
Calculer le niveau d'eclairement au point d'intersection en sommant l'apport diffus et speculaire pour chaque source lumineuse ainsi que l'eclairement dans la direction de
Etape 3: Prise en compte de l'ombre
Pour l'ensemble des rayons que l'on "lance" vers les sources primaires, il faut chercher si un objet de la scene ne s'est pas insere entre le point considere et la source. Pour cela, il faut a nouveau calculer l'intersection du rayon avec l'ensemble des objets de la scene et prendre le plus proche.
Resultats
Je triche plus (ou quasiment plus)
Je triche j'ai pas du tout parle de texture et d'anti-aliasing
L'algorithme du raytracing est un processus simple, recursif
Il faut etre capable, pour chaque objet, de calculer la normale en chaque point
Il faut reflechir a la condition d'arret
Avantages
Algorithme simple et rapide a mettre en oeuvre
Genere des images honorables
…
Inconvenients
Temps de calcul un peu eleve
Pas de gestion de la profondeur de champ et autres effets
Mauvaise gestion des ombres (frontieres trop brutales)
Sources secondaire pas suffisamment prises en compte (eclairage indirect incorrect)
Objets transparents
"Alisaing"
…
Les problemes du Raytracing
Probleme de l'aliasing
Probleme: si on lance un rayon c'est touche ou pas touche alors que ca devrait etre la proportion de chaque.
On risque aussi de louper les petits objets.
Solution
On lance plus de rayons (cast ray)!
Sur-echantillonage
Lancer plusieurs rayons pour chaque pixel
De maniere organisee
Au hasard
Lancer plusieurs rayons pour chaque pixel ou le gradient est eleve
Bon resultats mais peut etre tres lent
Post-filtrage
Resultat moyen mais tres rapide
Resultats
Avec anti-alisaing sur toute l'image (50 rays/pixel) temps: de l'ordre de 7-8 secondes
Anti-aliasing sur les zones de gradient eleve (50 rays/pixel) Temps: l'ordre de la seconde
Probleme du temps de calcul
On lance plus de rayons (cast ray)!
Solutions:
Volumes englobants
Projection sur un plan/partition de l'espace
Pre-trier les objets?
Calcul parallele
Utilisation d'OpenGL
…
Probleme des objets transparents
Solutions:
Comme nous avons relance le rayon reflechi, il faut "suivre" le rayon refracte
Loi de la refraction
Tenir compte du rayon refracte pour l'illumination locale:
Milieux transparents:
Loi de la refraction (Snell Descartes):
Surfaces translucides:
Distribution probabiliste
Calcul de l'ombre
Solution approchee: Ne pas devier le rayon mais filtrer les longueurs d'ondes
Probleme de l'eclairage indirect
Si on va sous notre bureau, d'apres nos calculs il devrait faire totalement noir alors que ce n'est pas le cas avec l'eclairage indirect.
Solution
Ajouter une lumiere ambiante:
Solution vraiment approximative
Resultats:
Probleme de l'ombre
On lance un rayon pour savoir si on est eclaire mais ca donne une reponse binaire, c'est comme considerer la source comme ponctuelle.
Notre source lumineuse n'est pas ponctuelle.
Quel est la proportion de notre source ? Comment faire pour avoir des ombres plus douces ?
Solution
Cast ray !
Ne plus considerer une lumiere comme ponctuelle
Probleme de temps de calcul
Bilan
Avantages
Algorithme tres simple
Donne des images honorables
Des problemes majeurs persistent
Les sources secondaires ne sont pas suffisamment bien geres
Les objets transparents non plus
Amelioration
Raytracing distrubue (84)
Sur-echantillonnage pour simuler
les ombres douces
la profondeur de champ
…
Ne regle pas le probleme de l'apport de la diffusion des sources secondaires
Quantite de calcul enorme
Conclusion
Algorithme simple
Necessite beaucoup d'ameliorations pour avoir des images photorealistes