Blender 186 – Bake Normal Maps (Cycles)
Das Thema NormalMap wurde hier schon mehrmals angesprochen, extern hergestellt. In diesem Teil geht es allerdings darum NormalMaps innerhalb von Blender zu erstellen indem die Struktur von einem HighPoly- auf ein LowPoly-Objekt übertragen wird.
Skills: Easy
Addon: Nein
Render Engine: Cycles
Download: Fertig vorbereitete Szene zum direkten Einstieg. Download via Mediafire.
Was eine NormalMap ist, wozu sie dient und wie man eine NormalMap in einem externen Bildbearbeitungsprogramm erstellt kann in diesen Beiträgen Gimp 037 und Gimp 038 auf dieser Seite nachgelesen werden.
In aller Kürze: Eine NormalMap ist eine Map in bestimmten Farben die 3D-Programme als Höhen- und Tiefen-Information nutzten. So können beispielsweise in Games Details dargestellt werden, über die das Objekt real gar nicht verfügt. Diese nicht vorhandene Geometrie reagiert sogar auf Lichteinfall (Licht und Schatten). So werden Polygone eingespart und die Berechnungszeit sinkt.

Beispiel
Voraussetzungen
Um die Übersicht besser zu behalten wird hier auf den Aufbau des Models an sich verzichtet. Was im Vorfeld beschrieben wird sind die Objekte die benötigt und organisiert werden müssen.
Es soll eine Platte (Bodenplatte, Wandverkleidung etc.) mit Noppen vorgetäuscht werden. Der Vorgang wird so ablaufen, dass ein Model mit vielen Polygonen (HighPoly) erst einmal angefertigt wird und die Geometrie später über eine NormalMap auf ein LowPoly-Objekt (wenig Polygone) übertragen wird.
In diesem Fall benötigt man eine einfache Plane, bestehend aus einem einzigen Polygon. Dieses Objekt besteht aus einer Fläche (Face) und 4 Vertices (Eckpunkte) (siehe Bild unten).

Plane (1 Polygon, 4 Vertices)
Dieses Objekt dient uns gleich als LowPloy-Objekt und wird im Outliner entsprechend benannt. Im Beispiel wurde es schlicht LowRes (Low Resolution) genannt (siehe Bild unten).

LowRes-Object im Outliner
Außerdem wird im Outliner eine neue Collection (früher Layers genannt) erstellt und das Objekt dort hineinverschoben. Das funktioniert per Drag and Drop. Im unteren Bereich, unter der Timeline, können Informationen zu dem Objekt ausgelesen werden (siehe Bild unten).

Objekt Informationen
Von dem Objekt LowRes wird dann eine Kopie erstellt (SHIFT-D), in die obere Ebene verschoben und in HighRes (hohe Auflösung) umbenannt (siehe Animation unten).

HighRes Kopie
Wie schon gesagt wird hier auf die Bauweise nicht wirklich eingegangen. Nur werden hier beispielhaft Teilstücke einer Sphere mit einem Array-Modifier auf der Plane (HighRes) verteilt und mit dem Hotkey STRG-J (Join) vereint, um eine ordentliche Anzahl von Polys zu erzeugen (siehe Animation unten).

HighRes Objekt
Ist das LowRes-Objekt im OUtliner vorerst deaktiviert (Augensysmbol Outliner) bleiben in der Leiste unten nur noch die Informationen zum HighRes Objekt. Und das hat zur Zeit 2.426 Vertices und etwas über 2.300 Faces. Nicht dass das wirklich viel wäre aber als Beispiel soll es hier ausreichen (siehe Bild unten).

HighRes Information
Image Texture und Einstellungen
Soviel zu den Grundvoraussetzungen. Es müssen als zwei Objekte eine niedrig aufgelöste Version mit wenigen Vertices und Faces und eine hochaufgelöste Version, eine grobe Kopie mit wenig Vertices und Faces vorhanden sein. Der eigentliche Vorgang der Entstehung der Nomal Map beginnt hier.
Die LowPoly-Plane wird nun ganz knapp über dem detaillierten Objekt platziert (siehe Animation unten).

Plane platzieren
Dann wechselt ihr bei markiert Low-Poly Plane mit der TAB-Taste in den Edit-Mode, markiert mit Taste A alle Vertices und drückt Taste U für Unwrap (siehe Bild unten).

Low-Poly Unwrap
Spätestens jetzt ist es günstig sich den Bildschirm aufzuteilen. Links Arbeitsbereich, rechts oben UV Image-Editor und rechts unten den Shader-Editor (siehe Bild unten).

Bildschirmaufteilung
Der nun folgende Schritt beziehungsweise die Folge der Markierung ist sehr wichtig! Im Outliner wird erst das Objekt HighRes und danach das Objekt LowRes markiert. Weil: Die Geometrie wird vom hoch aufgelösten zum niedrige aufgelösten Objekt übertragen (siehe Bild unten).

