Sind in einer TBN-Matrix die Normal-, Tangential- und Bitangensvektoren immer senkrecht?

Dies hängt mit einem Problem zusammen, das in einer anderen Frage beschrieben wurde (Bilder dort):

Opengl Shader Probleme - seltsame Lichtreflexionsartefakte

Ich habe einen OBJ-Importer, der eine Datenstruktur erstellt und die Tangenten und Bitangenten berechnet. Hier sind die Daten für das erste Dreieck in meinem Objekt:

Mein Verständnis des Tangentenraums ist, dass die Normale vom Scheitelpunkt nach außen zeigt, die Tangente senkrecht (orthogonal?) Zum Normalenvektor und in Richtung des positiven S in der Textur zeigt und der Bitangens senkrecht zu beiden ist. Ich bin mir nicht sicher, wie du es nennst, aber ich dachte, dass diese 3 Vektoren eine gedrehte oder transformierte x, y, z-Achse bilden würden. Sie würden nicht 3 seinnach dem Zufallsprinzip orientierte Vektoren, richtig?

Auch mein Verständnis: Die Normalen in einer normalen Karte liefern einen neuen Normalenvektor. In Tangential Space Texture Maps gibt es jedoch keine eingebaute Orientierung zwischen der RGB-kodierten Normalen und der Per-Vertex-Normalen. Sie verwenden also eine TBN-Matrix, um die Lücke zu schließen und sie im selben Raum zu platzieren (oder die Beleuchtung im richtigen Raum zu platzieren).

Aber dann habe ich die Objektdaten gesehen ... Meine Struktur hat 270 Eckpunkte und alle haben eine 0 für die Tangente Y. Ist das für Tangentendaten korrekt? Sind diese Tangenten wie ein normaler Scheitelpunktraum oder so etwas? Oder sehen sie einfach falsch aus? Oder bin ich verwirrt darüber, wie das funktioniert und meine Daten stimmen?

Um meinem Problem in der anderen Frage näher zu kommen, muss ich sicherstellen, dass meine Daten richtig sind und dass ich verstehe, wie Tangential Space Lighting Mathe funktioniert.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage