Computergrafik

Texturen
Motivation

Bild: T. Thormählen
- Texturen sind Rastergrafiken, die auf 3D-Objekte übertragen werden können
- Vorteil: Detailgetreue Darstellung ohne alles in 3D zu modellieren
→ Texturen tragen wesentlich zur fotorealistischen Computergrafik bei
Mehrere Texturen in einer Szene
Bild: T. Thormählen

- Texturen lassen sich für jedes Objekt bzw. Polygon individuell zuordnen
Unwrapping
Bild: Zephyris

- 3D-Modell wird in 2D-Darstellung „aufgeklappt“
- häufig als UV-Unwrapping bezeichnet
- Ziel: Erstellung einer Map, die jedem Punkt der 3D-Oberfläche eine 2D-Position zuweist
- Modell wird an Kanten „aufgeschnitten“
→ Seams - Einzelne Flächen werden als Inseln angeordnet
Wir geben jedem 3D-Punkt des Objekts eine Adresse in 2D.
Texture Mapping

Bild: T. Thormählen
- Texturen sind in der Regel quadratisch
- Koordinatensystem: \( s \) und \( t \) (alternativ: \( u \) , \( v \)) mit den Parametern \( s, t \in [0,1] \)
- Anwenden der Textur erfordert Abbildungsfunktion ("Texture-Mapping") von 2D auf 3D-Oberfläche:
(s, t)^T \Rightarrow (x,y,z)^T
Textur
3D-Objekt
Abbildungsvorschrift*
*) Korrespondenzen werden entweder manuell zugeordnet oder durch Algorithmen bestimmt
Texture Mapping (Beispiel)

Bild: T. Thormählen (adaptiert)
Hinweis: Farben korrespondieren in beiden Abbildungen (2D-3D Korrespondenzen)
glTexCoord2f(0.25f,0.50f); glVertex3f(-1.0f, 1.0f, 1.0f);Texture Mapping (Interpolation)
Was machen wir, wenn Texturkoordinaten nicht exakt auf ein Pixel fallen, sondern dazwischen liegen?
Interpolation
Texture Mapping (Interpolation)
f(\mathbf{q}_1) =
\frac{x_2 - x}{x_2 - x_1} \, f(x_1, y_1)
+
\frac{x - x_1}{x_2 - x_1} \, f(x_2, y_1)

Bild: T. Thormählen (adaptiert)
f(\mathbf{q}_2) =
\frac{x_2 - x}{x_2 - x_1} \, f(x_1, y_2)
+
\frac{x - x_1}{x_2 - x_1} \, f(x_2, y_2)
f(\mathbf{p}) =
\frac{y_2 - y}{y_2 - y_1} \, f(\mathbf{q}_1)
+
\frac{y - y_1}{y_2 - y_1} \, f(\mathbf{q}_2)
- Der Farbwert für \( \mathbf{p} \) ergibt sich durch:
- Wert an Stelle \( \mathbf{p} \) ergibt sich durch bilineare Interpolation der 4 benachbarten Pixelwerte (auf dem Raster)
- Zunächst werden Farbwerte an Stützstellen bestimmt (\( \mathbf{q}_1 \) / \( \mathbf{q}_2 \))* :
*) \( f(\mathbf{p}) \) bezieht sich auf den Farbwert von \( \mathbf{p} \)
Probleme bei Texture Mapping
Bild: Gemeinfrei

Beispiel für Artefakte
- Texturen wirken in der Ferne oft flimmernd oder unruhig
- Grund: Viele Texel (Texturpixel) müssen auf wenige Bildschirmpixel abgebildet werden → Minification
- Dabei gehen Informationen verloren
→ Unterabtastung - Es entstehen Aliasing-Artefakte (Treppenstufen-Effekte)
Mipmapping (Prinzip)
- Mipmaps speichern die Textur in mehreren, verkleinerten Auflösungen
→ Gauß-Pyramide - Für entfernte Objekte wird eine passende kleinere Version gewählt
- Ergebnis:
- Weniger Flimmern
- Ruhigeres, qualitativ besseres Bild
- Oft auch schneller, da weniger Texturdaten verarbeitet werden
Bild: Cmglee
Mipmapping (Beispiel)
Bild: Gemeinfrei

Ohne Mipmapping

Mit Mipmapping
✅ Zusammenfassung
- Texturen sind 2D-Rastergrafiken, die durch
Texture-Mapping auf 3D-Objekte projiziert werden - Unwrapping stellt zunächst 2D-3D Korrespondenzen her
➔ "Ausrollen" des 3D-Objekts - Textur-Mapping projiziert Farbwerte der 2D-Texturen auf 3D-Punkte: \( (s, t)^T \Rightarrow (x,y,z)^T \)
- Aliasing-Effekte durch Texturen können durch Mipmaps minimiert werden

Bild: T. Thormählen
CG9 Texturen
By blackbill
CG9 Texturen
- 0