Sto avendo qualche serio problema a capire la matrice di visualizzazione in XNA. Sono arrivato molto lontano con tutte le altre parti e da quando mi sono appena imparato la matematica richiesta non voglio usare le funzioni di Matrix integrate senza capire cosa fanno prima.XNA View Matrix - Cerco spiegazione
Ora capisco le basi della rotazione, della proiezione e della traduzione, ma non posso per la vita di me capire come funziona la matrice della vista in XNA.
Da quello che ho raccolto, la matrice di visualizzazione dovrebbe trasformare il "mondo" nel proprio spazio. Sembra ragionevole, ma il metodo Matrix.CreateLookAt nella libreria è piuttosto sconcertante.
ho stabilito (attraverso l'esame quali le uscite della funzione libreria) che questi due pezzi di resa codice stessi risultati:
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);
Perché ruotare gli assi X e Z? Ho pensato che dovresti ruotare il mondo secondo la rotazione delle telecamere, ma nella direzione opposta, e quindi tradurre il mondo della stessa quantità nella direzione opposta.
Oppure la matrice di viste non è utilizzata come una trasformazione, ma codifica solo la posizione e la rotazione della telecamera nel mondo?
Grazie, sembra che la mia idea originale fosse corretta. Ma avevo tutti questi diversi sistemi di coordinate un po 'confusi. – Skurmedel