01 — De la 3D à l'image : la projection perspective
Ce que tu vas apprendre
- Ce qu'est le plan image et pourquoi on le voit comme une coupe dans une pyramide
- Comment la projection perspective écrase la 3D en 2D
- Pourquoi les peintres du XVe siècle avaient déjà tout compris
- Pourquoi rendre, c'est deux problèmes séparés : la forme, puis la couleur
Prérequis
- L'introduction de la série
- Un souvenir vague des droites et des plans suffit
Une scène 3D a trois dimensions ; une image en a deux. Tout le rendu commence par ce passage forcé : comment aplatir un monde en volume sur une surface plate sans que le résultat ressemble à un patron de boîte en carton. La réponse s'appelle la projection perspective, et c'est elle qui donne l'illusion de la profondeur.
Le plan image, une coupe dans une pyramide
Place ton œil quelque part dans la scène. Depuis ce point, tu vois dans toutes les directions d'un cône — en pratique on prend un cône à base rectangulaire, donc une pyramide, dont le sommet est ton œil et qui s'ouvre vers la scène. Cette pyramide délimite ton champ de vision.
Maintenant, glisse une feuille plane à l'intérieur de la pyramide, perpendiculaire à l'axe du regard. La feuille découpe la pyramide en une coupe rectangulaire : c'est le plan image. C'est l'équivalent de la toile du peintre ou du capteur de l'appareil photo. Tout ce qu'on voit se projette sur ce rectangle.
objet
/|
/ | œil
A •-/--+--------------• (sommet de la pyramide)
/ | plan image /
/ | (la coupe) /
/ A' •-----------/
/ | /
(la pyramide de vision s'ouvre depuis l'œil)
A' = projection de A sur le plan image
Projeter un point
Pour projeter un point A de la scène sur le plan image, on trace une droite qui va de A jusqu'à l'œil. Cette droite traverse le plan image en un point A'. A' est l'image de A. Répète l'opération pour les quatre coins d'un objet, relie les projections, et tu obtiens son contour à l'écran.
L'effet de profondeur tombe tout seul de cette construction. Deux objets de même taille réelle, mais l'un plus loin que l'autre, tracent des droites qui se resserrent en se rapprochant de l'œil : le plus lointain se projette donc plus petit sur le plan image. C'est exactement la raison pour laquelle les rails du chemin de fer semblent se rejoindre à l'horizon.
Les peintres l'avaient déjà compris
Cette construction n'a rien d'informatique : c'est de la géométrie pure, et elle a été formalisée par les peintres de la Renaissance au début du XVe siècle. Brunelleschi, qui invente la costruzione legittima vers 1420, puis Alberti qui la met le premier par écrit dans son De pictura (1435), décrivent la toile comme une « fenêtre » (aperta finestra) à travers laquelle on regarde la scène, et les rayons visuels qui la traversent. Un peintre qui place son point de fuite fait, sans le savoir, exactement le calcul que fera plus tard une carte graphique. Le ray tracing ne fait que reprendre cette idée vieille de six siècles et l'automatiser.
Deux problèmes, pas un
Il y a une chose importante à acter tout de suite : fabriquer une image, c'est résoudre deux problèmes distincts.
- La forme. Où se projette chaque objet sur le plan image ? C'est un problème purement géométrique, celui qu'on vient de voir. Il répond à « quel objet est visible dans ce pixel ? ».
- La couleur. De quelle teinte est ce point, une fois qu'on sait qu'il est visible ? C'est le shading (l'ombrage), et il dépend de la lumière et de la matière. C'est un problème de physique, pas de géométrie.
Le ray tracing résout le premier problème en lançant un rayon par pixel pour trouver l'objet visible. Le second, la couleur, occupe la plus grande partie du travail et le reste de la série. L'article suivant s'attaque justement à cette deuxième moitié : ce qu'est la lumière, et pourquoi une pomme est rouge.
Sources
- Scratchapixel. 3D Computer Graphics Primer — How Does It Work. scratchapixel.com
- Alberti, L. B. (1435). De pictura. Première mise par écrit de la perspective linéaire (présentation) ; la costruzione legittima elle-même est due à Brunelleschi (vers 1420).
- Marschner, S., & Shirley, P. (2021). Fundamentals of Computer Graphics (5ᵉ éd.), chap. « Viewing ». CRC Press.
- Scratchapixel. Computing the Pixel Coordinates of a 3D Point (la suite mathématique de la projection). scratchapixel.com