Displacement Mapping

Van Wikipedia, de gratis encyclopedie

Displacement Mapping

View-dependent Displacement Mapping (VDM) bezeichnet eine Technik in der Computergrafik, die angewandt wird, um einer Oberfläche eines dreidimensionalen Objektes eine höhere Detailtreue zu geben und damit eine realistischere Darstellung zu erreichen.

Grundlagen[Bearbeiten | Quelltext bearbeiten]

Für dieses Aussehen wurde eine Schachbretttextur als Displacement Map auf eine Kugel gelegt

3D-Objekte in der Computergrafik bestehen zunächst einmal aus einem Gitternetz bzw. Polygonen, über die später eine sogenannte Textur (beispielsweise das Bild einer Mauer) gelegt wird. Man kann sich das Texturieren, also das Anbringen einer Textur so vorstellen, als ob auf das Drahtgittermodell eines darzustellenden Objektes dessen Oberfläche aufgeklebt würde. Neben den eigentlichen Texturdaten, die meist die letztendliche farbliche Ausgestaltung der Oberfläche beinhalten, werden gelegentlich auch andere Arten von Texturdaten (die beispielsweise die Oberflächenbeschaffenheit beschreiben) als "Textur" bezeichnet.

Anwendung[Bearbeiten | Quelltext bearbeiten]

Gemeinsam mit der eigentlichen Textur des Objektes wird – meist aus dieser – eine sogenannte Height-map (eng. für Höhenkarte, Relief) erzeugt. Dies ist ein Bild, in dem meist Graustufen zur Angabe von Höheninformationen verwendet werden. Aus diesen lässt sich so ein Querschnitt durch die zu erstellende Oberfläche und damit ein Relief erzeugen.

Die Punkte des Gitternetzes (Vertices) werden entsprechend diesen Texturinformationen entlang ihrer Normalen, das heißt senkrecht zur Oberfläche, verschoben. So ist es beispielsweise möglich, ein Höhenrelief durch das Anwenden einer Displacement Map auf eine ebene (planare) Oberfläche zu übertragen und dieser damit eine raue Struktur zu verleihen. Zusätzlich zur Verschiebung kann in Abhängigkeit von der Dichte des Drahtgitters dessen Verfeinerung notwendig werden. Man spricht dann von Tesselation.

Beispiel[Bearbeiten | Quelltext bearbeiten]

Abbildung 1: Textur für eine Ziegelsteinmauer
Abbildung 2: Height-map

Im Beispiel soll einer Mauer mittels Displacement Mapping eine Oberfläche verliehen werden, auf der jeder einzelne Ziegelstein im Verhältnis zur Fuge ein wenig hervorragt. Als Vorlage verwendet man eine entsprechende Textur (Abbildung 1). Diese wird zum Erstellen der Height-map (Abbildung 2) verwendet.

  1. Aus der Height-map werden die Höheninformationen der Oberfläche gewonnen und
  2. auf die Oberfläche projiziert. Dabei wird es notwendig, das Gitternetz der Oberfläche zu verfeinern, um die neue Struktur darstellen zu können.
  3. Die Punkte (Vertices) des neuen Gitternetzes werden entlang ihrer Normalen um den in den Höheninformationen angegebenen Abstand verschoben.
  4. Die resultierende dreidimensionale Struktur bildet wie gewünscht auf der planaren Oberfläche die vorspringenden Ziegelsteine nach.

Vorteile gegenüber anderen Verfahren[Bearbeiten | Quelltext bearbeiten]

Im Gegensatz zum Normal Mapping und dem Bumpmapping hat das Displacement Mapping den Vorteil, dass die Geometrie des Objektes tatsächlich verändert wird. Das heißt, betrachtet man eine Oberfläche aus der Nähe in einem flachen Winkel, so bleibt ihre Struktur trotzdem sichtbar. Im Gegensatz dazu erscheinen die Oberflächen nach anderen Verfahren absolut planar, sobald man sie aus einem steilen Winkel betrachtet. Außerdem gehen dadurch die Effekte, die durch bloße Farbänderungen eine Struktur simulieren, verloren. Unter dem Einfluss von Lichtquellen und Schatten wirken mit dem Displacement Mapping erzeugte Strukturen realistischer, da sich die veränderte Geometrie auch auf die Beleuchtung auswirkt (beispielsweise beim Schattenwurf einer aus flachem Winkel betrachteten Oberfläche).

Weblinks[Bearbeiten | Quelltext bearbeiten]

  • Demo-Applet (erfordert entsprechende Hardwareunterstützung der Grafikkarte) (Offline)