Ein Tangentiales Koordinatensystem (auch Tangent Space) ist ein Koordinatensystem, das aus Richtung der Normalen definiert ist. Die Normale Zeigt hier immer in positive Z-Richtung. Richtungen hier sind die Tangente , die Bitangente und die Normale .

Motivation

Damit z.B. Normal Maps im Tangent Space gut definiert werden können, muss dieser konsistent definiert sein. Heißt: Es muss klar definiert sein, welche Richtung im Tangent Space wo hin zeigt.

Aufsetzen des Koordinatensystems

Grundidee

Grundsätzlich wird der Tangent Space auf Basis der Texturkoordinaten, genauer gesagt ihrer Achsen und aufgesetzt:

  • Die Normale steht senkrecht auf dem Primitiv
  • Die Tangente soll genau in die Richtung zeigen, in die die Texture Mapping auf dem Primitiv auch zeigt.
  • Analog soll die Bitangente genau in die Richtung zeigen, in die die Textur-Koordinate auf dem Primitiv auch zeigt.

Berechnung

Angenommen wir haben ein Primitiv . Dann nehmen wir uns zwei Kanten:

Die Kanten lassen sich auch in -Koordinaten notieren:

Wir wollen ja jetzt dass die Tangente und die Bi-Tangente entlang der Texturkoordinatenachsen und zeigen. Also setzen wir sie dafür ein:

Wir kennen die Kanten und sowie alle . Jetzt können wir auf und umstellen und erhalten ein Lineares Gleichungssystem. Das können wir ausrechnen und erhalten:

Anschließend können wir aus und mit dem Kreuzprodukt die Bi-Tangente berechnen:


TODO / WIP

Dann hat die Normale folgende Eigenschaften (ergibt sich ja aus ihrer Definition):

Wir möchten unser Koordinatensystem in Abhängigkeit der Texturkoordinaten , , , aufstellen. Schlussendlich ergibt sich ein Lineares Gleichungssystem:

Dementsprechend: