Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat von »"Sk!p"«
Hi,
simple Frage: Was kann ich mit einer invertierten und transponierten Modelviewmatrix anfangen bzw. was passiert mit einem Vektor im World Space, wenn ich ihn damit multipliziere?
Zitat
D.h. du nimmst die invers-transponierte obere 3x3 Matrix der Modelviewmatrix!
Quellcode |
|
1 2 |
PARAM mvit[4] = {state.matrix.modelview.invtrans}; SUB eyevec, mvit[3], vertex.position; |
Zitat von »"Sk!p"«
Hier will man anscheinend den Eye-Vektor im World Space haben.
Zitat von »"Sk!p"«
Wieso ziehe ich jetzt aber die Position des aktuellen Vertex von der 4. Zeile (offensichtlich der Transformationsteil) ...
Zitat von »"Sk!p"«
...der invtrans-Modelviewmatrix ab?
Zitat von »"David_pb"«
Nein, man will den Eye-Vektor (= Vertexpos -- Ursprung Viewbasis) im Modelviewspace haben.
Zitat von »"David_pb"«
Die 4. Zeile ist die Verschiebung (= Translation).
Zitat von »"David_pb"«
Die Übergangsmatrix wird invertiert um die Basisvektoren der Abbildung relativ zur "Modelspace" Basis zu bekommen (sonst kannst du keine sinnvollen Rechenoperationen mit z.B. der Vertexposition machen). Außerdem wird die Matrix transformiert, sodass du den Translationsteil als Vektor behandeln kannst (ARB hat eben ein "row-major" Layout für die Matrizen).
Und zum Schluss wird einfach der Vektor über die Subtraktion berechnet (Vektor zw. Punkten A und B = B-A).
Zitat von »"Sk!p"«
Zitat von »"David_pb"«
Nein, man will den Eye-Vektor (= Vertexpos -- Ursprung Viewbasis) im Modelviewspace haben.
Ich dachte SUB dest, op1, op2 legt op1 - op2 in dest ab, also Ursprung Viewbasis - vertexpos?!
Zitat von »"Sk!p"«
Okay, ich versuchs mal zu rekapitulieren:
Modelviewmatrix bedeutet ja Objektkoordinaten -> Eye-Koordinaten. Wenn ich das invertiere müsste ich also den umgekehrten Weg bekommen. Das Transformieren wegen dem Layout ist klar.
Das was mir noch nicht klar ist, ist, wieso ich von Eye-Koordinaten ausgehe. Ich müsste doch im Moment im World Space sein, also sowas wie World -> Object brauchen oder nicht?
Werbeanzeige