Salut,
J'ai quelques problèmes pour trouver les termes de la matrice de projection selon la convention utilisée par DirectX. En gros j'arrive pas à bien la calculer, même en revérifiant les calculs.
On se place dans un repère main gauche (z va dans l'écran, et ne sort pas de l'écran contrairement à OpenGL).
D'abord, je fixe quelques notations : dans le repère de la caméra, on considère le "view frustum" tel que les plans proches et lointains se trouvent en z = n (pour near), et z = f (pour far), les coordonnées du plan proches sont définies par l < x < r, b < y < t (l, r, b, t pour left, right, top, bottom).
DirectX transforme le "view frustrum" en un cube de centré par rapport à l'axe z, de coté 2 (x et y vont de -1 à 1) sauf pour les côtés parallèles à z qui sont de longueur 1 (z va de 0 à 1).
Donc voici la matrice que l'on est censé trouver :
Moi perso, j'ai essayé de la recalculer à la main, et on dirait que tous les termes sont fixés à une constante près. Est-ce qu'il y aurait une seule solution ou bien une infinité ?
J'ai pas fini le calcul, il me restait juste la dernière matrice 2x2 à trouver en bas. Et tout était fixé par rapport à 2 constantes arbitraires, mais si je voyais bien que si je fixais les 2 constantes de la bonne manière, j'obtenais une matrice ressemblante, mais pas exactement la même :
Il y a 2 termes qui sont opposés dans la 3ème colonne. J'ai pourtant bien vérifié les calculs, il me semble qu'il n'y a pas d'erreur.
- J'ai peut-être pas pris les bonnes équations de départ... Pour moi il transforme les sommets du view frustrum en les sommets du cube.
Dans le livre ("Real-Time Rendering"), les calculs et les équations ne sont pas précisés.- Je sais qu'il y a une infinité de solutions, que la matrice est définie à une constante près.
- J'ai trouvé dernièrement un .ppt (powerpoint) qui décompose la matrice en 2 applications : transformation du view frustum en pavé de même longueur, mais de section constante égale à celle du plan proche, puis homothétie pour avoir un cube "normalisé".
Ben là, j'arrive pas à trouver les 2 dernières colonnes de la première matrice.- Vous avez peut-être des documents/sites qui détaillent les calculs ou les hypothèses de calculs ?
EDIT : j'ai enlevé quelques questions qui ont trouvé des réponses évidentes...
-------
Quand je pense que je galère sur un vieux calcul, alors que le simple but c'était de comprendre pourquoi dans les shadow maps ils utilisent les coordonnées 'z' et 'w' comme coordonnées de textures...
Partager