00 — Comment un ordinateur fabrique une image
Ce que tu vas apprendre
- Ce qu'est le ray tracing, en une phrase
- Pourquoi c'est la façon la plus intuitive de comprendre le rendu 3D
- D'où vient l'idée : un peu d'histoire de la vision
- Le plan de la série
Prérequis
- Aucun en infographie. Un peu de géométrie de lycée et l'envie de comprendre suffisent.
- Le code arrive plus tard, en pseudo-code puis en C++. Rien à installer pour l'instant.
Quand tu regardes une image de synthèse réaliste — un reflet sur une bille de verre, une ombre douce, un rayon de soleil dans la poussière — il y a de bonnes chances qu'un algorithme ait simulé le trajet de la lumière pour la produire. Cet algorithme, c'est le ray tracing, le « lancer de rayons ». Et la bonne nouvelle, c'est que son idée de base tient en une phrase : pour savoir de quelle couleur est un pixel, on suit le chemin que la lumière a emprunté pour arriver jusqu'à l'œil.
Cette série est une adaptation libre, en français, du 3D Computer Graphics Primer de Scratchapixel, une des meilleures ressources gratuites sur le sujet. Je l'ai reprise parce qu'elle a une qualité rare : elle explique le rendu en partant de la physique, pas des maths. On comprend pourquoi avant le comment.
L'idée en une image
Imagine que tu tiens une vitre devant toi et que tu décalques sur le verre ce que tu vois derrière. Chaque point de la vitre correspond à une direction du regard, et tu y notes la couleur de ce qui se trouve dans cette direction. Cette vitre, c'est ton image. Le ray tracing fait exactement ça, mais à l'envers du sens physique : depuis ton œil, il envoie un rayon à travers chaque pixel de la vitre, regarde quel objet il touche, et calcule la couleur de cet objet en fonction de la lumière qui l'éclaire.
C'est tout. Le reste de la série n'est que le détail de chacune de ces étapes : comment fabriquer un rayon, comment savoir ce qu'il touche, comment calculer une couleur, comment gérer les reflets et la transparence.
Pourquoi cette approche est intuitive
Il existe une autre grande famille de rendu, la rasterization, celle des jeux vidéo et des cartes graphiques. Elle est rapide, mais elle raisonne « à l'envers » de l'intuition : elle projette les triangles sur l'écran et remplit les pixels. Le ray tracing, lui, colle à la façon dont la lumière marche vraiment. Un reflet n'est pas un truc qu'on bricole après coup : c'est juste un rayon qui rebondit. Une ombre, c'est juste un rayon qui n'atteint pas la lumière. Cette fidélité au réel rend l'algorithme plus lent, mais beaucoup plus simple à raisonner. C'est pour ça qu'on commence par lui.
Un détour par l'histoire
Pendant des siècles, on a cru que voir, c'était émettre quelque chose par les yeux — une idée défendue jusque chez les Grecs anciens. C'est un savant arabe, Ibn al-Haytham (Alhazen, vers 965–1040), qui a renversé la perspective dans son Traité d'optique (Kitāb al-Manāẓir) : la lumière part des sources lumineuses, rebondit sur les objets, et c'est cette lumière réfléchie qui entre dans l'œil et forme l'image. Autrement dit, on ne projette pas notre regard sur le monde ; le monde nous envoie sa lumière.
Ce renversement, vieux de mille ans, est exactement le modèle physique que le ray tracing simule. Tout l'algorithme découle de cette phrase : la lumière voyage en ligne droite, rebondit sur la matière, et finit dans l'œil.
Le plan de la série
| Article | Contenu |
|---|---|
| 00 — Introduction | L'idée et l'histoire (cet article) |
| 01 — Projection perspective | De la 3D au plan image |
| 02 — Lumière, couleur, matière | Photons, conducteurs, diélectriques |
| 03 — Tracer à l'envers | Rayons primaires et rayons d'ombre |
| 04 — Implémenter l'algorithme | Boucle, intersection, ombres |
| 05 — Réflexion et réfraction | Whitted, Snell, Fresnel |
| 06 — Un ray tracer minimal | 300 lignes de C++ qui marchent |
| 07 — Glossaire | Tout le vocabulaire |
L'article suivant attaque la première brique concrète : comment une scène en trois dimensions se retrouve aplatie sur une image en deux dimensions, sans perdre l'illusion de la profondeur.
Sources
- Scratchapixel. 3D Computer Graphics Primer — How Does It Work. scratchapixel.com
- Ibn al-Haytham (Alhazen). Kitāb al-Manāẓir (Traité d'optique), vers 1027. Présentation : Book of Optics — Wikipedia ; traduction de référence : A. I. Sabra, The Optics of Ibn al-Haytham, Books I–III: On Direct Vision (1989).
- Glassner, A. S. (1989). An Introduction to Ray Tracing. Academic Press. (Le livre de référence historique du domaine)
- Pharr, M., Jakob, W., & Humphreys, G. Physically Based Rendering (4ᵉ éd.), édition en ligne gratuite. pbr-book.org