Grafikdesign • Layoutgestaltung • Filmschnitt • Postproduktion

UV-Mapping mit Blender

Ziel ist die 3D-Modellierung eines Brunnens und das Zuweisen von Material-Texturen per UV-Mapping. Dazu verwendet hab ich die 3D-Modellierungssoftware Blender v2.72 mit dem Cycles Renderer.

 

Das Ausgangsmaterial erstelle ich mit dem Adobe Illustrator™, aus dem der Brunnen in Blender gedreht werden soll. Es geht um das Grundprofil des Brunnens, das ich dazu im SVG-Format speichere. Alternativ kann diese Kontur auch direkt in Blender als Curve gezeichnet werden.

 

SVG-Dateien, die aus reinen Pfaden bestehen, lassen sich in Blender als Curve importieren. Dazu erstelle ich mit Strg-N eine neue Blender-Datei, markiere und lösche den Standard-Cube mit X und schalte um von "Blender Render" auf "Cycles Render". Nun drücke ich auf dem Num-Block die Taste 7, um in die Draufsicht zu schalten und dann die Taste 5, um von der perspektivischen Ansicht (Fluchtpunkt) in die orthografische zu wechseln.

 

Im File-Menü befindet sich der Unterpunkt "Import", in dem ich "Scalable Vector Graphcis (.svg)" wähle, um die SVG-Datei zu importieren. Diese liegt daraufhin in der Draufsicht als Curve flach auf dem Boden. Für die Drehung ist es sinnvoll, dass die Curve exakt an der Achse abschließt (Abbildung 1).

 

Um aus der Curve den Brunnen drehen zu können, muss diese zuerst in ein Mesh konvertiert werden. Dazu aktiviere ich die Curve mit der rechten Maustaste, drücke Alt-C und wähle "Mesh from Curve/Meta/Surf/Text".

 

Mit Tab schalte ich nun in den Edit Mode, wo es im Tool Shelf (Taste T) bei den Mesh Tools einen Spin-Button gibt. Als diesbezüglicher Dreh- und Angelpunkt dient der 3D-Cursor, der dazu auf das Zentrum gesetzt werden sollte, damit die Drehung um die Achse erfolgt. Das geht am schnellsten mit Shift-S und dem Punkt "Cursor to Center". Nun selektiere ich mit A (Select All) das komplette Mesh und drücke den Spin-Button. Unten im Tool Shelf erscheinen dazu die Optionen. Bei Steps verwende ich 12 oder 16, um einen kantig gerundeten Brunnen zu erhalten - für einen runden Brunnen kann man hier eine höhere Zahl eingeben, wodurch es zu einer feineren Segmentierung und zu einem umfangreicheren Mesh kommt. Den Angle setze ich auf 360 Grad, damit der Brunnen um einen kompletten Kreis gedreht wird. Die Werte von "Center" belasse ich alle auf 0 - für den Fall, dass der 3D-Cursor nicht im Zentrum stand, können die Werte hier auf 0 gesetzt werden. Bei den Axis setze ich Y auf 1 und Z auf 0, da der Brunnen zum jetzigen Zeitpunkt noch nicht aufgerichtet ist (Abbildung 2).

 

Zum Aufrichten des Brunnens schalte ich auf dem Num-Block mit der Taste 1 in die Vorderansicht. Falls noch nicht geschehen, blende ich außerdem mit der Taste N die Properties-Leiste ein. Bei Rotation setze ich den Wert X auf 90 Grad. Bei Location erhöhe ich den Z-Wert, damit sich der Brunnen oberhalb des Bodens/vertikalen Nullpunkts befindet. Das geht auch dynamisch, wenn man mit der links gedrückten Maustaste den blauen Pfeil in der 3D View nach oben zieht. Auch die Werte von Scale können angepasst werden, um den Brunnen bei Bedarf in die Länge oder in die Breite zu ziehen. Zum Verschieben der Ansicht verwende ich die mittlere Maustaste in Verbindung mit Shift, zum Zoomen verwende ich das Mausrad.

 

Die 3D-Modellierung an sich ist damit erledigt. Zum perspektivischen Betrachten des Ergebnisses reaktiviere ich mit der Taste 5 des Num-Blocks den Fluchtpunkt und drehe die Ansicht mit der mittleren Maustaste (ohne Shift) in die gewünschte Perspektive. Mit Shift-F gelangt man in einen Modus, den man aus gängigen 3D-Simulationen und Spielen kennt - mit der Maus schaut man sich um und mit W, A, S, D bewegt man sich. Mit Tab lässt sich in diesem Modus auch die Gravitation aktivieren. Dazu braucht es allerdings eine Plane als Boden, sonst fällt man ins Bodenlose.

 