Erst HighRes, dann LowRes
Diesen Schritt der Markierung könnte man auch etwas später ausführen aber hier wurde er der Übersicht halber schon jetzt vorgenommen.
Im UV-Editor wird nun ein neues Bild angelegt. Auf diesem Bild wird später die NormalMap erscheinen (siehe Bild unten).

New Image
Das Bild sollte einen eindeutigen Namen erhalten. Dann könnten noch die Größe angepasst werden, was hier aber nicht nötig ist. Alpha-Kanal wurde deaktiviert, weil ebenfalls nicht benötigt (siehe Bild unten).

Image Optionen
Jetzt wird ein neues Material benötigt. Dazu klickt man lediglich auf das Pluszeichen, benennt das Material wieder eindeutig und das war es auch schon in diesem Bereich.
Nur noch einmal zum Verständnis: Das Material erhält die LowPloy-Version. Da sie zuletzt markiert wurde betreffen die Änderungen derzeit auch nur dieses Objekt, obwohl beide (High- und Low-Res) markiert sind (siehe Bild unten).

Material erstellen (Low Poly)
Nachdem das Material erstellt wurde liegen im Shader-Editor (vor Blender 2.8 Node-Editor) standardmäßig zwei Nodes. Der Material Output und der Principled BSDF. Es wird aber noch ein weiterer Node benötigt. Mit SHIFT-A (Maus im Editor Bereich) wird aus der Gruppe Texture ein Image Texture-Node hinzugefügt.
Ein Klick auf das kleine Bild-Icon erlaubt die Auswahl an vorhandenen Bildern. Hier muss nun das oben angelegte Image ausgewählt werden. Color Space kann auf Non-Color eingestellt werden. Das ist bis hierher ausreichend. Der Texture-Node muss noch nicht mit den anderen Nodes verbunden sein (siehe Bild unten).

Image Textur Node
Nun wird in der Properties Panel auf die Render Einstellungen gewechselt. Hier sollte gewährleistet sein das Cycles als Render Engine ausgewählt ist (siehe Bild unten).

Cycles festlegen
Weiter unten in den Render Einstellungen findet ihr den Bereich Bake.
Bake
Bake Type muss auf Normal eingestellt und Selected to Active muss aktiviert werden. Genau dazu hatten wir HighRes und LowRes angelegt und in der richtigen Reihenfolge markiert. Wobei das zuletzt markierte Objekt LowRes das aktive Objekt ist. Also Active.
Ray Distance wird in diesem Fall nicht benötigt, kann daher auf 0 (Null) bleiben aber man sollte diesen Punkt schon mal im Auge behalten. Andere Objekte benötigen hier Einstellungen.
Zuletzt drückt man den breiten grauen Button Bake ganz oben, um den Backvorgang zu starten (siehe Bild unten).

Bake Settings
Der Fortschritt des Texture Bake kann der Leiste unterhalb der Timeline entnommen werden (siehe Bild unten).

Fortschrittsbalken
Ist der Backvorgang beendet erscheint im UV Image-Editor die fertige Normal Map. Würden dort nun andere fleckigere Farbflächen erscheinen, dann müsste man bei der Ray Distance Änderungen vornehmen (0.05 bis 1.0 beispielsweise) und den Bake-Vorgang neu starten.
Aber in diesem Fall schaut die Map sehr gut aus (siehe Bild unten).

Fertige Normal Map
Jetzt kann man im Outliner die HighRes-Version deaktivieren (Augensymbol) und im Shader Editor über SHIFT-A und im Bereich Vector einen Normal Map-Node hinzufügen. Der Node wird zwischen dem Image Texture Node und Principled BSDF abgelegt und wie im Bild unten mit Noodles (Nudeln) verbunden (siehe Bild unten).

Normal Map Node
Über den Eintrag Strength bei dem NormalMap-Node kann die Stärke/Höhe verändert werden, falls der Effekt zu gering oder zu stark sein sollte (siehe Bild oben).
Das Ergebnis
Wechselt man nun im Arbeitsbereich in die Top-View (Taste 7) und bewegt das Licht dann kann man betrachten wie sich Licht und Schatten verschieben (siehe Animation unten).

Licht und Schatten
Auch in Seitenansichten reagiert die Struktur auf Licht und/oder Positionsveränderungen (siehe Animation unten).

Andere Perspektive
Entlarvt wird eine Geometrie die auf einer NormalMap basiert natürlich, wenn man flach über die Fläche schaut. Es ist keine Geometrie vorhanden.

Plane bleibt Plane
Aber dieser Umstand tut der NormalMap keinen Abbruch. Der Effekt einer NomalMap ist immer wieder beeindruckend. Die Plane mit Noppen besteht lediglich aus 4 Vertices und einem einzigen Face. Auf diese Weise wurden in diesem Fall 2422 Vertices eingespart.
Wie gesagt war die Polyanzahl bei dem HighRes-Objekt noch nicht einmal hoch angesiedelt. Es könne auch leicht 100.000 und mehr Vertices eingespart werden.