Computergrafik am Franz-Ludwig-Gymnasium

 


Projektion von Texturen

Einleitung

Damit ein bestimmtes Material auch wie gewünscht auf einem Objekt landet reicht es oft nicht aus, es dem Objekt zuzuweisen. Teilweise verhält sich das Material je nach Objekt anders und nicht jede Art von Material reagiert gleichartig auf Veränderungen an Objekt oder Textureinstellungen. Hier werden einige grundlegende Konzepte erklärt, die für alle 3D-Programme Gültigkeit haben. Bei der Umsetzung wird aber darauf eingegangen, wie dies in Cinema 4D V 9.6 gelöst wird. Auch wenn dies keine Anleitung ist, fühle man sich aufgerufen mit diesen Konzepten direkt im Programm zu experimentieren, nur dann wird man sie voll erfassen.

Zwei Möglichkeiten

Um ein Objekt mit Farbe zu versehen gibt es zwei grundlegende Möglichkeiten: 3D-Texturen, die die jedem Punkt im Raum eine bestimmte Farbe zuordnen und 2D-Texturen, die die Farbe nach bestimmten Regeln gleich einem Maler auf die Objektoberfläche setzen. Andere Möglichkeiten werden in diesem Artikel nur kurz angesprochen.


Theorie

3D - Raumtexturen

Jeder Position im dreidimensionalen Raum ist eine ganz bestimmte Farbe zugeordnet (genauer betrachtet handelt es sich um eine Zahl, aber gleich in Farben zu denken schadet kaum für praktische Zwecke). Diese Zuordnung geschieht über mehr oder weniger komplexe, mathematische Formeln.


Eine solche könnte z.B. so aussehen: der Rotanteil steigt in X-, der Grünanteil in Y- und der Blauanteil in Z-Richtung. Die dadurch entstehende Farbverteilung im Raum ist versuchsweise im Bild dargestellt. Bei Anwendung auf einen Torus wird jeder Punkt der Oberfläche entsprechend seiner Position im Raum eingefärbt. Diese Art ein Objekt mit Struktur zu versehen ist z.B. für Holz und Steinarten sinnvoll. Denn auch in einem Baumstamm hat jede Position ihre eigene Farbe und durch das Heraussägen einer Form wird diese Farbe genau dort sichtbar, wo der Schnitt stattfand.

2D - Ebene Texturen

In diesem Fall ist die Textur zweidimensional, wobei es sich auch hier um eine mathematische Farbverteilung handeln kann (z.B. ein Kachelmuster). Oft wird aber schlicht ein Bild verwendet. Dieses Bild wird ähnlich wie ein Plakat auf die Objektoberfläche geklebt.


Da die Objektoberfläche selten flach und rechteckig wie das verwendete Bild ist, beginnen die Probleme. Denn wie man sein Plakat auf das Objekt kleistert, dafür gibt es verschiedenste Möglichkeiten (dazu später mehr). Da aber sehr detaillierte Oberflächen oft nur über Bilddateien möglich werden, sind diese Probleme in vielen Fällen unvermeidlich. Auch ist die Struktur von Haut oder Rinde, die Färbung durch Rost oder Dreck eben eine Angelegenheit, die dem Verlauf der Oberfläche folgt und mit einem dreidimensionalen Muster nichts zu tun hat.


Der Unterschied zwischen einer räumlichen Textur und einer 2D-Textur ist im nebenstehenden Bild gezeigt. Rechts wurde das Objekt aus dem räumlichen Rastermuster scheinbar herausgeschnitten, während links eine ähnliche Textur auf die Flächen des Objekts aufgeklebt (und dabei teils tüchtig verzerrt) wurde.

Alternativen

Es gibt noch völlig andere Arten eine Oberfläche einzufärben. So liegt beispielsweise Schnee nur auf den flacheren Teilen eines Objektes, während die steileren Regionen den nackten Fels zeigen. Anstatt ein Bild aufzukleben oder eine Raumtextur zu verwenden kann hierfür die Richtung der Oberfläche (oben, unten, links oder rechts) im Raum für die Farbe verwendet werden (in Cinema 4D heißt dieser Effekt Falloff).


Ein anderes Beispiel ist die Spiegelung an einer Wasseroberfläche. Je flacher das Licht auftrifft, desto stärker ist der reflektierte Anteil. Dies wird mit dem Effekt Fresnel erreicht, den man aber auch wunderbar für interessante Farbeffekte missbrauchen kann (in die Transparenz ist er ohnehin schon integriert). Ambient Occlusion färbt die Oberfläche in Abhängigkeit vom Abstand zu anderer Oberflächen, Sub Surface Scattering schickt Licht wie durch teiltransparente Schichten und Normalenrichtung unterscheidet zwischen Außen- und Innenseite eines Polygons.


Alle aufzuzählen macht hier wenig Sinn, insgesamt gilt aber (nicht nur hier): schmökern lohnt sich!

Texturen und Texturtags

Bevor man an Texturen herumzerrt sollt man sich klar sein, dass es in Cinema 4D (mindestens) zwei Stellen gibt, an denen man Einfluss auf die Oberflächengestalt nehmen kann: Zum einen ist das das Material selbst. Es enthält Informationen über Muster, Farben, Glanzverhalten, Relief usw. Hier entscheidet sich schon, ob eine Textur 2D oder 3D ist. So sind z.B. alle Noise-Muster zunächst einmal 3D-Texturen (zur Not kann man sie aber zu einem 2D-Verhalten „überreden“).


