Modellierungsmatrizen transformieren
Frage:
In GLM lässt sich trotz einfacher Einstellung von ViewMatrix eine ModelMatrix mithilfe von festlegen glm::lookAt erzeugt eine falsche Position und Drehung für Objekte. Wie können wir mit glm::lookAt die Objektausrichtung an der Kamerapositionierung ausrichten oder müssen wir benutzerdefinierte Funktionen erstellen?
Antwort:
In Computergrafiken werden Transformationen angewendet auf Objekte im 3D-Raum, um sie genau zu positionieren. An diesem Prozess sind drei primäre Transformationsmatrizen beteiligt: ModelMatrix, ViewMatrix und ProjectionMatrix.
Modellkoordinaten:
Jedes Netz innerhalb einer Szene hat seinen eigenen lokalen Raum, der als Modellraum bekannt ist. In diesem Raum werden Scheitelpunktkoordinaten definiert, und die ModelMatrix definiert die Position, Ausrichtung und relative Größe des Objekts im Weltraum.
Weltkoordinaten:
Der Weltraum ist die Koordinate System der gesamten Szene, in der mehrere Objekte platziert sind.
Sichtraum:
Der Sichtraum ist relativ definiert zur Betrachtungsperspektive, mit der Position des Blicks, der Blickrichtung und der Richtung nach oben. Die inverse Matrix des Ansichtskoordinatensystems ist die ViewMatrix, die Objekte aus dem Weltraum in den Ansichtsraum (Augenraum) transformiert.
Clip-Koordinaten:
Clip-Raumkoordinaten sind homogen und ermöglichen so Ausschnitt der Szene. Ein Punkt liegt im Clip-Raum, wenn seine X-, Y- und Z-Komponenten innerhalb des Bereichs liegen, der durch die invertierte W-Komponente und die W-Komponente der homogenen Koordinaten definiert ist.
Projektionsmatrix:
Die Projektionsmatrix beschreibt die Zuordnung von 3D-Punkten der Szene zu 2D-Punkten des Ansichtsfensters und wandelt den Ansichtsraum in einen Clip um Raum.
Normalisierte Gerätekoordinaten:
Perspektivische Teilung wandelt Clip-Raumkoordinaten in normalisierte Gerätekoordinaten im Bereich (-1, -1, -1) bis (1, 1, 1).
Fensterkoordinaten:
Normalisierte Gerätekoordinaten werden linear abgebildet die Fensterkoordinaten (Bildschirmkoordinaten) und die Tiefe für den Tiefenpuffer, der das Ansichtsfenster und den Tiefenbereich definiert.
Das obige ist der detaillierte Inhalt vonWarum führt die Verwendung von glm::lookAt für die ModelMatrix zu einer falschen Objektpositionierung und -drehung in GLM?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!