Tutorial
Dot3-Bumpmapping
unter Blitz3D
mit Hilfe der BSM_Renderer Funktionsbibliothek
Hallo zusammen. Dieses Tutorial soll ein paar Tipps geben, wie man Dot3-Bumpmapping mit Blitz3D richtig anwendet. Für dieses Tutorial wird der BSM_Renderer benötigt. Download unter www.selfmadegames.de . Die BSM-Bibliothek dient dabei lediglich zur Unterstützung.
Auch auf die Gefahr hin, erfahrene Programmierer, zu einem Stirnrunzeln zu veranlassen, kommt jetzt erstmal eine kurze Einführung.
Dot3-Mapping
basiert auf der Verwendung spezieller Texturen. Hier ein Beispiel einer normalen
Textur und der daraus erstellten Dot3-Bumpmap.
Erstellt
werden können diese Texturen mit Tools wie z.B. dem Nvidia-Plugin
für Photoshop. (siehe Screenshot) Dieses Tool gibts auch als eigenständiges Programm. Von ATI gibts ebenfalls Programme, um solche Texturen zu erstellen. |
![]() |
Geladen wird diese Textur wie folgt.
bumpmap = LoadTexture ( "bumptexture.jpg" ) TextureBlend bumpmap , 4 |
Ist die Textur in Blitz3D geladen und als Bumpmap deklariert, wird für
jedes Pixel errechnet, ob dieses Pixel beleuchtet wird oder nicht. Dies geschieht
anhand seiner Farbe, in Verbindung mit der Farbe des Untergrunds. Das kann
die Farbe des Objekts sein auf das die Textur gelegt wurde oder eine andere
Textur.
Hier
liegt die Bumpmap auf einer weissen Oberfläche.
|
![]() |
Und
hier liegt die Bumpmap auf einer violetten Oberfläche.
|
![]() |
Man erkennt sehr gut
wie sich die Richtung der Beleuchtung anhand der Farbe des Untergrunds ändert.
Um diesen Effekt gezielt zu steuern, dafür wird die BSM-Bibliothek
verwendet.
Dot3-Bumpmapping hat ein entscheidendes Manko. Jegliche Farbgebung des Objekts, auch die Beleuchtung durch Lichtquellen wird auf die Bumpmap verechnet und dadurch unwirksam. Wie man diese Funktionalität wiederherstellt, soll dieses Tutorial erklären.
Am Anfang war Dunkelheit. Und Blitz3D sprach " Es werde Licht". In diesem Fall ein weisses direktionales Licht, in Verbindung mit einer blaugrauen, ambienten Beleuchtung.
Jetzt wo wir was
sehen können erstellen wir ein beliebiges Objekt, und kopieren
es gleich noch.
|
![]() |
Das Original-Objekt
texturieren wird ganz normal mit einer Farbtextur.
|
![]() |
An dieser Stelle
kommt die BSM_Bibliothek zum Einsatz.
norm.tga
ist dabei eine spezielle Textur, die von der BSM-Blibliothek benötigt
wird. Sie liegt der der Bibliothek bei.
|
![]() |
Der Objekt-Kopie übergeben wir als nächstes eine Dot3-Textur als Layer 1.
|
![]() |
Jetzt übergeben
wir der Objekt-Kopie noch die normale Textur, die wir schon dem Original-Objekt
vergeben haben, als Layer 2
Bei diesem Objekt ist keine weitere Farbgebung bzw. Beleuchtung durch Blitz3D-Lichtquellen möglich. Dies erledigen wir mit dem Original-Objekt. |
![]() |
Das Kopie-Objekt
wird nun auf additives Blending geschaltet und
noch um ca. 0,5% vergrössert, um Artefakt-bildung zu vermeiden.
|
![]() |
Jetzt nur noch beide Objekte übereinander legen. Voila ein texturiertes, mit Bumpmapping versehenes Objekt. |
![]() |
Voll beleuchtbar und einfärbbar. Hier mit gelber Lichtquelle und rotem ambienten Licht. |
![]() |
In der Hauptschleife
wird dann
BSM_Update_All ( ) |
noch vor Renderworld () eingesetzt. Der BSM_Renderer sorgt dann für die notwendige Aktualisierung der BSM_Map, damit die Beleuchtungsrichtung der Bumpmap korrekt ist. Das funktioniert auch mit mehreren Lichtquellen. Genauere Infos stehen in der Anleitung der BSM Bibliothek.
Ich hoffe ich hab das jetzt, leicht verständlich rüber gebracht. Ansonsten seht euch auch mal die Demos im BSM_Renderer-Archiv an.
Bis demnächst
Euer Shodan