Zum Inhalt springen
FSMW

Texturen je Editor

Normal Map in Blender einsetzen: Node-Setup, DirectX umkehren, selbst backen

Eine Normal Map läuft in Blender über einen eigenen Normal-Map-Node zwischen Image-Texture-Node und Principled BSDF, Farbraum Non-Color, Konvention OpenGL. Unsere `_nor_gl`-Dateien passen ohne Anpassung, DirectX-Karten brauchst du erst mit invertiertem Grün-Kanal.

Version
Blender 5.2 LTS (aktuell 5.2.2, Stand September 2026)
Konvention
Blender nutzt standardmäßig OpenGL, unsere Karten sind `_nor_gl`
Farbraum
Immer Non-Color, nie sRGB
Dauer
5 Minuten einbinden, 15 bis 30 Minuten selbst backen

Eine Normal Map täuscht kleine Beulen, Fugen und Kratzer vor, ohne dass die Geometrie sich ändert. Blender braucht dafür einen eigenen Node zwischen Bild und Shader, sonst interpretiert der Principled BSDF die Farbwerte falsch. Diese Anleitung zeigt das Setup für unsere fertigen _nor_gl-Karten, den Umgang mit DirectX-Maps aus anderen Quellen und das Backen einer eigenen Normal Map in Cycles. Wie die Karte gemeinsam mit Diffuse, Roughness und ARM in ein vollständiges Material kommt, steht in der Blender-Grundlagen-Anleitung. Was eine Normal Map als Texturtyp technisch überhaupt ist und wie sie sich von Bump und Displacement unterscheidet, erklären wir unabhängig von Blender in der allgemeinen Normal-Map-Anleitung.

Der Normal-Map-Node

Verbinde niemals eine Normal-Map-Textur direkt mit dem Normal-Eingang am Principled BSDF, das Ergebnis sieht dann nur zufällig verrauscht aus. Dazwischen gehört immer der Normal-Map-Node (Add, Vector, Normal Map). Er liest die RGB-Werte des Bildes als gestörte Oberflächennormalen und rechnet daraus einen Normalen-Vektor, den der Shader tatsächlich verwenden kann.

Der Node hat einen Color-Eingang für die Textur und einen Strength-Eingang für die Intensität des Effekts, Standardwert 1. Höhere Werte verstärken die Beulen, 0 schaltet die Normal Map komplett ab, praktisch zum schnellen Vorher-Nachher-Vergleich beim Einrichten des Materials. Werte über 2 wirken bei unseren Karten meist übertrieben und lassen Kanten hart und künstlich wirken, halt dich lieber im Bereich zwischen 0,7 und 1,3.

Eine weitere Eigenschaft, Base, taucht erst auf, sobald du zusätzlich mit echtem Displacement arbeitest: Original Base nimmt die glatte, unverschobene Grundfläche als Bezug, Displaced Base bezieht sich auf die bereits verschobene Oberfläche. Solange du nur mit Normal Map ohne Displacement arbeitest, spielt das keine Rolle, die Voreinstellung passt.

Blender: Image-Texture-Node auf Non-Color, Normal-Map-Node mit Strength und Space, verbunden mit dem Principled BSDFKI-generiert
Blender: Image-Texture-Node auf Non-Color, Normal-Map-Node mit Strength und Space, verbunden mit dem Principled BSDF KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Unsere Karte einbinden

Leg einen Image-Texture-Node an, lad die Datei mit der Endung _nor_gl, zum Beispiel FSMW_rusty_corrugated_metal_01_nor_gl_4k.png. Stell den Farbraum auf Non-Color, das ist bei einer Normal Map Pflicht laut Blender-Doku, sonst wendet Blender eine Farbkorrektur auf Werte an, die gar keine Farben sind, und das verzerrt die Richtung der Normalen. Verbinde den Color-Ausgang mit dem Color-Eingang des Normal-Map-Nodes, dessen Normal-Ausgang geht in den Normal-Eingang am Principled BSDF.

Am Normal-Map-Node selbst findest du die Eigenschaft Space, in aller Regel bleibt sie auf Tangent stehen, weil Tangent-Space-Normal-Maps mit Objekt-Transformationen und Verformung des Meshes mitgehen. Object- oder World-Space brauchst du nur in Sonderfällen, etwa bei statischer Geometrie ohne Animation.

Achte zusätzlich auf die Eigenschaft UV Map am Normal-Map-Node, falls dein Objekt mehr als eine UV-Map besitzt. Sie muss zu der UV-Map passen, über die auch der Image-Texture-Node die Textur projiziert, sonst driften Normalen und Farbinformation auseinander und die Beulen sitzen an der falschen Stelle. Bei einem einzigen UV-Layer, wie es bei unseren Modellen der Fall ist, stellt sich das Problem nicht.

