Je rencontre de graves difficultés à comprendre la matrice de vue dans XNA. Je suis venu assez loin avec toutes les autres parties et depuis que je viens d'apprendre moi-même les maths requises, je ne veux pas utiliser les fonctions Matrix intégrées sans comprendre ce qu'elles font en premier.XNA View Matrix - Recherche d'explication
Maintenant, je comprends les bases de la rotation, de la projection et de la traduction, mais je ne peux pas, pour la vie de moi, comprendre comment la matrice de vue fonctionne dans XNA. D'après ce que j'ai compris, la matrice de vue devrait transformer le «monde» en son propre espace. Cela semble raisonnable, mais la méthode Matrix.CreateLookAt dans la bibliothèque est assez déroutante.
J'ai établi (en examinant ce que les sorties de la fonction de la bibliothèque) que ces deux morceaux de rendement de code les mêmes résultats:
Matrix view = Matrix.CreateReflection(new Plane(Vector3.UnitX, 0)) * Matrix.CreateReflection(new Plane(Vector3.UnitZ, 0)) * Matrix.CreateTranslation(Position);
// ..equals this if (Position = (0 0 -5), since LookAt "looks at" but the above just looks straight down Z)..
Matrix blah = Matrix.CreateLookAt(Position, Vector3.Zero, Vector3.UnitY);
Pourquoi inverser les axes X et Z? Je pensais que vous devriez faire tourner le monde en fonction de la rotation des caméras, mais dans la direction opposée, puis traduire le monde par le même montant dans la direction opposée.
Ou la matrice de vue n'est-elle pas du tout utilisée comme une transformation mais seulement pour encoder la position et la rotation de la caméra dans le monde?
Merci, il semble que mon idée originale était correcte. Mais j'avais tous ces différents systèmes de coordonnées un peu confus. – Skurmedel