http://www.haradirki.de

Bump Mapping :

Zuerst stellt sich wohl die Frage, was "Bump Mapping" überhaupt ist. Bump Mapping ist eine Technik, bei der auf den Brush nicht nur die Textur gelegt wird, sondern eine Normalmap, welche der Textur Höhen und Tiefen verleiht. Damit ist es also möglich, z.B. eine Steinwand plastischer wirken zu lassen.

Nun wollen wir anfangen. Natürlich benötigen wir zuerst eine Textur. Dazu kannst du eine Textur aus RtCW nehmen, oder eine eigene verwenden. Ich verwende diese Textur:

eine normale Steinwand

So, wie bekommt man nun diese Normalmap hin? Oder woher kommt sie? Ganz einfach, diese kann man mittels Photoshop selbst erstellen. Dazu benötigst du eine Textur, die möglichst dunkel ist und einen Filter, der aus dem Hause NVidia kommt. Wenn du keine NVidia-Grafikkarte dein Eigen nennt, funktioniert dieser Filter leider nicht. Aber dazu kommen wir später. Nun lädst du dir zuerst besagten Filter herunter. Diesen findest du auf der Seite unter "Attatchments". Diese Datei kopierst du dann in den Ordner "Photoshop X/Zusatzmodule/Effekte/". Wobei natürlich "Photoshop X" dein Photoshop-Ordner ist. Nun startest du Photoshop und lädst die Textur. Nun klickst du auf "Filter" und ganz unten auf "nvtools". Nun öffnet sich folgendes Fenster:

Kommt bei dir folgender Fehler:
"Image width or height is not power of 2"?

Dann hat deine Textur leider die falschen Abmessungen. Möglich sind alle Vielfache von 2 - also 256x512, 512x512, 1024x1024 usw.

der Normalmap-Filter

 

Oben links kannst du schon eine kleine Vorschau unserer Textur ansehen. Bei "Height Generation" stehen folgende Filter zur Auswahl 3 x 3 bis zu 5 x 5. Wir benutzen 5 x 5, da es die beste und feinste Einstellung ist - schliesslich werden wir hinterher mit einer schöneren Bummap belohnt.
Unter "Height Source" versteckt sich lediglich die Quelle, von wo aus die Normalmap-Textur erechnet wird. Hätten wir z.B. einen Alpha-Kanal, der Höhen und Tiefen angibt, könnten wir diesen benutzen. Leider haben wir diese Auswahl nicht, also belassen wir es bei Average RGB. Das bedeutet, die Normalmap wird aus dem ganz normalen Bild berechnet. Nun drückst du auf "OK" und schon wird die Normalmap berechnet:

die Normalmap-Textur

Jetzt speicherst du die Normalmap unter einem anderen Namen ab, da sonst unsere alte Textur überschrieben wird. Und da wir beide Texturen brauchen, wäre das nicht gut. Am besten, du speicherst die normalmap als *.tga mit 32 Bit Farbtiefe. Nun stellt sich natürlich die Frage, was zu tun ist, wenn man keine NVidia-Karte hat. Nun gibt es 2 Möglichkeiten, zum einen kann man fragen, ob es von seinem Grafikkartenhersteller auch einen solchen Filter gibt - oder man macht sich diese Normalmap einfach selbst. Wenn du die Normalmap in Photoshop öffnest, wirst du feststellen, dass der Blaue Kanal komplett weiss ist.Mit etwas Übung lasst sich das auch per Hand machen.

Nun benötigen wir noch den Shader:

textures/bump-test/bricka
{
qer_editorimage textures/bump-test/brick.tga
q3map_normalimage textures/bump-test/brick_bump.tga
{
map $lightmap
rgbGen identity
}
{
map textures/bump-test/brick.tga
blendFunc GL_DST_COLOR GL_ZERO
rgbgen identity
}
}

Nun speicherst du den Shader unter dem Namen "Bump" im Verzeichnis "Scripts" ab. Nun öffnest du noch die Datei "shaderlist.txt" und trägst ganz unten "bump" ein. Also ohne die Endung ".shader". Nun kannst du die Textur benutzen. Natürlich musst du jetzt die Q3map2 zum compilieren benutzen, da die normale Q3map.exe diesen Feature nicht besitzt. Um zu sehen, ob die Sache letztlich funktioniert, musst du die Map mit dem Befehl

/devmap deinemap ENTER
/r_lightmap 1 ENTER

eingeben. Wenn dir der Schatten zu verwaschen oder zu undeutlich erscheint, kannst du die Map mit einem niedrigeren Lightmapscale berechnen lassen, dann werden die Schatten feiner berechnet. Wenn dir das aber zu lange dauert, kannst du einfach den Brush, auf dem die Bump-Textur liegt zu einer func_group machen und bei den Entities folgenden Key eingeben:

Key: "lightmapscale"
Value: "0.1"

 

zurück zum Abschnitt Q3Map2

zurück zur Hauptseite