Für welche Zwecke verwenden wir die Model View Projection Matrix? Warum benötigen Shader eine Model View Projection Matrix?
Antworten
Zu viele Anzeigen?Die Modell-, Ansichts- und Projektionsmatrizen sind drei separate Matrizen. Das Modell bildet den lokalen Koordinatenraum eines Objekts auf den Weltraum ab, die Ansicht vom Weltraum auf den Kameraraum und die Projektion von der Kamera auf den Bildschirm.
Wenn Sie alle drei zusammensetzen, können Sie das eine Ergebnis verwenden, um den gesamten Weg vom Objektraum zum Bildschirmraum abzubilden, so dass Sie in der Lage sind, anhand der eingehenden Scheitelpunktpositionen zu ermitteln, was Sie an die nächste Stufe einer programmierbaren Pipeline weitergeben müssen.
In den alten Pipelines mit fester Funktionalität wendete man Modell und Ansicht zusammen an, arbeitete dann die Beleuchtung mit einem anderen, daraus abgeleiteten Ergebnis aus (mit einigen Korrekturen, so dass z.B. die Normalen immer noch eine Einheitslänge haben, auch wenn man das Objekt skaliert hat) und wandte dann die Projektion an. Das spiegelt sich auch in OpenGL wider, das die Modell- und die Ansichtsmatrix nie trennt, sondern sie als einen einzigen Modell-Ansichts-Matrix-Stapel belässt. Sie sehen daher auch manchmal, dass sich dies in Shadern widerspiegelt.
Die Projektionsmatrix für die zusammengesetzte Modellansicht wird häufig von Shadern verwendet, um die von Ihnen für jedes Modell geladenen Eckpunkte auf den Bildschirm abzubilden. Sie ist nicht erforderlich, es gibt viele Möglichkeiten, das Gleiche zu erreichen, sie ist nur üblich, weil sie alle möglichen linearen Transformationen zulässt. Aus diesem Grund war eine weniger komponierte Version davon auch die Norm in der alten Welt der festen Pipelines.
Weil Matrizen praktisch sind. Matrizen helfen bei der Umrechnung von Orten/Richtungen in Bezug auf verschiedene Räume (ein Raum kann durch 3 senkrechte Achsen und einen Ursprung definiert werden).
Hier ist ein Beispiel aus einem von @legends2k in den Kommentaren genannten Buch.
Die Einwohner von Cartesia verwenden eine Karte ihrer Stadt mit vernünftigerweise im Zentrum der Stadt zentriert ist und die Achsen entlang den Himmelsrichtungen ausgerichtet sind. Die Einwohner von Dyslexia verwenden eine Karte ihrer Stadt, bei der die Koordinaten in einem beliebigen Punkt zentriert sind und die Achsen in irgendwelche willkürlichen Richtungen verlaufen, die ihnen wahrscheinlich eine gute Idee zu sein schien. Die Bürger beider Städte sind recht zufrieden mit ihren jeweiligen Karten, aber der staatliche Verkehrsingenieur beauftragte den staatlichen Verkehrsingenieur mit der Aufstellung eines Budgets für die erste Autobahn zwischen Cartesia und Dyslexia brauchen eine Karte mit den Details beider Städte, daher wird eine dritte Koordinate eingeführt das ihm überlegen ist, wenn auch nicht unbedingt allen anderen.
Hier ein weiteres Beispiel,
Angenommen, Sie haben in einem Spiel ein Auto-Objekt erstellt, dessen Eckpunkte in den Koordinaten der Welt liegen. Angenommen, Sie müssen dasselbe Auto in einem anderen Spiel in einer völlig anderen Welt verwenden, dann müssen Sie die Positionen erneut definieren und die Berechnungen werden komplexer. Das liegt daran, dass Sie die Positionen von Fenstern, Motorhaube, Scheinwerfern, Rädern usw. im Auto in Bezug auf die neue Welt erneut berechnen müssen.
Voir diese Video, um die Konzepte von Modell, Ansicht und Projektion zu verstehen. (sehr empfohlen)
Dann siehe diese zu verstehen, wie die Scheitelpunkte in der Welt als Matrizen dargestellt werden und wie sie transformiert werden.