TexturingWas ist...?

Was ist Texturing?

In der Welt von CGI kann jedes Objekt jedes Material und jede Farbe haben. Ein Auto könnte aus Stoff sein, Bäume aus Metall. Ob das auch gut aussähe ist dann wieder eine andere Frage aber prinzipiell ist es möglich! Was ich damit sagen will: Beim CGI existieren die Grenzen der Realität nicht mehr! Es lassen sich Dinge erschaffen, die du vielleicht für unmöglich gehalten hast oder solche, die du dir bis jetzt nur in deiner Fantasie vorstellen konntest. Und Materials helfen dabei:

Texturing – der Welt ein bisschen Farbe verleihen

Ohne gescheite Materialien, bleibt dein Bild grau und emotionslos. Es existieren zwar Formen und Konturen, auch eine gewisse dreidimensionale Tiefe, doch es bleibt irgendwie leblos. Letztendlich bleibt Farbe nämlich mindestens so wichtig, wie die Szenerie selbst. Du glaubst mir nicht?

Überzeug dich selbst:

Mit Materials
Mit Materials
Mit Materials
Ohne Materials
Ohne Materials

Bild: Space Truckin‘, Ben White: https://www.artstation.com/artwork/w82Z3Y

Wie funktionieren Materials?

Blender und viele andere Programme benutzen den Ansatz von physikalisch basiertem Texturing, das bedeutet sie versuchen die Materialien möglichst realistisch darzustellen. Diese Herangehensweise an den Texturing Prozess wird „PBR“ genannt (Physically based rendering). Dabei soll das reale Verhalten von Licht mit Materie imitiert werden. Da das jedoch eine viel zu hohe Rechenleistung benötigen würde, wird stattdessen mit statistischen Annäherungen gebarbeitet. Es ist also nicht 1:1 eine physikalische Simulation des echten Lichtverhaltens aber physikalisch plausibel – eben „physically based“ . Es gibt dazu zwei Ansätze:

Ansatz Nr.1: Das Nutzen von Texture Maps

Ein weit verbreiteter Ansatz ist das Nutzen von Texture Maps. Dabei handelt es sich um einzelne Bilder, die jeweils für eine gewisse Oberflächeneigenschaft zuständig sind. Diese Maps werden entweder basierend auf echten hochauflösenden Fotografien oder künstlich mit Programmen wie Substance Designer erschaffen. Einen qualitativen Satz an Texture Maps für ein Material zu erstellen, kann aufwendig sein. Es gibt jedoch zum Glück eine große Anzahl an Seiten, die solche Texturen kostenlos anbieten.

Ich will dir die Funktion der einzelnen Maps am Beispiel dieses Kopfsteinpflasters erklären:

1. Diffuse

Die Diffuse Map sieht aus wie ein Foto, weil sie im Grunde eins ist. Sie wird für die Farbe des Objekts genutzt.

2. Albedo

Im Vergleich zu einer Diffuse Map, wurden bei einer Albedo Map die Schatten und Highlights entfernt. Es wird sozusagen nur die Farbe des Materials aus dem Foto extrahiert. Das macht die Albedo Map für bestimmte Lichtverhältnisse realistischer, weil in manchen Fällen die Schatten einer Diffuse Map nicht mit der Beleuchtung der 3D Szene übereinstimmen.

//Kurze Sidenote: Ich musste diese Albedo Map selber anfertigen, weshalb teilweise immer noch Schatten an den Rändern der Steine vorhanden sind. Eigentlich fehlt bei einer Albedo Map jegliche Lichtinformation. Für ein gutes Ergebnis ist das ein aufwändiger Prozess.

Hier ein direkter Vergleich zwischen Diffuse und Albedo Map:

Diffuse
Diffuse
Diffuse
Albedo
Albedo

3. Roughness

Die Roughness Map bestimmt wie rau die Oberfläche des Materials an bestimmten Stellen ist. Das wird mit einem Wert zwischen Schwarz und Weiß ausgedrückt.

4. Specular

Die Specular Map funktioniert ähnlich wie die Roughness Map nur genau andersherum. Sie gibt an, wie reflektiv das Material an bestimmten Stellen ist. Eine Specular Map kann durch Inventieren aus einer Roughness Map gewonnen werden. Es wird außerdem entweder die Roughness oder die Specular Map benutzt, nie beide.

5. Normal Map

Die berühmt berüchtigte lila Textur namens Normal Map gibt detaillierte Information über die Modellierung der Oberfläche wieder, ohne die Zahl der Polygone zu erhöhen. Sie gibt quasi dreidimensionale Information wieder, die im Modell so gar nicht vorhanden ist.

Eine flache Oberfläche könnte mit dieser Normal Map schon so aussehen, als wäre sie geformt, wie dieses Kopfsteinpflaster:

Mit Normal Map
Mit Normal Map
Mit Normal Map
Ohne Normal Map
Ohne Normal Map

