06 — La matrice de projection
Ce que tu vas apprendre
- Ce que fait vraiment la matrice de projection : frustum → cube
- Les deux tâches : projeter x, y et remapper z
- Pourquoi
w'n'est plus égal à 1 (matrice affine vs matrice de projection) - Comment la division par
wréalise la division perspective
Prérequis
- Les coordonnées homogènes et le frustum
On sait projeter un point à la main : diviser x et y par z, normaliser, convertir en pixels. Pourquoi alors encombrer tout ça d'une matrice de projection ? Parce qu'une matrice permet de tout faire d'un coup, en masse, et de l'enchaîner avec les autres transformations. C'est l'objet qui rend le rendu temps réel possible. Mais elle a une particularité qui la distingue de toutes les matrices vues jusqu'ici.
Ce qu'elle fait : frustum → cube
La matrice de projection prend le frustum (la pyramide tronquée du volume visible) et le déforme en un cube : l'espace NDC, le cube canonique [-1, 1]³ (ou [0, 1] en profondeur selon l'API). Toute la scène visible est ainsi ramenée dans un cube unité, fixe et propre.
frustum (pyramide tronquée) → cube NDC [-1,1]³
/| | +———————+
/ | | | |
/____| | matrice | |
| near far | ─────────► | |
\____| | projection | |
\ | | +———————+
\|________|
Cette mise en cube est précieuse : tester la visibilité d'un point devient « est-il dans [-1, 1] sur chaque axe ? », et le clipping se fait contre des faces de cube, bien plus simples que celles d'une pyramide.
Ses deux tâches
La matrice fait deux choses à la fois.
1. Projeter x et y. Elle réalise la division perspective : x' = x / -z, y' = y / -z. C'est l'effet « plus loin = plus petit ».
2. Remapper z. Elle transforme la profondeur du point en une valeur normalisée : le plan near devient 0 (ou -1), le plan far devient 1. Cette profondeur normalisée alimente le z-buffer. La projection n'écrase donc pas le z — elle le réencode sur un intervalle fixe.
La particularité : w' ≠ 1
Voici ce qui distingue la matrice de projection de toutes les autres. Rappel de la série maths : une matrice affine (rotation, échelle, translation) a une dernière colonne (0, 0, 0, 1), si bien qu'après transformation, la composante homogène w' reste égale à 1. On n'a rien à faire.
La matrice de projection brise cette règle. Sa quatrième colonne est différente — elle range typiquement un -1 qui va copier -z dans w' :
w' = -z
Donc après une matrice de projection, w' n'est plus 1. Et c'est exactement le mécanisme voulu.
La division par w fait la perspective
Pourquoi vouloir w' = -z ? Parce que l'étape suivante du pipeline divise systématiquement les coordonnées par w' pour revenir en cartésien (la division perspective) :
x_ndc = x' / w' = x' / -z
y_ndc = y' / w' = y' / -z
La division par w' réalise d'elle-même la division par -z ! C'est tout le génie du procédé : en stockant -z dans w', la matrice diffère la division perspective à l'étape de normalisation homogène, qui est automatique. On obtient la perspective « gratuitement », dans le même formalisme matriciel que les rotations et translations.
point → [matrice modèle][matrice vue][matrice projection] → divise par w' → NDC
(les trois s'enchaînent en une seule multiplication de matrices)
| Matrice affine | Matrice de projection | |
|---|---|---|
| 4ᵉ colonne | (0, 0, 0, 1) |
différente (ex. un -1) |
w' après transfo |
1 |
≠ 1 (vaut -z) |
Division par w' |
inutile | indispensable (= division perspective) |
| Usage | tourner, déplacer, dimensionner | projeter |
Perspective et orthographique, même boîte à outils
La matrice orthographique suit le même principe — frustum (ici une boîte) vers cube — mais sans division par la profondeur : sa quatrième colonne reste (0, 0, 0, 1), donc w' reste 1, et la taille ne dépend pas de la distance. Les deux projections ne diffèrent que par une poignée de coefficients ; c'est la beauté du formalisme matriciel, qui les unifie.
Cette matrice est le dernier maillon entre la scène et l'écran. La série suivante du parcours s'en servira pour générer les rayons d'un vrai ray tracer. L'article suivant clôt celle-ci par le glossaire.
Sources
- Scratchapixel. The Perspective and Orthographic Projection Matrix. scratchapixel.com
- Sanderson, G. (3Blue1Brown). Essence of Linear Algebra (coordonnées homogènes et projection). 3blue1brown.com
- Marschner, S., & Shirley, P. (2021). Fundamentals of Computer Graphics (5ᵉ éd.), chap. « Projection Transformations ». CRC Press.