Da ein Material aus verschiedensten Kanälen bestehen kann (Farbe, Transparenz etc.) kann es sowohl 2D- als auch 3D-Muster enthalten, die dann jeweils entsprechend verrechnet werden. Schon allein das Wissen über diesen Umstand kann vielleicht so manches graue Haar ersparen.


Wie nun eine Textur genau auf ein Objekt aufgetragen (gemapped) wird kann nicht in der Textur festgelegt werden, sondern wird im sog. Texturtag gesteuert (Tags sind all die kleinen Bildchen, die rechts den Objekten angehängt sind).

Koordinatensysteme

Zunächst kümmern wir uns nur um 3D-Texturen, an denen Grundlegendes zu Texturkoordinaten erklärt werden soll. Das räumliche Farbmuster kann an verschiedenen Stellen verankert werden (d.h. wo ist das Koordinatensystem „festgeschraubt“). Die Einstellung hierfür findet man bei 3D-Texturen in CInema 4D unter dem Begriff Raum).


Im Bild sind fünf Kugeln mit der selben 3D-Textur versehen. Das Koordinatensystem ist in diesem Fall mit den Weltkoordinaten verbunden. Dadurch erscheinen die absolut identischen Kugeln mit identischen Texturtags dennoch unterschiedlich, da sie ja an unterschiedlichen Positionen im Raum liegen. Würde man eine einzelne Kugel bei diesen Einstellungen bewegen, so würde sie je nach Position ständig ihre Farbe wechseln, da sie sich durch das Farbmuster bewegt.


Meist soll aber das Muster fest auf dem Objekt verankert bleiben und dessen Bewegungen mitmachen. In diesem Fall sollte als Raum für die Textur die Einstellung Objekt oder Textur gewählt werden. Auf den ersten Blick scheinen diese zwei Einstellungen identisch zu sein, denn im Standardfall liegen die Texturkoordinaten exakt so wie die des Objektes. Allerdings können diese im entsprechenden Modus (linke Symbolleiste von Cinema 4D) gegenüber den Objektkoordinaten verschoben, gedreht oder skaliert werden. Im zweiten Bild wurde auf Texturkoordinaten gewechselt, wodurch jede Kugel die Textur in ihrem eigenen Koordinatensystem mitnimmt. Deshalb erscheinen sie auch identisch (wie die mittler Kugel im ersten Bild, da deren Koordinatensystem an gleicher Stelle mit dem Weltsystem liegt).


Verschiebt man die Texturkoordinaten nach Wechsel zum Raum Textur für jedes einzelne Objekt, so kann man die einzelnen Kugeln trotz identischen Materials unterschiedlich einfärben (natürlich ist die Textur so mitsamt den Koordinaten auch dreh- und skalierbar, was im dritten Bild auch zwecks besserer Erkennbarkeit genutzt wurde).


Ob nun sinnvoll oder nicht, es können noch diverse weitere Koordinatensysteme für eine Textur festgelegt werden. So ist es z.B. möglich die Kamera als Ursprung für eine Textur zu verwenden. Dadurch sieht das Bild zunächst wie bei den Weltkoordinaten aus (viertes Bild), aber sobald die Kamera zur Seite schwenkt wandert die Farbverteilung über die Kugeln (letztes Bild). Dies ließe sich beispielsweise nutzen, um Objekte erst beim Passieren eines Wasserstrahls mit Glanz zu versehen.


Es gibt noch weit mehr Möglichkeiten, aber die Erwähnung ihrer Existenz sollte hier erst mal genügen (lesen bildet).


UV-Koordinaten

Wie oben schon erwähnt wurde müssen bei einer 2D-Textur irgendwie die Farben des Bildes den Punkten der Objektoberfläche zugeordnet werden (im Folgenden wird ein Foto benutzt, aber dieses ist natürlich durch jede andere 2D-Textur ersetzbar). Ähnlich wie jeder Punkt einer Weltkarte genau einem Punkt auf einem Globus zugeordnet werden kann wird hier das Bild auf das Objekt übertragen (die Bezeichnung „Mapping“ kommt also nicht von ungefähr).


Da für die 3D-Szene die Koordinaten X, Y und Z schon vergeben wurden wählte man für die Koordinaten in der Textur was noch so an Buchstaben übrig ist: U und V (W wird durchaus auch noch für eine „Tiefe“ der Textur genutzt, wir bleiben hier aber lieber bei den Grundlagen).


Das Verfahren wird an einem einfachen Beispiel gezeigt: auf nur vier Dreiecke des abgebildeten Körpers wurde eine Bildtextur aufgetragen. Jedes der Polygone bekommt in der Textur eigene UV-Koordinaten zugeordnet, wobei für gewöhnlich die Eckpunkte vollkommen ausreichen, den Bereich dazwischen zu Berechnen ist Aufgabe des Computers.


Diese Verteilung der UV-Polygone versucht man meist ähnlich zusammenhängend wie oben gezeigt zu bewerkstelligen. Aber prinzipiell können die einzelnen Polygone an beliebiger Stelle liegen und sich sogar überlappen. Genaue Betrachtungen am zweiten Bild machen das deutlich.


Natürlich macht es keinen Unterschied, ob die Polygone ihre Originalform behalten, oder ob sie gedreht, gestaucht oder anderweitig deformiert wurden.


Die Zuordnung der UV-Koordinaten bleibt in den meisten Fällen nach Erstellung des Objektes fest. D.h. wenn das Objekt selber später deformiert wird, dann verändert sich die Form der Polygone im Raum. Da aber der zugeordnete Texturbereich für jedes Polygon unverändert bleibt wird die Bildinformation mitsamt dem Polygon auf dem Objekt verformt. Das kann in vielen Fällen erwünscht sein, sorgt aber eventuell auch für Probleme.