• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

webgl normalen transformieren

m1au

New member
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.
 
Zurück
Oben