Displacementmapping: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K
K
 
Zeile 10: Zeile 10:
 
;2. Anpassen der Objektauflösung: Um Displacementmapping durchzuführen muss die betreffende Oberfläche des Objekts genau so viele [[Vertex|Vertices]] besitzen wie die Displacementmap Pixel hat. Zu diesem Zweck wird das Objekt entsprechend häufig [[Tesselierung|tesseliert]].
 
;2. Anpassen der Objektauflösung: Um Displacementmapping durchzuführen muss die betreffende Oberfläche des Objekts genau so viele [[Vertex|Vertices]] besitzen wie die Displacementmap Pixel hat. Zu diesem Zweck wird das Objekt entsprechend häufig [[Tesselierung|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.
+
;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.
 
;4. Neue Normalen und Texturkoordinaten: Für die neuen Vertices müssen nun noch die neue Normale und neue Texturkoordinaten berechnet werden.
Zeile 22: Zeile 22:
 
|Sehr hohe Vertexzahl -> bremst Szene sehr stark.
 
|Sehr hohe Vertexzahl -> bremst Szene sehr stark.
 
|-
 
|-
|Möglichkeit seht rauhe Oberflächen darzustellen bei denen [[Bumpmapping]] scheitert.
+
|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.
 
|Die Berechnung dauert zu lang um sie in jedem Frame durchzuführen. Will man das Ergebnis aber speichern benötigt man viel Platz.
 
|-
 
|-

Aktuelle Version vom 16. September 2008, 19:33 Uhr

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