Displacementmapping
Aus DGL Wiki
Version vom 21. April 2006, 16:51 Uhr von Flash (Diskussion | Beiträge)
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 mulitpliziert.
- 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 seht rauhe 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. |