Displacementmapping

Aus DGL Wiki
Wechseln zu: Navigation, Suche

Displacementmapping ist keine reine Texturierungsmethode sondern eine Methode um Geometrie zu erstellen.


Die Displacementmap ist eine Textur welche eine Heightmap enthält. Die Höhenwerte dieser Hightmap werden benutzt um die tatsächliche Oberfläche des betreffenden Objekts zu verändern.

Folgenden Schritte sind dazu nötig:

1. Berechnen der Oberflächennormalen
Für jede Oberfläche die vom Displacementmapping betroffen sein wird, muss die Normale bestimmt und gespeichert werden.
2. Anpassen der Objektauflösung
Um Displacementmapping durchzuführen muss die betreffende Oberfläche des Objekts genau so viele Vertices besitzen wie die Displacementmap Pixel hat. Zu diesem Zweck wird das Objekt entsprechend häufig tesseliert.
3. Eigentliches Displacement
Nun wird für jeden Vertex die Position neu bestimmt. Und zwar wird aus der Displacementmap der Wert der Verschiebung ausgelesen, und dann die Position des Vertex entlang seiner Normale (siehe Schritt 1) geändert. Eventuell wird der Wert aus der Displacementmap noch mit einem Skalierungsfaktor multipliziert.
4. Neue Normalen und Texturkoordinaten
Für die neuen Vertices müssen nun noch die neue Normale und neue Texturkoordinaten berechnet werden.


Vorteile Nachteile
Automatische generierung komplexer Geometrie. Sehr hohe Vertexzahl -> bremst Szene sehr stark.
Möglichkeit sehr raue Oberflächen darzustellen bei denen Bumpmapping scheitert. Die Berechnung dauert zu lang um sie in jedem Frame durchzuführen. Will man das Ergebnis aber speichern benötigt man viel Platz.
Realistische Darstellung von Objektkanten, da die Geometrie tatsächlich geändert wird. Neuberechnung von Normalen und Texturkoordinaten nötig.
Als Shader umsetzbar.


Siehe Auch

Bumpmap