Bonjour
J'ai codé une classe Matrice4 (implémenteée en interne dans le sens contraire de OpenGL).
Afin de comprendre le mécanisme pour passer d'un monde en 3D à la représentation en 2D sur un écran, j'ai vu qu'il fallait multiplier toutes les vertices par une matrice combinant les transformations de la projection, de la vue et du monde noté WorldViewProj (je ne prends pas en compte les transformations pour le viewport, car elles sont fait en interne par l'API 3D).
Et pour calculer cette matrice résultante, après quelques essais, j'ai vu qu'elle se calcule comme ci-dessous dans mon cas:
où proj, view et world représente respectivement les matrices de projection, de vue et monde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Matrix4 WorldViewProj = proj*view*world;
J'aurais aimé que quelqu'un me confirme que cela est bien la bonne chose étant donner le codage interne de mes matrices (ligne par ligne, contraire de OpenGL). Et si c'était faux, si l'on pouvait m'expliquer pourquoi.
P.S. : Si j'applique cette matrice aux vertices avant de les envoyés a OpenGL et sans spécifier de matrice à ce dernier, j'obtiens bien le résultat escompté.
P.SS. : Je ne cherche en aucun cas à devancer une API comme OpenGL ou DirectX, c'est simplement dans le but de comprendre le fonctionnement.
Merci d'avance.
Partager