Mam poważne problemy ze zrozumieniem macierzy widoku w XNA. Osiągnąłem dość daleko z wszystkimi pozostałymi częściami i odkąd nauczyłem się już wymaganych matematyki, nie chcę używać wbudowanych funkcji Matrixa bez zrozumienia tego, co robią w pierwszej kolejności.Widok macierzy XNA - szukam wyjaśnienia
Teraz rozumiem podstawy rotacji, projekcji i tłumaczenia, ale nie mogę do końca zrozumieć, jak działa matryca widoku w XNA.
Z tego, co zgromadziłem, matryca widokowa powinna przekształcić "świat" w swoją własną przestrzeń. Wydaje się to rozsądne, ale metoda Matrix.CreateLookAt w bibliotece jest dość zagadkowa.
Mam ustalone (poprzez sprawdzenie jaka wyjść funkcyjnych Library), że te dwa kawałki kodu wydajnością te same wyniki:
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);
Dlaczego flip osi X i Z? Myślałem, że powinieneś obrócić świat zgodnie z obrotem kamer, ale w przeciwnym kierunku, a następnie przetłumaczyć świat o tę samą ilość w przeciwnym kierunku.
Czy matryca widoku nie jest w ogóle wykorzystywana jako transformacja, a jedynie koduje pozycję i obrót kamery na świecie?
Dzięki, wygląda na to, że mój pierwotny pomysł był poprawny. Ale wszystkie te różne układy współrzędnych były nieco zagmatwane. – Skurmedel