Aufgabe 4: Spheric Texture Mapping

Aus Nettundfroh
Wechseln zu: Navigation, Suche
Abbildung 1: Screenshot aus der WebGL-Implementierung

Inhaltsverzeichnis

Einleitung

Diese Aufgabe besteht aus mehreren Teilen aus denen einer auszuwählen war. Mit der Lösung aller Teilaufgaben kann Environment Mapping realisiert werden. Hier wurde lediglich Aufgabe 4.4 bearbeitet.

Aufgabe 4.4

Eine spherische Textur soll auf einer Kugel dargestellt werden.

Um eine Spiegelung zu erreichen, müssen die Texturkoordinaten abhängig von der Kameraposition gebunden werden.

  • Mapping der Texturkoordinaten (UV):
    • Die x,y-Koordinaten der normalisierten Normalen der Kugelflächen eignen sich hervorragend zur Ableitung der UV-Koordinaten.
    • Berechnung:
 u = 1.0 - (normaleImWeltkoordinatensystem.x + 1.0) / 2.0
 v = 1.0 - (normaleImWeltkoordinatensystem.y + 1.0) / 2.0
  • Positionierung der Textur abhängig von der Kameraposition:
    • Da die Normalen in das Weltkoordinatensystem transformiert werden (ohne Translation), dreht sich die Textur zunächst mit der Kugel. Damit die Textur immer in Richtung der Kamera gemappt und so der Spiegelungseffekt erreicht wird, muss die View-Matrix, das Kamerakoordinatensystem, vor der UV-Berechnung (ohne die enthaltene Translation) auf jede Normale angewendet werden.
    • Finale Berechnung:
 normaleImKamerakoordinatensystem = normalize((view * vec4(normaleImWeltkoordinatensystem, 0.0)).xyz)
 u = 1.0 - (normaleImKamerakoordinatensystem.x + 1.0) / 2.0
 v = 1.0 - (normaleImKamerakoordinatensystem.y + 1.0) / 2.0

Dabei ist zu berücksichtigen, dass es zu Renderingartefakten kommt, wenn die Berechnung der UV-Koordinaten im Vertex-Shader stattfindet.

Lösung

WebGL Implementierung

Quellen

Environment Mapping Folien





Zurück zur Real-Time Rendering Hauptseite

Master Semester 2