Beispiel: Eine Fläche der Szene soll den Eindruck erwecken als handle es
sich um eine Mauer aus Steinen und Fugen. Dazu wird ein Foto von einer
solchen Mauer auf die Fläche ''geklebt''. Immer, wenn die Fläche
gerastert wird, werden die oben genannten Schritte für jedes
Bildschirmpixel der Fläche durchgeführt.
- Die Koordinaten im DC werden für die Eckpunkte durch die Projektion WC_DC
und für alle inneren Punkte durch Interpolation zwischen den Eckpunkten
bestimmt. Es ergibt sich ein Tripel .
- Eine zweidimensionale Textur, wie sie fast immer vorliegt, hat zwei
Parameter und , die die Textur parametrisieren. Im zweiten
Schritt wird die Projektion der DC-Koordinaten in den -Raum
berechnet. Im Mauer-Beispiel würde man eine perspektivische Projektion
durchführen, um den korrekten perspektivischen Eindruck zu erhalten.
Wenn z.B. eine Weltkarte um eine Kugel ''gewickelt'' werden soll, um den
Eindruck eines Globusses zu erwecken, müsste eine sphärische Projektion
gewählt werden. Andere mögliche Projektionsarten sind zylindrisch,
elliptisch oder kubisch. Alle Projektionen sind Abbildungen; daher das
Wort ''Mapping'' im Titel der diversen Techniken.
- Im darauffolgenden Schritt wird aus den Werten für und das Texture
Element oder Texel für das aktuelle Pixel bestimmt. Diese Abbildung
führt also aus dem Parameterraum in den Texturraum. Wenn die
Mauer-Textur beispielsweise
Pixel groß ist, würden die
Werte für und mit 256 multipliziert und der Nachkommaanteil
abgeschnitten, um die ganzzahligen Koordinaten des Texels
zu erhalten. Bei der Wahl dieser Korrespondenzfunktion
(corresponder function, siehe Abbildung
19.2
) stehen folgende Typen zur Verfügung:
- wrap, repeat, tile: Das Bild wiederholt sich auf der Fläche.
Dies wird erreicht, indem der Vorkommaanteil der Parameterwerte
vernachlässigt wird. Diese Art des Texturing wird gewählt, wenn ein
Material die ganze Fläche durch Wiederholung überziehen soll. Im
Mauer-Beispiel wäre ein Bild ausreichend, das wenige Steine und Fugen
enthält. Allerdings muß darauf geachtet werden, daß die Ränder des
Bildes oben und unten bzw. rechts und links identisch sind; sonst sind die
Nahstellen zwischen den Texturen erkennbar.
- mirror: Wie wrap etc. allerdings wird die Textur abwechselnd
im Original und in - bzw. -Richtung gespiegelt dargestellt. Dadurch
läßt sich die Wiederholung schwerer feststellen.
- clamp: Die Ränder der Textur fungieren als Klammer
und werden für Werte
wiederholt. Manche APIs erlauben die Einstellung clamp für einen Parameter
und wrap für den anderen.
- border: Werte werden mit einer extra festgelegten Farbe
gerendert. Diese Einstellung läßt sich gut verwenden, wenn ein Aufkleber
irgendwo auf einer Fläche plaziert werden soll.
- Die Werte, die bei diesen Koordinaten in der Textur hinterlegt sind, können
auf verschiedene Weise genutzt werden, um das Erscheinungsbild der Fläche
zu ändern. Im Mauer-Beispiel wären RGB-Werte in der Textur enhalten.
Falls die Werte in der Textur für diese
Fläche angepasst werden müssen, kann dies im nächsten Schritt geschehen.
Wenn die RGB-Werte beispielsweise zu dunkel sind, könnten sie mit einem
Faktor multipliziert werden, um so eine Helligkeitssteigerung zu
erreichen.
- Abschließend wird der Texturwert interpretiert. RGB-Werte aus Bildtexturen
ersetzen z.B. die diffuse Objektfarbe in der Beleuchtungsgleichung.
Neben der harten Ersetzung der Ursprungswerte, können diese auch moduliert
werden. Zu welchen Ergebnissen das führt, wird in den
folgenden Abschnitten beschrieben.
Wenn in jedem neuen Frame, das gerendert werden soll, ein neues Bild aus einem
Film als Textur benutzt wird, erscheint es so, als ob der laufende Film auf
die Fläche projiziert wird, wie auf eine Kinoleinwand.
Wenn die Texturkoordinaten in jedem Frame neu festgelegt werden,
''wandert'' die Textur von Frame zu Frame über die Fläche.
Abbildung
19.2: Auswirkungen der Korrespondenzfunktion