Die Fläche enthält nun dreidimensionale Information, die im Modell nie vorhanden war – verrückt. Und das fast ohne zusätzliche Rechenleistung. So spart man sich eine Menge Renderzeit!

Nerd Talk: Was steckt jetzt genau hinter einer Normal Map?

Eine Normal Map wird aus den Normalen Vektoren des 3D-Modells generiert. Eben des Modells, welches die Selbe Geometrie besitzt, welche die Normal Map nachher darstellen soll. Ein Normalen Vektor ist der Vektor, der orthogonal zu einer Ebene oder Geraden steht. In diesem Fall besitzt jede Fläche unseres Modells einen Normalen Vektor, der quasi nach „außen“ zeigt. Er befindet sich wie das Modell auch in einem dreidimensionalen Raum mit X-, Y- und Z-Koordinate.

Seiner Ausrichtung im Raum wird jedoch nun statt mit X-, Y- und Z-Koordinaten mit R, G, und B, also einem Farbwert pro Pixel, Ausdruck verliehen. Dabei werden R, G und B (die Farben Rot, Grün und Blau) entsprechend X, Y und Z zugeordnet und wir erhalten eine Normal Map im RGB-Farbformat. Also ein zweidimensionales Bild, welches durch Farben vermerkte 3D-Information enthält. Anders als bei einer Bump oder Height Map mit 256 Grauabstufungen und entsprechend auch 256 Höhenabstufungen, kann also eine Normal Map 256 hoch drei Abstufungen Speichern. Das ist wesentlich mehr und macht die Normal Map so detailliert.

Jedoch muss eine Normal Map erst, wie oben schon erwähnt, aus einem hochauflösenden Modell mit besagter Geometrie erzeugt werden. Es ist also eine gewisse Portion Modelling Arbeit nötig! Der Grund für das Erstellen einer Normal Map ist ja, dass man die Geometrie eines hochauflösenden Modells ohne die damit verbundene Rechenleistung darstellen will. In der Spieleindustrie werden deshalb in der Regel zwei Versionen von jedem Modell gebaut: Eine „Low Poly“ und eine „High Poly“ Variante. Also ein hochauflösendes und eine vereinfachtes Modell. Aus dem Hochauflösenden Modell wird dann eine Normal Map generiert, die für das Low Poly Modell genutzt werden kann, welches letztendlich im Spiel landet. So kann der Detailgrad erhöht werden, ohne die Leistung des PC’s aufgrund erhöhter Polygon Anzahl mehr zu beanspruchen. Das Low Poly Modell ist also ein Fake High Poly Modell, das dank Normal Map trotzdem so aussieht.

6. Displacement/Height Map

Die Displacement– oder auch Height Map genannt, gibt mithilfe von 256 Grauabstufungen die Höheninformation in Richtung der Z-Achse wieder. Dunkle bis schwarze Stellen werden als Vertiefungen ausgelesen, helle bis weiße Stellen als Erhöhungen. Im Vergleich zur Normal Map beeinflusst sie wirklich die Geometrie des Modells. Deshalb muss dieses auch oft genug unterteilt worden sein, bzw. eine genügend Große Dichte an Punkten besitzen, damit die Displacement Map funktionieren kann.

Im Vergleich zur Normal Map, kann die Displacement Map von Vorteil sein, wenn man wirklich zusätzliche Geometrie schaffen will. Das ist vor allem bei Close Ups notwendig. Wenn das Objekt aus der Ferne betrachtet wird, reicht meistens eine Normal Map.

Hier siehst du, wie eine Displacement Map on top einer Normal Map wirklich eine Tiefe im Material schafft:

Mit Displacement Map
Mit Displacement Map
Mit Displacement Map
Nur Normal Map
Nur Normal Map

7. Bump Map

Eine Bump Map ist quasi eine detailliertere Displacement Map, die anstelle der Normal Map benutzt werden kann. Anders als bei einer Normal Map geben auch hier wieder wie bei einer Height Map 256 Grauabstufungen die Unebenheiten an. Eine Bump Map beeinflusst die eigentliche Geometrie des Modells nicht. Eben wie eine normal Map. Der Vorteil von Bump- und Height Maps gegenüber Normal Maps ist, dass diese in Programmen wie Gimp für einfache Texturen selbst gezeichnet werden können. Es sind schließlich nur verschiedene Grautöne für verschiedene Höhen nötig.

Der Nachteil gegenüber einer Normal Map ist jedoch, dass eine Bump Map längst nicht so viel Information speichern kann, wie eine Normal Map. Das kann zu kantigen Artefakten auf der Oberfläche führen.

Solche Height Maps lassen sich ganz leicht selber malen 🙂

Das fertige Ergebnis

Jetzt werden alle Maps mit dem Material verbunden und wir haben eine physikalisch basierte Version des Kopfsteinpflasters in 3D:

Diffuse
Diffuse
Diffuse
Albedo
Albedo

Die Version, wo anstelle einer Diffuse Map eine Albedo Map genutzt wurde, sieht noch ein bisschen realistischer aus. Jedoch ist es Geschmackssache, welche Map letztendlich Verwendung findet.

