Diese Funktions-Bibliothek wurde erstellt, für Blitzbasic3D V1.90 und
höher. BSM steht für BumpmappingShadowMap. Sie
generiert spezielle Cubemaps um Dot3-Bumpmapping leichter zu handhaben.
Vorweg etwas zur Funktionsweise. Die Arbeitsweise der Bibliothek basiert auf
der Verwendung spezieller Farbverläufe. Siehe nächstes Beispiel:
Der Farbverlauf auf dieser Textur hat dieselben Farben und Ausrichtungen wie ein Dot3-Bumpmap. | Wenn dieser Verlauf, als unterhalb liegender Layer, mit einer Dot3-Textur kombiniert wird, erhält man folgendes Resultat. | ![]() |
Das Licht scheint von der Mitter der Textur auszugehen. Diesen Effekt macht
sich die Funktionsbibliothek zunutze.
Eine speziell erstellte Textur mit diesem Farbverlauf und Alpha-Kanal wird auf
eine grau gefärbte Kugel texturiert. dieses mittlere Grau (128,128,128)
lässt Dot3-Texturen komplett schwarz erscheinen.
Die Kugel wird umgedreht ( Flipmesh ) und eine Kamera wird in der Mitte plaziert.
Nun werden 6 Bilder gerendert. Eins für jede Grundrichtung.
Diese 6 Bilder werden an die Cubemap vergeben.
Diese Cubemap kann nun an jedes beliebige Objekt vergeben werden. Sie sollte als erster Layer vergeben werden. | ![]() |
Darüber wird nun die Dot3-Textur gelegt. | ![]() |
Als Ergebnis erhält man eine korrekt beleuchtete Bumpmap. |
Diese Funktionsbibliothek kann nun diese Cubemaps für Sie handhaben. Man
erstellt einfach per Befehl eine solche Cubemap und vergibt Lichtquellen. Die
Bibliothek überprüft die Beleuchtungswinkel und aktualisiert die Cubemaps
gegebenfalls.
Beschreibung: Initialisiert die BSM_Funktionen. Es muss eine dieser speziellen Verlaufs-Texturen vergeben werden, welche zum Erstellen der Cubemaps benutzt wird.
texturdatei:
|
Die spezielle Verlaufs-Textur. Eine befindet sich in diesem Archiv. |
Beschreibung: Übergibt die eigentliche Haupt-Kamera des Programms an die Bibliothek. Das kann wahlweise erfolgen. Vor Berechnen der Cubemaps muss die Haupt-Kamera versteckt, und nach dem Berechnen wieder sichtbar gemacht werden. Dies kann von der BSM-Bibliothek erledigt werden oder vom Hauptprogramm selbst.
kamera: |
Sollte die Haupt-Kamera des Programms sein |
Beschreibung: Erstellt eine BSM_Cubemap und gibt den Textur-Handle zurück. Die Textur kann so an weitere Objekte übergeben werden.
Objekt: |
Das Objekt, das die BSM-Cubemap erhält. Die Position und Ausrichtung des Objekts relativ zur Lichtquelle wird benötigt, um die BSM_Cubemap korrekt auszurichten. |
flag:
|
Optional. Wenn flag auf 1 gesetzt wird, wird die BSM-Cubemap beim Erstellen gleich an das Objekt übergeben. Sie können es auch selbst erledigen. Voreingestellt ist 0. |
layer: | Optional. Wird die BSM-Cubemap gleich mit diesem Befehl an das Objekt übergeben, wird dieser Layer verwendet. Voreingestellt ist 0 |
Beschreibung: Erstellt eine Specular_Cubemap und gibt den Textur-Handle zurück. Die Textur kann so an weitere Objekte übergeben werden.
Objekt: |
Das Objekt, das die Specular-Cubemap erhält. Die Position und Ausrichtung des Objekts relativ zur Lichtquelle wird benötigt, um die Specular_Cubemap korrekt auszurichten. |
grösse:
|
Optional. Legt die Texturgrösse der Specular-Cubemap fest. Voreingestellt ist 256x256 Pixel. |
flag: | Optional. Wenn flag auf 1 gesetzt wird, wird die Specular-Cubemap beim Erstellen gleich an das Objekt übergeben. Sie können es auch selbst erledigen. Voreingestellt ist 0. |
layer: |
Optional. Wird die Specular-Cubemap gleich mit diesem Befehl an das Objekt übergeben, wird dieser Layer verwendet. Voreingestellt ist 0 |
Beschreibung: Löscht eine vorher erstellte BSM-Cubemap oder Specular-Cubemap. Wurde die Cubemap an ein Objekt vergeben, bleibt sie auf diesem erhalten. Man kann aber nicht mehr auf sie zugreifen.
handle: |
Ein gültiges BSM-Cubemap oder Specular-Cubemap handle. |
Beschreibung:Übergibt eine Lichtquelle für diese BSM-Cubemap. Die relative Position und Ausrichtung zwischen dieser Lichtquelle und dem Objekt, welches für diese BSM-Cubemap übergeben wurde, wird benutzt um die BSM-Cubemap auszurichten.
handle: |
Ein gültiges BSM-Cubemap oder Specular-Cubemap handle. |
licht: | Ein Objekt, das die Lichtquelle darstellt. Es kann eine Blitz3D-Lichtquelle sein. Muss aber nicht. |
nummer: | Die Nummer der Lichtquelle zw. 1 und max. Anzahl der Lichtquellen pro BSM-Cubemap. Die max. Anzahl ist in der Konstante "bsm_lights"festgelegt. Voreingestellt ist 8. |
typ: |
Optional. Typ der Lichtquelle. 1= paralleles Licht. 2= punktförmige Lichtquelle. Voreingestellt ist 2 |
helligkeit#: | Optional. Legt die Intensität der Lichtquelle zw. 0 (0%) und 1 (100%) fest. Voreingestellt ist 1 |
Beschreibung: Legt die Stärke des ambienten Lichts für diese BSM-Cubemap fest. Ein Wert grösser 0 bewirkt, das der Hintergrund der BSM-Cubemap ins Blaue verfärbt wird, was wiederum zu einer Beleuchtung der Bumpmap entlang des Z-Achsen Vektors, ausserhalb des von den Lichtquellen beeinflussten Bereichs, führt. Leider kann hier keine konkrete Farbe angegeben werden, sondern nur ein Helligkeitswert.
handle: | Ein gültiges BSM-Cubemap handle. |
ambient#: |
Wert zw. 0 ( kein ambientes Licht) und 1 ( volle abmiente Beleuchtung) |
Beschreibung: Das Prinzip der BSM-Cubemaps hat ein kleine Einschränkung.
Wenn die BSM-Cubemap und die Dot3-Textur nicht dieselbe Ausrichtung haben, sieht
das Endergebnis etwas merkwürdig aus.
![]() |
Bei dieser Kugel haben die BSM-Cubemap und die Dot3-Textur dieselbe Ausrichtung. | ![]() |
Hier wurde die Dot3-Texur um 180 Grad gedreht. Die Kugel und die Textur scheinen jetzt ihr Licht aus verschiedenen Richtungen zu erhalten. |
Die Bibliothek ist in der Lage, Differenzen in der Z-Ausrichtung zw. BSM-Cubemap und Objekt zu kompensieren, allerdings nicht, wenn die Dot3-Textur selbst gedreht wurde. Für den Fall kann man einen Offset-Winkel festlegen, der die Differenz ausgleicht.
handle: | Ein gültiges BSM-Cubemap handle. |
winkel#: |
Winkel zw. 0 und 360 Grad. Für das obige Beispiel müsste mit BSM_Z_Offset ein Winkel von 180 Grad übergeben werden. |
Beschreibung: Legt die minimale Winkelabweichung fest. Wird die Differenz zw. dem bisherige relativen Winkel, zw. Lichtqellen und Objekt, und aktuellem Winkel grösser als die min. Winkelabweichung, wird die BSM-Cubemap aktualisiert. Dies spart Rechenzeit ein, da die Cubemap nun nicht unbedingt bei jedem Frame neu gerendert wird. Voreingestellt ist 1 Grad.
handle: | Ein gültiges BSM-Cubemap oder Specular-Cubemap handle. |
winkel#: |
Winkel zw. 0 und 360 Grad. |
Beschreibung: Legt fest, ob die BSM-Cubemap automatisch aktualisert wird oder nicht. Ist 0 eingestellt muss die BSM-Cubemap manuell aktualisiert werden. Voreingestellt, beim Erstellen der BSM-Cubemap, ist 1.
handle: |
Ein gültiges BSM-Cubemap oder Specular-Cubemap handle. |
flag: | Aktiviert/Deaktiviert automatisches Aktualisieren für diese BSM-Cubemap. |
Beschreibung:Übergibt eine Textur für das Glanzlicht für eine bestimmte Lichtquelle für diese Specular-Cubemap. Die verwendete Textur hat sowohl Auswirkungen auf das Aussehen des Glanzlichts, als auch auf das Erscheinungsbild der Oberfläche, auf der das Glanzlicht abgebildet wird.
handle: |
Ein gültiges Specular-Cubemap handle. |
lichtnummer: | Nummer der Lichtquelle die durch die Textur auf der Cubemap dargestellt wird |
textur: | Ein gültiges Textur-Handle einer Textur die geladen oder erstellt wurde |
Beschreibung:Legt die Farbe des Glanzlichts für eine bestimmte Lichtquelle für diese Specular-Cubemap fest.
handle: |
Ein gültiges Specular-Cubemap handle. |
lichtnummer: | Nummer der Lichtquelle deren Farbe geändert wird |
r,g,b: | Rot- , Grün- und Blau-Anteil der Farbe zw. 0 und 255 |
Beschreibung:Legt die Grösse des Glanzlichts für eine bestimmte Lichtquelle für diese Specular-Cubemap fest.
handle: |
Ein gültiges Specular-Cubemap handle. |
lichtnummer: | Nummer der Lichtquelle deren Grösse geändert wird |
x# , y#: | Die Grösse des Glanzlichts. |
Beschreibung: Legt fest, wieviele Cubemaps , mit BSM_Update_All ( ) , maximal pro Aufruf ( pro Frame oder Schleifendurchlauf ) aktualisiert werden. Voreingestellt ist 0, das heisst alle aktiven Cubemaps, für die auch automatisches Aktualisieren aktiviert ist, werden überprüft.
anzahl: |
Die Anzahl an BSM-Cubemaps und Specular-Cubemaps, die maximal pro Frame aktualisiert werden sollen. |
Beschreibung: Aktualisiert diese BSM-Cubemap. Winkelabweichungen, die mit BSM_Set_Angle festgelegt wurden, werden ignoriert. Sehr nützlich, wenn Objekt und Lichtquellen ihre Position und Ausrichtung während des Programmablaufs nicht ändern.
handle: |
Ein gültiges BSM-Cubemap oder Specular-Cubemap handle. |
flag: | Optional (1/ 0). Aktiviert/Deaktiviert, ob die Hauptkamera, während der Aktualisierung, von der Bibliothek versteckt wird oder nicht. Voreingestellt ist 0. |
Beschreibung: Aktualisiert alle BSM-Cubemaps, für die automatische Aktualisierung festgelegt wurde. Winkelabweichungen, die mit BSM_Set_Angle festgelegt wurden, werden beachtet. Der Befehl sollte in der Hauptschleife benutzt werden bevor Renderworld() augerufen wird. Wenn der BSM_Debugger aktiviert ist, gibt dieser Befehl zurück, wieviele BSM_Cubemaps bei diesem Aufruf aktualisiert wurden.
handle: |
Ein gültiges BSM-Cubemap oder Specular-Cubemap handle. |
flag: | Optional (1/ 0). Aktiviert/Deaktiviert, ob die Hauptkamera, während der Aktualisierung, von der Bibliothek versteckt wird oder nicht. Voreingestellt ist 0. |
Beschreibung: Löscht alle mit BSM erstellte Cubemaps und Hilfsobjekte
und gibt den Speicher wieder frei.
Hinweis: BSM-Cubemaps oder Specular-Cubemaps welche an Objekte vergeben
wurden, verbleiben auf diesen, können aber nicht mehr geändert werden.
kleiner Tipp: Wenn Sie eine Szene generieren, die sich, inklusive aller
Lichter, nach der Erstellung nicht mehr ändert, können Sie nach dem
Erstellen und Aktualisieren der BSM-Cubemaps, BSM_End() aufrufen. Die BSM-Cubemaps
verbleiben auf den Objekten und sie sparen Rechenleistung und Speicher.
Beschreibung: BSM nutzt eine oder mehrere texturierte Kugeln und eine eigene Kamera um die BSM-Cubemaps zu erstellen. Diese müssen natürlich irgendwo plaziert werden. In diesem Bereich sollten sich keine anderen Objekte befinden. Voreingestellt sind die Koordinaten 0,1000000,0
x , y , z |
Position, wo die BSM-Hilfsobjekte plaziert werden sollen. |
Beschreibung:Aktiviert den BSM internen Debugger. Er gibt detailierte Fehlermeldungen zurück.
flag: |
0 = Debugger wird deaktiviert. |
Beschreibung:Erstellt eine Textur mit einem ringförmigen Wellenmuster und gibt den Textur-Handle zurück. Alle Parameter sind optional. Ohne Parameter wird ein normaler verwaschener Fleck erzeugt, der als Glanzlicht geeignet ist. Hier ein paar Parameter-Beispiele.
bsm_make_specular()
|
![]() |
bsm_make_specular(128,9,1,0.5,1,0.25,1)
|
![]() |
bsm_make_specular(128,9,0,0,1,0,1)
|
![]() |
bsm_make_specular(128,9,2,0,0.5,0,1)
|
![]() |
grösse: |
Texturgrösse wie zB 64,128 oder 256 Pixel. Voreingestellt ist 256 |
flag: | Alle Standard Blitz3D Texturflags. Voreingestellt ist 1+8 |
modus: | Art der Wellenform 0= Sinus, 1= Dreieck, 2= Rechteck. Voreingestellt ist 0. |
start#: |
Startwert der Welle. Voreingestellt ist 0 |
frequenz#: | Anzahl der Wellen, die dargestellt wird. Voreingestellt ist 0.5 |
min#: |
minimale Helligkeit des Wellentals. Voreingestellt ist 0 |
max#: | maximale Helligkeit des Wellenbergs. Voreingestellt ist 1 |
Beschreibung: Konvertiert eine Dot3-Bumpmap in eine spezielle Dot3-Bumpmap, die für Gloss-Mapping unter Zuhilfenahme von Specular-Cubemaps geeignet ist.
ursprüngliche Dot3-Textur
|
![]() |
Daraus errechnete Gloss-Textur
|
![]() |
textur: |
die Textur, die konvertiert werden soll |
modus: | Optional. Legt die Berechnungsqualität fest. 1 erzeugt bessere Ergebnisse, dauert aber länger. Voreingestellt ist 1 |
new: | Optional. Wird new auf 1 gesetzt, wird eine neue Textur erzeugt und deren Handle zurück gegeben. |
flag: |
Optional. Alle Standard Blitz3D Texturflags.Wird benutzt, wenn new auf 1 gesetzt wird. Voreingestellt ist 1+8 |
Beschreibung: Erzeugt eine 1 Pixel grosse Textur, die entsprechend den
RGB-Werten eingefärbt wird und gibt das Texturhandle zurück.
Diese Texturen können benutzt werden, um farbige Beleuchtung zu simulieren,
wo keine ist, bzw. keine dargestellt werden kann. zB bei Dot3-Bumpmaps.
r,g,b: |
Rot,Grün und Blau Komponenten der Farbe, welche die Textur haben soll |
flag: |
Optional. Alle Standard Blitz3D Texturflags. Voreingestellt ist 1 |
Beschreibung: Ändert die Farbe der Textur, ohne sie neu zu erstellen
textur: |
Texturhandle einer Textur, die zuvor mit BSM_Create_ColorTextur erstellt wurde. |
r,g,b: |
Rot,Grün und Blau Komponenten der Farbe, welche die Textur haben soll |
Beschreibung: Löscht eine Textur, die zuvor mit BSM_Create_ColorTextur
erstellt wurde.
textur: |
Texturhandle einer Textur, die zuvor mit BSM_Create_ColorTextur erstellt wurde. |
Diese Funktionsbibliothek ist Freeware. Die Nutzung erfolgt auf eigene Gefahr. Es wird keine Haftung für event. Schäden oder Datenverluste übernommen. Die Bibliothek kann in eigenen kommerziellen und nicht-kommerziellen Projekten verwendet werden. Ein Eintrag in den Credits des Projekts wäre schön, ist aber nicht zwingend notwendig. Es steht jedem frei diese Bibliothek als Freeware weiter zu verbreiten. Es ist nicht erlaubt diese Bibliothek zu verkaufen oder innerhalb einer käuflich zu erwerbenden Software-Kollektion zu verbreiten. Es ist ebenfalls nicht erlaubt die Bibliothek oder den Inhalt des Zip-Archivs zu ändern, und diese geänderte Fassung zum Download anzubieten. Es darf nur das unveränderte Original-Archiv zum freien Download angeboten werden. Geänderte Versionen werden nur von mir veröffentlicht.
Falls jemand Fehler findet oder Vorschläge für Verbesserung hat, einfach eine Email an mich schicken. ( siehe unten)
Viel Spass damit
Shodan