Im nun Folgenden geht es um das Zuweisen von Material-Texturen per UV-Mapping und um das Ausleuchten mit breitflächigen Lichtquellen. Der Cycles Renderer bietet dazu physikalisch orientierte Shader.

 

Für das UV Editing gibt es ein eigenes voreingestelltes Screen Layout. Im linken Bereich geht es um das ausgerollte 2D-Image, im rechten Bereich um das 3D-Objekt. Dazu klickt man im linken Bereich auf den New-Button, um die Pixelgrafik zu erstellen, die als Textur dienen soll. Dabei sollte man darauf achten, dass die voreingestellte Auflösung von 1024 x 1024 Pixel nicht unbedingt optimal ist. Ich verwende eine Auflösung von 5000 x 5000 Pixel. Nun geht es darum, den Brunnen ausgerollt auf der Pixelgrafik darzustellen, um diese in einem Pixelgrafikprogramm mit Texturen zu versehen. Die individuelle Vorgehensweise erfolgt mit "Mark Seam" und "Unwrap", womit die Säume markiert werden und beim Ausrollen aufgeschnitten werden. Dieser Vorgang lässt sich aber auch automatisieren. Dazu schalte ich im 3D-Fenster in den Edit Mode, selektiere mit A das komplette Objekt, drücke die Taste U für Unwrap und wähle hier "Smart UV Project". Daraufhin hat man im Image-Fenster das ausgerollte Objekt, das sich hier im Menü "UVs" mit "Export UV Layout" als PNG speichern lässt (Abbildung 3).

 

Zum Bearbeiten der PNG verwende ich Adobe Photoshop™. Alternativ eignet sich auch ein anderes Pixelgrafikprogramm mit Ebenentechnik, z.B. GIMP.

 

Die ausgerollten Elemente dienen nur als Vorlage, um diese mit den betreffenden Texturen für die UV-Map zu versehen. Aus diesem Grund sollten sie sich auf einer eigenen, darüber liegenden Ebene befinden, die letztendlich mit dem Auge-Symbol ausgeblendet wird, bevor das Image der UV-Map zugewiesen wird. Hat die Vorlage einen transparenten Hintergrund, scheint die darunter liegende Ebene durch, auf der man die betreffenden Bereiche mit den gewünschten Texturen "bemalt". Hat die Vorlage dagegen einen weißen Hintergrund, lässt sich dieser mit dem Ebenenmischmodus "Multiplizieren" transparent schalten. Analog dazu funktioniert das mit einem schwarzen Hintergrund und dem Ebenenmischmodus "Negativ multiplizieren".

 

Da die Säume bei "Smart UV Project" automatisch bestimmt werden, ist die Zuordnung der einzelnen Elemente unter Umständen nicht ganz offensichtlich. Zu diesem Zweck kann man sie mit Nummern versehen und testweise der UV-Map zuordnen. Die Nummern erscheinen daraufhin im 3D-Modell, wodurch ersichtlich ist, welche 2D-Fläche zu welcher 3D-Region gehört.

 

Zum Zuordnen der UV-Map resp. des Texture-Images stelle ich das Screen Layout von "UV Editing" auf "Compositing" um. Dazu sollte man das Viewport Shading auf "Rendered" stellen und im World-Reiter des Properties Editors "Ambient Occlusion" mit einem gemäßigten Factor aktivieren. Wesentlicher Bestandteil des Compositing Layouts ist der Node Editor. Den Node Tree Type stelle ich hier um von "Compositing" auf "Shader". Erst dann setze ich das Häkchen bei "Use Nodes", womit automatisch der Standard-Shader "Diffuse BSDF" (matter Shader ohne Glanz, Transparenz, etc.) erscheint, dessen Ausgang mit der Surface des Material Outputs verbunden ist. Dieser Shader ist mit dem Viewport Shading "Rendered" live zu sehen, jede Änderung im Node Editor ist sofort ersichtlich. Dieser Shader soll nun statt einer einfachen Farbe das Image Texture der PNG-Datei auf den Color-Eingang bekommen. Dazu wähle ich im Menü "Add" den Unterpunkt "Texture", dann "Image Texture" und verbinde dessen Color-Ausgang mit dem Color-Eingang des Diffuse BSDF Shaders. Im Image Texture Knoten öffne ich mit der Schaltfläche "Open Image" die externe PNG-Datei, die ich exportiert hatte und mit dem Photoshop bearbeitet hab. Die diesbezügliche UV-Map ist automatisch zugeordnet. Beim UV Unwrap wurde automatisch eine UV-Map namens "UVMap" erstellt, die im Data-Reiter des Properties Editors zugeordnet ist. Ein manueller Eingriff in dieses Verhalten ist nur dann notwendig, wenn es für ein Objekt mehrere UV-Maps gibt (Abbildung 4).

 

