Displacement Map: Echte Geometrie-Verschiebung statt nur Beleuchtungstrick
Eine Displacement Map verschiebt anhand von Höhenwerten die tatsächliche Position von Vertices und braucht dafür ein ausreichend unterteiltes Mesh. Unsere eigenen _disp-Karten liegen deshalb als 16-Bit-PNG vor, damit keine sichtbaren Stufen im Relief entstehen.
- Kurz gesagt
- Nur echte Displacement-Maps bewegen Geometrie, Bump und Parallax täuschen Tiefe nur optisch vor
- Unsere Texturen
- _disp = Höhenkarte, PNG 16 Bit
- Neutralwert
- Midlevel meist 0,5 – Werte darüber heben, darunter senken die Fläche
- Braucht
- Genug Unterteilung am Mesh, sonst wirkt das Relief eckig
Height, Bump, Parallax und echte Displacement im Unterschied
Ob beim Modding für LS25 in Blender vorbereitet oder direkt in einer anderen 3D-Anwendung eingesetzt: Am Anfang steht meistens dieselbe Datei: eine Height Map, ein reines Graustufenbild, in dem helle Bereiche für "hoch" und dunkle Bereiche für "tief" stehen. Diese Karte allein ist noch keine Technik, sondern nur Rohdaten. Was daraus wird, entscheidet sich erst dadurch, wie sie eingesetzt wird.
Als Bump Map genutzt, verändert dieselbe Höheninformation nur die Beleuchtungsrechnung, ohne dass sich am Mesh etwas bewegt. Die Silhouette am Rand eines Objekts bleibt exakt gleich, egal wie tief die Fugen in der Textur aussehen.
Parallax Occlusion Mapping geht einen Schritt weiter, bleibt aber im selben Prinzip: Statt nur die Beleuchtung zu verbiegen, verschiebt die Technik pixelweise, welche Stelle der Textur überhaupt angezeigt wird, abhängig vom Blickwinkel. Godots eigene Dokumentation beschreibt das für die Height-Einstellung im Standard-Material treffend als "ray-marched search", die vertiefte Stellen entlang der Blickrichtung emuliert – ausdrücklich nur als optische Täuschung von Tiefe, ohne echte Geometrie zu erzeugen. Von weitem und an geraden Kanten sieht das überzeugend aus, am Silhouetten-Rand fällt der Unterschied zu echter Geometrie aber auf.
Erst eine echte Displacement Map verschiebt tatsächlich die Position von Vertices im Raum. Nur hier verändert sich auch die Silhouette eines Objekts sichtbar, weil wirklich neue Höhen und Tiefen entstehen und nicht nur simuliert werden.
Für unsere eigenen Texturpakete für den Landwirtschafts-Simulator 25 bedeutet das: Die _disp-Datei ist Teil des Downloads, aber nicht Teil der Konvertierung in das DDS-Format für den GIANTS Editor. Dort wandeln wir bislang nur Diffuse-, Normal- und Spekular-Karten um. Die Displacement Map ist stattdessen für Einsatzzwecke außerhalb des Spiels gedacht, etwa für Vorschau-Renderings in Blender oder für andere Engines mit eigener Unterstützung für echte Geometrieverschiebung.
Echte Verschiebung braucht Geometrie
Genau darin liegt der Haken bei echter Displacement: Ein Vertex kann nur dorthin verschoben werden, wo er auch existiert. Ein flaches Quadrat aus zwei Dreiecken lässt sich nicht in ein detailliertes Kopfsteinpflaster verwandeln, egal wie fein die Höhenkarte ist – es fehlen schlicht die Punkte, die sich bewegen könnten. Ohne ausreichende Unterteilung des Meshes wirkt eine Displacement Map deshalb grob, kantig oder wie eine Ansammlung einzelner Facetten statt einer organischen Oberfläche.
KI-generiertIn Blenders Cycles-Renderer löst die adaptive Unterteilung dieses Problem, indem sie das Mesh erst beim Rendern und abhängig von der Kameraentfernung feiner unterteilt – Flächen nah an der Kamera bekommen mehr Dreiecke, weit entfernte bleiben grob. Bis Blender 4.x lag diese Funktion hinter dem experimentellen Feature-Set, seit Blender 5.0 ist sie laut offizieller Blender-Dokumentation kein experimentelles Feature mehr und steht im Subdivision-Surface-Modifier standardmäßig zur Verfügung.
16 Bit statt 8 Bit: warum Stufenbildung entsteht
Eine Height Map mit nur 8 Bit pro Kanal kennt 256 mögliche Graustufen. Bei einer glatten Wand oder einem sanften Höhenverlauf über eine ganze Texturkachel hinweg reicht das oft nicht aus, um den Übergang wirklich stufenlos darzustellen – benachbarte Höhenwerte springen dann in sichtbaren, treppenartigen Absätzen, statt gleichmäßig anzusteigen. Ein 16-Bit-Kanal hat mit 65.536 möglichen Werten deutlich mehr Spielraum für feine Übergänge. Aus genau diesem Grund liefern wir unsere eigenen _disp-Dateien als PNG mit 16 Bit pro Kanal aus, nicht als 8-Bit-JPG.
Mittelwert und Stärke: warum beide Werte zusammengehören
Eine Displacement Map braucht neben den reinen Höhenwerten noch einen Referenzpunkt: den sogenannten Midlevel oder Mittelwert. Er legt fest, welcher Grauwert als neutrale Fläche ohne jede Verschiebung gilt. Blenders Displacement-Node setzt diesen Wert standardmäßig auf 0,5: Alles darüber schiebt die Oberfläche nach außen, alles darunter nach innen. Steht der Midlevel dagegen bei 0, verschiebt sich die komplette Fläche gleichmäßig nach außen, weil praktisch jeder Grauwert der Textur über diesem Nullpunkt liegt – ein häufiger Fehler, der wie eine falsch skalierte Textur aussieht, aber eigentlich am Mittelwert liegt.
Der zweite Wert ist die Stärke, meist in der Standard-Maßeinheit der jeweiligen Szene angegeben, in Blender also üblicherweise in Metern. Das ist der Punkt, an dem viele Anfänger stolpern: Eine Höhenkarte für eine Wandtextur mit realistischen Fugen von wenigen Millimetern Tiefe braucht eine winzige Stärke, etwa 0,005 bis 0,02 Meter, nicht den oft voreingestellten Wert von 1. Wer die Stärke unverändert lässt, bekommt eine Wand, die aussieht, als würde sie meterhoch aus sich selbst herausquellen.
Ein Beispiel aus unserem eigenen Sortiment macht das greifbar: Unsere Kachel "Cobblestone 01" ist auf eine reale Kantenlänge von 1,5 Metern ausgelegt. Die Fugen zwischen den einzelnen Pflastersteinen sind in Wirklichkeit vielleicht ein bis zwei Zentimeter tief, nicht mehrere Dezimeter. Setzt man die Displacement-Stärke in Blender probeweise auf 0,015 statt auf 1, bekommt man ein Relief, das zur echten Fugentiefe passt, statt eine Fläche, die aussieht wie ein Gebirge aus Beton. Der Mittelwert bleibt dabei unverändert bei 0,5, nur die Stärke wird an die reale Kachelgröße angepasst.
KI-generiertWie Engines Displacement einsetzen
Die drei Engines aus unserer Link-Matrix gehen unterschiedlich mit dem Thema um, und keine davon verhält sich wie eine andere:
In Blender mit Cycles ist echte Displacement direkt im Shader-Editor über den Displacement-Node verfügbar und kombiniert sich mit der oben genannten adaptiven Unterteilung zu tatsächlich verschobener Geometrie beim Rendern.
In Godot übernimmt die Height-Einstellung im Standard-Material (StandardMaterial3D und das für unsere ORM-gepackten Texturen relevante ORMMaterial3D) dagegen ausdrücklich keine echte Geometrieverschiebung. Laut Godot-Dokumentation erzeugt sie nur eine optische Tiefenwirkung durch eine Art Parallax-Suche entlang der Blickrichtung; für eine tatsächlich physisch vorhandene Höhenform, etwa für Kollisionsabfragen, verweist die Dokumentation stattdessen auf eine eigene Form namens HeightMapShape3D. Für eine kachelbare Wand- oder Bodentextur reicht die Height-Einstellung in Godot in aller Regel aus, weil man selten so flach über eine Fläche blickt, dass der fehlende Silhouetten-Effekt auffällt.
In Unreal Engine ist echte Laufzeit-Displacement über die sogenannte Nanite-Tessellation möglich: Sie unterteilt ein Nanite-Mesh zur Laufzeit zusätzlich anhand einer Displacement-Map oder eines prozeduralen Materials, statt die Unterteilung wie in Blender vorab beim Export festzulegen. Laut Epics eigener Dokumentation ist diese Funktion aktuell als experimentell markiert und gilt nur für Nanite-fähige Meshes, nicht für klassische Meshes ohne Nanite. Wer also mit älteren, nicht-Nanite-Meshes arbeitet, bleibt in Unreal Engine auf Parallax Occlusion Mapping oder auf eine bereits im 3D-Programm vorunterteilte Geometrie angewiesen.
Wie sich Displacement über die Material-Kanäle in Cinema 4D einrichten lässt, zeigen wir in unserer separaten Cinema-4D-Anleitung. Einen Überblick über alle PBR-Kartentypen, einschließlich der Frage, wann sich Displacement überhaupt lohnt, findet sich in unserer PBR-Textur-Übersicht.
Wann sich echte Displacement überhaupt lohnt
Echte Geometrieverschiebung kostet Rechenzeit, weil zusätzliche Vertices berechnet und bewegt werden müssen, und sie lohnt sich nicht für jede Oberfläche gleichermaßen. Für flache Strukturen wie feinen Putz oder leicht raue Farbe reicht in der Praxis fast immer eine Normal Map, weil der Blickwinkel selten flach genug ist, um den fehlenden Silhouetten-Effekt überhaupt zu bemerken. Bei grober Struktur mit tiefen Fugen, etwa Pflastersteinen, rissigem Beton oder Wellblech mit sichtbarer Kante, macht sich echte Displacement dagegen deutlich bemerkbar, besonders in Nahaufnahmen oder wenn die Kamera flach über die Oberfläche streift und die Silhouette am Rand sichtbar wird.
KI-generiertKurz zusammengefasst vor dem Einbau
Bevor man eine Displacement Map in ein Projekt einbaut, lohnt sich ein kurzer Realitätscheck: Wie tief ist die dargestellte Struktur wirklich, wie nah kommt die Kamera der Oberfläche im fertigen Projekt, und unterstützt die Ziel-Engine überhaupt echte Verschiebung oder nur eine Parallax-Annäherung? Die Antworten auf diese drei Fragen entscheiden meist schon, ob sich der zusätzliche Aufwand für Unterteilung und Testen lohnt, oder ob eine einfachere Normal Map denselben Eindruck mit weniger Arbeit liefert.
Häufige Fehler
| Problem | Ursache | Lösung |
|---|---|---|
| Treppenstufen statt weichem Relief sichtbar | Mesh zu wenig unterteilt für die eingestellte Stärke | Unterteilung erhöhen bzw. adaptive Unterteilung aktivieren, oder die Stärke reduzieren |
| Risse oder Sprünge genau an UV-Nähten | Höhenwerte springen an der Naht, weil beide Seiten der Naht keinen weichen gemeinsamen Verlauf teilen | UV-Nähte an unauffälligen Kanten platzieren, an denen der Höhenunterschied ohnehin gering ist |
| Die ganze Fläche hebt sich gleichmäßig an, statt nur das Relief zu zeigen | Falscher Mittelwert, z. B. 0 statt 0,5 | Midlevel auf 0,5 setzen und nur die Stärke anpassen |
| Ergebnis wirkt absurd übertrieben oder eingedrückt | Stärke mit der falschen Einheit verwechselt, etwa 1,0 statt 0,01 für wenige Millimeter Relief | Stärke an die tatsächliche physische Tiefe der Struktur anpassen |
Häufige Fragen
Was ist der Unterschied zwischen einer Height Map und einer Displacement Map?
Eine Height Map ist zunächst nur ein Graustufenbild mit Höheninformation. Ob daraus eine Bump Map, eine Parallax-Karte oder eine echte Displacement Map wird, entscheidet die Technik, mit der sie verwendet wird. Nur bei echter Displacement wird tatsächlich Geometrie verschoben.
Reicht eine Bump Map nicht aus?
Für sehr feine Struktur oft schon, weil sie deutlich weniger Rechenleistung braucht. Sobald aber die Silhouette eines Objekts sich an der Kante sichtbar verändern soll, etwa bei tiefen Fugen oder groben Steinen, reicht ein reiner Beleuchtungstrick nicht mehr aus.
Warum liefert ihr Displacement Maps als 16-Bit-PNG?
Ein 8-Bit-Kanal kennt nur 256 Abstufungen, ein 16-Bit-Kanal dagegen 65.536. Bei sanften Höhenverläufen reduziert das sichtbares Stufen im Relief deutlich, besonders bei größeren Texturkacheln.
Was macht der Midlevel-Wert bei Displacement?
Der Midlevel legt fest, welcher Grauwert als neutrale Fläche ohne Verschiebung gilt, meist 0,5. Werte darüber heben die Oberfläche an, Werte darunter senken sie ab. Steht der Midlevel falsch, hebt sich die ganze Fläche gleichmäßig an, statt nur das Relief zu zeigen.
Unterstützt Unreal Engine echte Displacement mit Nanite?
Ja, mit Einschränkung: Nanite-Tessellation kann Nanite-Meshes zur Laufzeit anhand einer Displacement-Map zusätzlich unterteilen. Laut Epics eigener Dokumentation ist diese Funktion als experimentell gekennzeichnet.