Projection et projection inverse avec WebGL

La multiplication des coordonnées (Xe,Ye,Ze,1.0) d'un point par la matrice de projection de WebGL produit des coordonnées de clipping (Xc,Yc,Zc,Wc).
Comment en déduire les coordonnées du pixel (Xs,Ys) dans le canvas ? A l'inverse, comment retrouver les coordonnées du point à partir des coordonnées du pixel ?
Continuer la lecture de "Projection et projection inverse avec WebGL"
Projection et projection inverse avec WebGL

Calculer la matrice de projection de WebGL

Tout développeur qui s'initie à la 3D avec WebGL est rapidement confronté à une entité mathématique, la matrice de projection :
[ Xe Ye Ze 1 ] x [ 2NR-L 0 0 0 0 2NT-B 0 0 R+LR-L T+BT-B F+NN-F -1 0 0 2FNN-F 0 ]
Les différentes constantes utilisées pour définir le volume de clipping se présentant par exemple ainsi (coupe Y/Z) :
Pyramide tronquée de clipping dans WebGL
Cette matrice peut sembler d'autant plus étrange au développeur qu'elle comporte 4 lignes et 4 colonnes (une matrice 4x4), alors qu'il semblerait que l'on puisse se contenter d'une matrice 3x3 pour réaliser les calculs. D'ailleurs, où est passée l'intervention de Ze au dénominateur dans les calculs ?
Bref, pourquoi cette matrice ? Comment calculer ses coefficients ? Et comment en déduire les coordonnées de la projection d'un point ?
Continuer la lecture de "Calculer la matrice de projection de WebGL"
Calculer la matrice de projection de WebGL