Hallo!
Ich habe leider ein Problem mit dem Transformieren von Normalen im 3D-space.
Meine Kamera hat die Vertex-Position (x, y, z, w): (0, 0, 1, 1)
Aufgrunddessen ergibt sich eine Transformations-Matrix:
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 -1 |
| 0 0 0 1 |
Die inverse Transformations-Matrix ist:
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 1 |
| 0 0 0 1 |
Noch transponiert:
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 0 0 1 1 |
Das wäre jetzt also die Transformations-Matrix zum Transformieren von Normalen.
Mein Normale-Vektor (x, y, z): (0, 0, -1)
Da die Transformations-Matrix 4x4 groß ist, der Normale-Vektor jedoch nur aus 3 Komponenten besteht,
erweitere ich den Normale-Vektor um die homogene Komponente mit den Wert 1:
Normale-Vektor mit homogene Komponente: (0, 0, -1, 1)
Multipliziert man die Matrix mit diesem Vektor, erhält man: (0, 0, -1, 0)
Normalerweise würde ich nun dieses Ergebnis homogenisieren und normalisieren. Das geht aber nicht. Denn beim homogenisieren würde / 0 dividiert werden.
Jetzt frage ich mich, wo mein Gedankenfehler liegt. Wo liege ich falsch?
- - - Aktualisiert - - -
Wenn ich aus einer 4x4-Matrix mittels invertieren und transponieren eine Transformations-Matrix für Vertex-Normale erzeuge, sind dann für die Transformationen nur die linken oberen 3x3 Felder der Transformations-Matrix interessant? Darf man die letzte Zeile und die letzte Spalte der Transformations-Matrix einfach verwerfen?
- - - Aktualisiert - - -
Ich glaube, das scheint wirklich so zu sein, dass man nach dem Invertieren und Transponieren die letzte Zeile und die letzte Spalte der Transformations-Matrix verwerfen darf. Das scheint alles so darauf ausgelegt zu sein.
Ich habe leider ein Problem mit dem Transformieren von Normalen im 3D-space.
Meine Kamera hat die Vertex-Position (x, y, z, w): (0, 0, 1, 1)
Aufgrunddessen ergibt sich eine Transformations-Matrix:
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 -1 |
| 0 0 0 1 |
Die inverse Transformations-Matrix ist:
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 1 |
| 0 0 0 1 |
Noch transponiert:
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 0 0 1 1 |
Das wäre jetzt also die Transformations-Matrix zum Transformieren von Normalen.
Mein Normale-Vektor (x, y, z): (0, 0, -1)
Da die Transformations-Matrix 4x4 groß ist, der Normale-Vektor jedoch nur aus 3 Komponenten besteht,
erweitere ich den Normale-Vektor um die homogene Komponente mit den Wert 1:
Normale-Vektor mit homogene Komponente: (0, 0, -1, 1)
Multipliziert man die Matrix mit diesem Vektor, erhält man: (0, 0, -1, 0)
Normalerweise würde ich nun dieses Ergebnis homogenisieren und normalisieren. Das geht aber nicht. Denn beim homogenisieren würde / 0 dividiert werden.
Jetzt frage ich mich, wo mein Gedankenfehler liegt. Wo liege ich falsch?
- - - Aktualisiert - - -
Wenn ich aus einer 4x4-Matrix mittels invertieren und transponieren eine Transformations-Matrix für Vertex-Normale erzeuge, sind dann für die Transformationen nur die linken oberen 3x3 Felder der Transformations-Matrix interessant? Darf man die letzte Zeile und die letzte Spalte der Transformations-Matrix einfach verwerfen?
- - - Aktualisiert - - -
Ich glaube, das scheint wirklich so zu sein, dass man nach dem Invertieren und Transponieren die letzte Zeile und die letzte Spalte der Transformations-Matrix verwerfen darf. Das scheint alles so darauf ausgelegt zu sein.