Auf Texture Heaven kannst du dir diese und viele andere Texturen herunterladen: https://texturehaven.com/tex/?t=cobblestone_01

Ränder zerstören den Effekt!

Damit die Maps auch für größere Flächen benutzt werden können, müssen sie nahtlos aneinander reihbar sein. Sonst würde man die Bildränder bemerken und die Täuschung wäre sofort verflogen. Hier ein Beispiel für beide Fälle:

Links ein normales Foto, rechts unsere nahtlose Diffuse Map des Kopfsteinpflasters

Gerade für organische Materialien wie Erde, Gras, Blätter und co. ist das besonders wichtig:

Links ein normales Foto, rechts eine nahtlose Albedo Map

Das liegt daran, dass unser Auge keine Wiederholungen in der Natur gewöhnt ist oder erwartet. Im Vergleich zu sich natürlich wiederholenden Dielenböden oder Wegen wirkt das einfach unnatürlich. Nichts desto trotz sollte man auch bei von Menschenhand verlegten Böden auf nahtlose Texturen achten, auch wenn diese an sich schon als Parkett verlegt wurden. Oft fällt das sonst trotzdem auf.

Ein bisschen Origami

Damit die Texture Maps jetzt auch wirklich genutzt werden können, müssen wir unser dreidimensionales Modell so flach bekommen, wie die Maps selbst – also auseinanderfalten. Diesen Prozess nennt man UV-Unwrapping. Dann kann die zweidimensionale Textur auf unsere zweidimensionale Version des Modells und so gleichzeitig auch auf unser dreidimensionales Modell projeziert werden.

Das klingt jetzt erst mal kompliziert aber ist eigentlich simpel:

Dazu bestimmt man Schnittstellen, an denen das Modell wie Papier auseinander geschnitten wird und die bestimmen, wie das Modell sich auffalten lässt. Diese Stellen nennt man Seams, also Nähte.

Dann wird das Modell „unwrapped“, also auseinandergefaltet.

Es kann nun in einem zweidimensionalen Koordinatensystem dargestellt werden. Das flache Modell trägt übrigens den Namen „UV-Map“.

Über das Flache Modell kann jetzt die Textur und die einzelnen Maps gelegt werden.

Jeder Fläche des Objekts wird dann eine Stelle auf dem Bild zugewiesen. Eben die Stelle, worauf sie gerade liegt. Die Textur wird jetzt quasi auf das auseinandergefaltete Modell geklebt. Das passiert automatisch und kann im Nachhinein auch noch angepasst werden.

Wird das Modell nun wieder zusammengefaltet, behält es das das Bild oder die einzelnen Maps an den jeweiligen Flächen und wir haben die Texture Maps auf unser Modell appliziert.

Fertig! Fast wie Origami.

Vom Auf- und Zufalten bekommen wir als Nutzer übrigens gar nichts mit. Das macht der Computer automatisch, sobald man auf den Knopf gedrückt hat, der dem Programm befiehlt das Modell zu unwrappen. Man erhält dann im selben Augenblick eine flache Version des Modells. Ich habe dieses Bild trotzdem genutzt, weil es tatsächlich so ähnlich hinter den Kulissen des Programms abläuft und es uns hilft, sich diesen Prozess besser vorzustellen.

Ansatz Nr.2: Procedural Texturing

Hierbei muss das Modell nicht erst unwrapped, also auseinander gefaltet, werden, sondern kann direkt für das Texturing benutzt werden. Man kann hier ganz bequem Parameter verstellen und durch Mischen von sogenannten „Shadern“ Materials kreieren. Jeder Shader dient dabei einem anderen Zweck. Der „Glossy Shader“ fügt dem Objekt z.B. einen gewissen Glanz hinzu, der „Transparency Shader“ Transparenz und der Mix Shader mixt eben zwei Shader. Es gibt noch viele mehr aber jetzt alle aufzuführen und zu erklären würde den Rahmen sprengen, dazu sind es einfach viel zu viele.

Ein paar von vielen „Nodes“

Diese Nodes werden verbunden und dann vom Computer von Links nach Rechts durchgearbeitet. Das dabei entstehende Geflecht von Shadern nennt man „Nodetree“ und kann so…

…so…

ODER SOOO AUSSEHEN!!!:

Je nachdem, wie kompliziert der Shader für das fertige Material halt ist. Kompliziertere Materialien erfordern auch kompliziertere Shader.

An dieser Stelle ein Shoutout an Martin Zimny für dieses krasse Sci-Fi Material. Schaut gerne mal auf seinem Artstation Account vorbei: https://www.artstation.com/martinzimny

Checkt auch mal Reynante Martinez ab! Er hat das Lava Material gemacht.


Wie du dein eigenes Material erstellst und alles was du dazu brauchst, erfährst du im kommenden Artikel Texturing Basics.

Sei gespannt!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

×
RenderingWas ist...?

Was ist Rendering?