Konvention: warum unsere Karten sofort passen

Normal Maps kodieren Richtungen in Rot, Grün und Blau, und dabei gibt es zwei Konventionen, die sich nur im Grün-Kanal unterscheiden. Blender nutzt für Rendering und Backen standardmäßig die OpenGL-Konvention, bei der der grüne Kanal nach oben zeigt. Die DirectX-Konvention, verbreitet bei Software wie manchen Spiele-Engines oder älteren Substance-Painter-Exporten, zeigt den grünen Kanal nach unten, sie ist quasi vertikal gespiegelt.

Unsere _nor_gl-Dateien liegen bewusst in OpenGL vor, das steht auch im Dateinamen. Du steckst sie ein, stellst Non-Color ein, fertig, keine Umkehrung nötig. Am Normal-Map-Node selbst gibt es zusätzlich die Eigenschaft Convention, über die sich zwischen OpenGL und DirectX umschalten lässt, falls du doch einmal eine fremde DirectX-Karte reinladen willst.

Wichtig für später, falls du deine Blender-Szene für einen LS25-Mod weiterverwendest: Die GIANTS Engine erwartet Normal Maps ebenfalls in der OpenGL-Konvention. Was in Blender richtig aussieht, passt also unverändert auch im Spiel, du musst beim Übergang von Blender zu GIANTS nichts am Grün-Kanal ändern.

Eine DirectX-Karte umkehren

Steht dir keine Karte mit passender Convention-Option zur Verfügung, oder willst du die Umkehrung sichtbar in der Node-Kette haben, gehst du über die Farbkanäle selbst. Häng an den Image-Texture-Node einen Separate-Color-Node (Modus RGB), das liefert dir Red, Green und Blue getrennt. Den Grün-Ausgang schickst du durch einen Invert-Node oder einen Map-Range-Node, der aus dem Wert 1 minus Grün macht. Anschließend führst du Red, das invertierte Grün und Blue wieder in einen Combine-Color-Node zusammen und verbindest dessen Ausgang mit dem Color-Eingang des Normal-Map-Nodes.

Das Ergebnis siehst du sofort im Viewport: Vertiefungen, die vorher wie Erhebungen wirkten, liegen jetzt richtig herum. Speicher dir diese kleine Umkehr-Kette als Node-Gruppe, falls du öfter mit fremden DirectX-Assets arbeitest, dann sparst du dir das erneute Verkabeln.

Der Grund für den Unterschied liegt im Aufbau der Karte selbst: Der grüne Kanal kodiert, wie stark die Oberfläche entlang der zweiten Tangentenrichtung kippt. OpenGL und DirectX definieren diese Richtung genau entgegengesetzt, deshalb reicht es, nur diesen einen Kanal umzudrehen. Rot und Blau, also die Kippung in die erste Tangentenrichtung und die Höhe über der Fläche, bleiben in beiden Konventionen identisch und müssen nicht angefasst werden.

Blender-Nodes zum Umkehren einer DirectX-Normal-Map: Separate Color, Invert am Grün-Kanal, Combine ColorKI-generiert
Blender-Nodes zum Umkehren einer DirectX-Normal-Map: Separate Color, Invert am Grün-Kanal, Combine Color KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Normal Map in Cycles backen

Willst du selbst Detail von einem hochauflösenden Modell auf ein Low-Poly-Modell übertragen, backst du eine eigene Normal Map. Voraussetzung ist Cycles als aktiver Renderer, beide Modelle liegen an derselben Position übereinander, und das Low-Poly-Modell braucht eine vernünftige UV-Map ohne Überlappungen.

Leg zuerst im Shader Editor des Low-Poly-Objekts einen neuen Image-Texture-Node an, erstell darin ein neues leeres Bild in der gewünschten Auflösung und lass diesen Node aktiv und ausgewählt, Blender backt immer in den zuletzt ausgewählten Image-Texture-Node. Wechsel dann in die Render Properties, Bereich Bake, stell Bake Type auf Normal.

Aktivier Selected to Active. Wähl zuerst das High-Poly-Objekt aus, halt Umschalt gedrückt und klick zuletzt zusätzlich das Low-Poly-Objekt an, damit es als aktives Objekt gilt, denn Blender backt von den ausgewählten Objekten auf das aktive. Unter Space bleibt Tangent stehen, das ist der Normalfall und passt zu unserer eigenen Verwendung der Normal Map später im Material.

Falls beide Meshes nicht exakt ineinander liegen, hilft die Option Cage zusammen mit Cage Extrusion, oder ohne Cage die Einstellung Max Ray Distance. Beide steuern, wie weit Blender von der niedrig aufgelösten Oberfläche aus nach innen und außen nach der hoch aufgelösten Geometrie sucht. Ohne Cage schießt Blender die Strahlen direkt entlang der Low-Poly-Normalen nach außen und innen, mit Cage nimmt es stattdessen eine eigens dafür aufgeblähte Kopie des Low-Poly-Meshes als Ausgangspunkt, das liefert bei unregelmäßiger Geometrie oft die saubereren Ergebnisse. Wie weit diese Kopie nach außen wandert, steuert Cage Extrusion.

