Displacement Mapping und Normal Mapping sind Textur-basierte Rendering-Techniken, um die Oberflächendetails eines 3D-Meshes virtuell zu verfeinern; Displacement verschiebt tatsächlich die Geometrie, während Normal Mapping nur die Lichtberechnung manipuliert.
Rubrik: Animation & VFX · Unterrubrik: VFX-Techniken · Niveau: Fortgeschritten
Synonyme / Auch bekannt als: Bump Mapping (Vorläufer), Micro-Displacement, Tessellation & Displacement, Height Map, Normal Map, Tangent-Space Normal Map
Was ist Displacement Mapping?
Displacement Mapping verschiebt die Vertices eines Meshes entlang ihrer Normalen entsprechend den Graustufenwerten einer Texture (Displacement Map). Weißer Wert = maximale Auslenkung nach außen; schwarzer Wert = keine Verschiebung (oder nach innen). Die Geometrie verändert sich physisch – das hat entscheidende Auswirkungen: Displacement erzeugt korrekte Silhouetten, korrekte Selbstbeschattung und korrekte Kontaktkanten mit anderen Objekten.
Normal Mapping modifiziert demgegenüber nur den Normalenvektor jedes Pixels im Shading-Schritt. Das Licht "denkt", die Oberfläche sei anders ausgerichtet, als sie wirklich ist. Das Mesh selbst verändert sich nicht – daher keine echten Silhouetten-Details, keine physische Tiefe.
Erklärung
Displacement Mapping – Technische Details
#### Typen
Vertex Displacement (Pre-Tessellation): Vertices werden vor dem Rendering verschoben. Nur so genau wie die vorhandene Polygonanzahl; für Low-Poly-Meshes ungeeignet.
Tessellation + Displacement (Adaptive Subdivision): Mesh wird dynamisch in feinere Polygone unterteilt, dann displacement. Methode der Wahl für Produktions-VFX.
- Pixar Subdivision (Catmull-Clark): Glattes Subdiv; Standard in RenderMan/Arnold
- OpenSubdiv: Offener Standard (Pixar, 2012); GPU-beschleunigt; in Houdini, Maya, Blender implementiert
- Nanite (Unreal Engine): Virtuelles Geometry-System; adaptive Micro-Polygon-Tessellation in Echtzeit
#### Displacement-Formel
`` P_displaced = P_original + N_surface × displacement(uv) × scale ``
Dabei ist P_original die originale Vertex-Position, N_surface der Oberflächennormalenvektor und displacement(uv) der in der Displacement Map an UV-Koordinate gesampelte Wert (0–1 oder –0.5 bis +0.5 für bidirektionalen Displacement).
#### Vektorielles Displacement (Vector Displacement)
Anstelle einer Graustufenkarte enthält eine Vector Displacement Map (VDM) RGB-Werte, die dreidimensionale Verschiebungsvektoren codieren. Ermöglicht extreme Überhänge und komplexe organische Formen (Hörner, Schuppen), die skalares Displacement nicht reproduzieren kann. Export aus ZBrush (Multi-Map Exporter → Vector Displacement Map).
Normal Mapping – Technische Details
#### Tangent-Space vs. World-Space Normal Maps
Tangent-Space Normal Maps (blau-lila Farbe): Normalenvektor relativ zur lokalen Oberfläche codiert; portabel (gleiche Karte auf verschiedenen Meshes nutzbar); Standard in Games und VFX.
World-Space Normal Maps: Absolute Weltkoordinaten-Normalenvektoren; schneller zu sampeln, aber nicht portabel; Verwendung für statische Objekte.
Object-Space Normal Maps: Relativ zum Objekt-Koordinatensystem; verwendbar für deformierbare Meshes in VFX.
#### Berechnung im Shader
``glsl vec3 normal_map = texture(normalMap, uv).rgb; normal_map = normalize(normal_map * 2.0 - 1.0); // aus [0,1] in [-1,1] vec3 N = normalize(TBN * normal_map); // TBN = Tangent-Bitangent-Normal Matrix ``
#### Bump Mapping (historisch)
Bump Mapping (Blinn, 1978) ist der Vorläufer: eine Graustufenmap stört die Normalenberechnung durch numerische Differentiation der Heightmap. Weniger präzise als explizite Normal Maps, aber konzeptuell gleich.
Vergleich der Methoden
| Eigenschaft | Bump Map | Normal Map | Displacement Map |
|---|---|---|---|
| Silhouette verändert | nein | nein | ja |
| Selbstbeschattung korrekt | nein | nein | ja |
| Kontaktkanten korrekt | nein | nein | ja |
| Performance | sehr hoch | hoch | mittel–niedrig |
| Geometrie-Anforderung | beliebig | beliebig | fein (oder Tessellation) |
| Map-Auflösung | 8-bit | 16-bit | 16-bit oder 32-bit float |
Beispiele
- King Kong (Peter Jackson, 2005) – Weta Digital's Kong hatte hochauflösende Displacement-Maps für Fell-Textur und Muskeldetails; Vector Displacement für Gesichtsfalten.
- Avatar – Aufbruch nach Pandora (James Cameron, 2009) – Pandora-Vegetation und Na'vi-Haut; Displacement für organische Pflanzendetails; Schlüsselmerkmal der Weta-Shader-Pipeline.
- Dune (Denis Villeneuve, 2021) – Sandworm-Segmente; mehrstufiges Displacement auf organischen Scaling-Texturen; Oscar für beste VFX.
- The Mandalorian (Jon Favreau, 2019–) – Unreal Engine Nanite verwendet Echtzeit-Displacement für LED-Volume-Environments.
- God of War (Sony Santa Monica Studio, 2018) – Spieletitel; Kombination von Normal Maps (Echtzeit) für Charakter-Detail mit Displacement (Pre-baked) für Terrain; zeigt den Dualansatz in Games.
Schritt-für-Schritt Workflow
- High-Res-Sculpt erstellen: Hochdetailliertes 3D-Modell in ZBrush/Blender sculpen (Millionen Polygone).
- Low-Poly-Basis erstellen (Retopologie): Produktions-taugliches Low-Poly-Mesh erstellen (Quad-Topologie, saubere Edge Loops).
- UV-Unwrap: Saubere UVs ohne Überlappungen und minimale Verzerrung; UDIM für mehrere UV-Kacheln bei komplexen Charakteren.
- Normal Map backen: Raycast-Projektion des High-Poly-Details auf das Low-Poly-Mesh in Marmoset Toolbag, Substance Painter oder Houdini.
- Displacement Map backen: In ZBrush:
Multi-Map Exporter → Displacement Map (32-bit EXR); Midpoint auf 0,5 für bidirektional. - Shader-Setup: In Arnold/Houdini: Displacement Shader mit der EXR-Karte verknüpfen; Scale und Dicing Rate einstellen.
- Tessellation kalibrieren: Adaptive Subdivision aktivieren; Dicing-Rate so setzen, dass Subpixel-Genauigkeit erreicht wird (0,5–1 px).
- Test-Render: Silhouetten und Selbstbeschattung prüfen; Normal Map für Detailschicht hinzufügen.
In der Praxis
ZBrush (Maxon): Sculpting-Werkzeug der Wahl; exportiert sowohl Normal Maps als auch Displacement Maps (32-bit EXR); Vector Displacement Maps für extreme Geometrie.
Substance Painter (Adobe): Normal-Map-Baking-Pipeline; PBR-Workflow mit Normal, Roughness, Metallic; ideal für Game-Assets und Broadcast-VFX.
Houdini (SideFX): Displacement in Render-Netzwerk via Displacement-Shader-Node; adaptive Tessellation über vm_shadingquality.
Arnold (Autodesk): standard_surface-Shader mit separatem displacement_map-Node; unterstützt 32-bit Float Displacement und Vector Displacement.
Blender Cycles: Material-Node mit Displacement-Buchse; adaptive Subdivision in den Render-Einstellungen aktivierbar; kostenfrei.
Vergleich & Abgrenzung
| Anwendung | Empfohlene Methode |
|---|---|
| Charaktere in Nahaufnahme (VFX) | Displacement + Normal (Kombination) |
| Hintergrund-Assets | Normal Map (Performance) |
| Terrain (VFX) | Displacement (Silhouette wichtig) |
| Echtzeit Games | Normal Map (Leistung), Nanite für moderne Hardware |
| Architektur-Viz | Normal Map + leichtes Displacement für Beton/Stein |
Häufige Fragen (FAQ)
Warum kombiniert man Displacement und Normal Maps? Displacement Map verändert die große Geometrie (tiefe Falten, Poren-Relief); Normal Map fügt sehr feine Mikrodetails hinzu (Poren-Textur, Hautstruktur), für die Tessellation zu teuer wäre. Die Kombination ergibt maximalen Detail bei akzeptabler Renderzeit: Displacement für Makro-Details (> 0,5 mm), Normal Map für Mikro-Details (< 0,5 mm).
Was ist der Dicing-Fehler in Arnold? Der Dicing-Fehler (Dicing Rate) bestimmt, wie fein das Mesh für Displacement tesselliert wird. Kleinere Werte (z. B. 0,25) = feinere Tessellation = genauerer Displacement, aber höhere Speicher- und Renderkosten. Ein Wert von 1,0 bedeutet ca. 1 Pixel pro Tessellation-Triangle. Für Nahaufnahmen empfehlen sich 0,25–0,5; für Hintergrund-Objekte 1,0–2,0.
Verwandte Einträge
- Subsurface Scattering – Haut und organische Materialien
- Ray Tracing – physikalisch korrekte Beleuchtung
- Render Farm – verteiltes Rendering
Weiterführend
- Blinn, J.F. (1978). Simulation of Wrinkled Surfaces. SIGGRAPH 1978 Proceedings.
- Cook, R.L. (1984). Shade Trees. SIGGRAPH 1984 Proceedings.
- Pharr, M., Jakob, W. & Humphreys, G. (2023). Physically Based Rendering (4. Aufl.). MIT Press.
- Autodesk. (2023). Arnold Displacement Shading Reference.
