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

[FRAGE] 3d - tangent space

m1au

New member
Hallo :)

Ich hoffe, hier kennt sich einer mit dem sogenannten "Tangent space" in der 3D-Programmierung aus. Ich habe noch irgendwie Schwierigkeiten damit.

Calculation of tangent and bitangent vectors

Ausgangsbasis sind Vertizes mit Angaben zu uv-Koordinaten für Texturen. So kann man dann sich z. B. zu einem Dreieck (definiert durch 3 Vertizes und ihren uv-Koordinaten) einen u-Vektor und einen v-Vektor denken. Damit kann man sich vorstellen, wie die Textur auf das Dreieck projiziert wird.

Nun kann man sich berechnen, wie diese uv-Vektoren im local-space des Dreiecks aussehen würden. Zusammen mit einem Normal-Vektor hat man dann den Tangent space. Zur Umrechnung kann man sich diese M(tanToWorld)-Transformationsmatrix erstellen.

So weit, so klar. Nur beim Nachfolgenden bin ich mir jetzt unsicher. Danach folgend nämlich einige Vektor-Projektionen, damit die Tangent-space-Vektoren T, B und N alle schön normal aufeinander stehen (was sie ursprünglich ja nicht zwangsläufig sein müssen, da es die uv-Koordinaten auch nicht sein müssen).

T´ = T - N * (N dot T)
B´ = B - N * (N dot B) - T´ * (T´ dot B)

Da stellt sich mir gleich mal die Frage, wozu brauche ich diese beiden Berechnungen, denn N ergibt sich aus N = T cross B, also aus dem Kreuzprodukt von T und B. Damit sollte doch schon sichergestellt sein, dass N einerseits normal auf T, und andererseits normal auf B steht, oder? Damit würden diese beiden Berechnungen doch überhaupt nichts bewirken, oder? Der einzige Teil, der mir sinnvoll erscheint, ist, wo sich die Richtung von B relativ zu T ändert, damit es rechtwinkelig dazu steht.

Und als nächstes stellt sich mir die Frage, welchen Vorteil ich dadurch habe, dass die Vektoren dann alle senkrecht aufeinander stehen. Was bringt mir das?
 
Zuletzt bearbeitet:
Zurück
Oben