Achte außerdem auf das Margin, den Rand um jede UV-Insel, den Blender beim Backen zusätzlich einfärbt. Ein zu kleines Margin führt dazu, dass beim späteren Mipmapping in der Engine benachbarte UV-Inseln ineinander verlaufen und feine Nähte sichtbar werden. Ein paar Pixel Margin mehr, als du am Ende brauchst, kosten kaum Qualität, sparen aber Ärger. Klick zum Schluss auf Bake und speicher das Ergebnisbild extern, sonst ist es weg, sobald du die Datei schließt.

Für richtig tiefe Fugen oder Nietenreihen, die auch am Umriss der Silhouette sichtbar sein sollen, reicht eine Normal Map allein nicht mehr aus, egal wie sauber sie gebacken ist. Dafür brauchst du echte Verschiebung der Geometrie, das zeigen wir Schritt für Schritt in der Displacement-Anleitung.

Bake-Einstellungen in Blenders Render Properties: Bake Type Normal, Selected to Active, Cage Extrusion und MarginKI-generiert
Bake-Einstellungen in Blenders Render Properties: Bake Type Normal, Selected to Active, Cage Extrusion und Margin KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Typische Fehler

Problem Ursache Lösung
Oberfläche wirkt komplett flach, keine Wirkung sichtbar Farbraum steht auf sRGB statt Non-Color, oder der Normal-Map-Node fehlt Farbraum auf Non-Color stellen, Bild über einen Normal-Map-Node statt direkt an den Normal-Eingang anschließen
Beulen wirken invertiert, Vertiefungen sehen aus wie Erhebungen DirectX-Konvention statt OpenGL, Grün-Kanal steht falsch herum Am Normal-Map-Node die Convention auf DirectX stellen oder Grün-Kanal per Separate/Combine Color manuell invertieren
Sichtbare Nähte an UV-Grenzen UV-Inseln sind beim Backen zu dicht aneinander oder das Margin ist zu klein Margin im Bake-Panel erhöhen und UV-Inseln mit etwas mehr Abstand zueinander packen
Gebackene Karte bleibt schwarz oder stark fleckig High- und Low-Poly liegen zu weit auseinander, Strahlen beim Backen treffen ins Leere Cage Extrusion oder Max Ray Distance im Bake-Panel erhöhen, notfalls testweise ohne Cage arbeiten
Bake-Button lässt sich nicht anklicken Kein aktiver Image-Texture-Node im Material ausgewählt, oder Renderer steht nicht auf Cycles Renderer auf Cycles stellen und den Ziel-Image-Texture-Node im Shader Editor anklicken, bevor du auf Bake klickst

Häufige Fragen

Muss ich unsere Normal Map in Blender noch umstellen?

Nein. Unsere `_nor_gl`-Dateien liegen in der OpenGL-Konvention vor, und genau die verwendet Blender standardmäßig für Rendering und Backen. Du musst nur den Farbraum am Image-Texture-Node auf Non-Color stellen.

Wie erkenne ich eine DirectX-Normal-Map?

Optisch kaum, du musst es wissen oder ausprobieren. Wirken Vertiefungen wie Erhebungen und umgekehrt, ist der Grün-Kanal falsch herum, das ist das typische Zeichen für eine vertauschte Konvention.

Wie kehre ich eine DirectX-Map in Blender um?

Am Normal-Map-Node selbst über die Eigenschaft Convention auf DirectX umstellen, wenn diese Option vorhanden ist, sonst mit Separate Color und Combine Color den Grün-Kanal invertieren (1 minus Grün) und wieder zusammensetzen.

Was brauche ich zum Backen einer eigenen Normal Map?

Ein High-Poly- und ein Low-Poly-Modell an derselben Position, eine UV-Map auf dem Low-Poly-Modell, ein neues leeres Bild als Backziel und den Renderer Cycles mit aktivierter Option Selected to Active.

Warum ist meine gebackene Normal Map komplett schwarz oder fleckig?

Meistens stimmt der Abstand zwischen High- und Low-Poly nicht, die Strahlen beim Backen treffen die hohe Auflösung nicht. Cage Extrusion oder Max Ray Distance im Bake-Panel anpassen, meist reicht ein kleiner positiver Wert.

Geprüft gegen die offizielle Blender-Doku (docs.blender.org) · Stand: 25. September 2026

Mit KI-Unterstützung erstellt, Fakten geprüft gegen die genannten Quellen.