XNA Matrice de Vue - Recherche d'explication
Je vais avoir quelques problèmes de compréhension de la matrice de vue en XNA. Je suis arrivé assez loin avec toutes les autres parties et depuis que j'ai juste appris moi-même le nécessaire de maths je ne veux pas utiliser le construit dans la Matrice des fonctions sans comprendre ce qu'ils font en premier.
Maintenant, je comprends les bases de la rotation, de la projection et de la traduction, mais je ne peux pas pour la vie de me comprendre comment la matrice de vue des œuvres en XNA.
De ce que j'ai recueillies, la matrice de vue doit permettre de transformer le "monde" de son propre espace. Semble raisonnable, mais la Matrice.CreateLookAt méthode de la bibliothèque est très énigmatique.
J'ai créé (par le biais de l'examen de ce que la fonction de la bibliothèque sorties) que ces deux morceaux de code à produire 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 flip les axes X et Z? J'ai pensé que vous devriez faire tourner le monde selon les caméras de la rotation, mais dans la direction opposée, puis de traduire le monde par la même quantité dans la direction opposée.
Ou est la matrice de vue pas utilisé comme une transformation à tous, mais seulement code pour la position et la rotation de la caméra dans le monde?
Vous devez vous connecter pour publier un commentaire.
La matrice de vue est en train de transformer la scène en vue de l'espace. Dans l'espace visuel de la caméra virtuelle est à l'origine et est à la recherche dans la bonne direction z. Il y a différentes façons d'y parvenir, mais le plus souvent le point de vue de la matrice se compose d'une traduction et trois rotations autour de chaque axe.
Transformer = Traduire * RotationZ * RotationY * RotationX
Il existe trois types de transformations que vous devez comprendre: le monde, la vue et la projection.
Le monde des changements de transformation de vos modèles de coordonnées de l'espace du modèle dans le monde de l'espace. Lorsque vous définissez les sommets d'un modèle, de les définir par rapport à l'origine de ce modèle. La transformation du monde se transforme ces sommets de sorte qu'ils sont par rapport à une origine partagée par tous les objets dans la scène, c'est à dire de l'espace univers.
La transformation de la vue puis transforme ces sommets en vue de l'espace. Le spectateur/appareil photo dispose d'une position et de l'orientation dans l'espace visuel, et ce est utilisé pour créer la matrice de vue qui vous appliquer à tous les objets dans la scène. En vue de l'espace que le spectateur/la caméra est à l'origine, donc la matrice de vue traduit et tourne tous les objets pour les placer dans l'espace visuel.
Enfin, la transformation de la projection détermine le type de la "lentille" de la caméra utilise. Jusqu'à présent, nous avons seulement traduit et rotation des objets, il n'y a aucun sens de l'échelle ou de point de vue. La transformation de la projection crée un affichage frustum et transforme les sommets dans cette fenêtre.
Maintenant, pour votre question. Vous refléter le système de coordonnées sur l'axe des x, puis l'axe des z et enfin, vous le traduire. Cela arrive à donner le même résultat que la lookat de la matrice, car la position est sur le xz et yz, mais remarquez ce qui se passe si vous déplacez la position d'une unité de l'axe des ordonnées. Puis les deux matricies ne sera pas égale
Le lien suivant m'ont beaucoup aidé à comprendre et à utiliser plus efficacement les matrices. Vous pourriez trouver intéressant:
http://stevehazen.wordpress.com/2010/02/15/matrix-basics-how-to-step-away-from-storing-an-orientation-as-3-angles/
Je suis en train de faire sensiblement la même chose que vous en ce moment 🙂
composer deux réflexions rendements d'une rotation, si je me souviens de ma géométrie correctement.