Für das eigentliche Image Texture fülle ich die Fläche zunächst komplett mit einem Muster (PAT-Datei). Dazu hab ich einen löchrigen Sandstein fotografiert, in Schwarz/Weiß konvertiert und als Muster gespeichert. Im Innenbereich des Brunnens aber sollen Steine liegen. Dazu hab ich Steine im Wasser fotografiert und ebenfalls als Muster gespeichert. Für die Abgrenzung zwischen dem Innenbereich mit den Steinen und der Sandstein-Textur verwende ich eine Ebenenmaske mit weicher Kante, wodurch sie flüssig wirkt und fließend übergeht. Die Position des Innenbereichs ist am UV Layout zu erkennen, dessen Ebenen ich aber inkl. Nummern mit dem Auge-Symbol ausblende, da für die letztendliche Verwendung nur die Texturen relevant sind (Abbildung 5).

 

Im Node Editor sind prinzipiell die Ein- und Ausgänge der jeweils gleichen Farbe miteinander kompatibel. Doch weil ich das Image Texture im Wesentlichen farblos und kontrastreich gestaltet hab, eignet sich dessen Color-Ausgang zusätzlich - doppelte Verwendung des Ausgangs - auch für den Displacement-Eingang des Material Outputs, was zu plastischen Vertiefungen führt.

 

Damit die farblose Erscheinung dennoch etwas Farbe bekommt, setze ich zwischen Image Texture und Diffuse BSDF einen MixRGB-Knoten, den ich aber nicht im Mix-Modus, sondern im Multiply-Modus verwende - wieder trennen lässt sich eine Node-Verbindung mit der linken Maustaste bei gedrückter Strg-Taste, in dem man sie mit einer Mausbewegung durchkreuzt. Der erste Color-Eingang bleibt unbelegt, stattdessen definiere ich hier den Orange-Ton, den das Objekt erhalten soll. Der Factor definiert den Einfluss der Tönung. Der zweite Color-Eingang bekommt den Color-Ausgang des Image Textures und der Color-Ausgang von Multiply geht in den Color-Eingang des Diffuse BSDFs.

 

Für das Endergebnis ist es sinnvoll, das Objekt mit breitflächigen Lichtquellen auszuleuchten. Dazu eignen sich einfache, aber große Planes mit dem Shader "Emission", der ein Objekt zum Leuchten bringt. Außerdem sollte man ein Kamera-Objekt in Stellung bringen. Dann noch ein Blick in den Render-Reiter des Properties Editors. Stellt man das Device von "CPU" auf "GPU Compute" um, geht das Rendern wesentlich schneller. Bei Dimensions definiere ich eine Resolution von 3840 x 2160 Pixel und 100 %, um auch für die 4K-Ära gerüstet zu sein. Da es sich nur um ein Bild und nicht um eine Animation handelt, können Start und End Frame beide auf 1 stehen. Den Output möchte ich als PNG mit RGBA (RGB inkl. Alpha-Kanal), womit man das Ergebnis mit transparentem Hintergrund bekommt. Der wohl wichtigste Punkt ist das Sampling. Der Cycles Renderer bietet ein sehr gutes und rauschfreies Ergebnis, wenn man den Wert für Samples hoch genug setzt. Klickt man nun auf den Render-Button im oberen Teil des Render-Reiters, beginnt die Berechnung des Objekts im Image Editor. Am Ende der Berechnung kann das Ergebnis mit F3 als PNG gespeichert werden (Abbildung 6).

 

Erstveröffentlichung am 18. Januar 2016 von Andreas Geiß

 

Andy Geiss Mediengestaltung