|
Verwendete Beispielmap: Mike24.map
Shaders sind Textfiles, die einer Textur bestimmte Eigenschaften durch
verschiedene Befehle zuweisen. Shaders sind ein sehr
komplexes Thema, deshalb muss ich an dieser Stelle auf die hervorragende
Dokumentation von ID hinweisen, da ich in dies-
em Kapitel nur einige Grundlagen erklären kann. Diese Dokumentation
findet ihr zb. auf http://www.qeradiant.com
.
In dieser Dokumentation wird euch alles über Shaders von A-Z erklärt
(engl. Sprache Voraussetzung !).
In den nun folgenden Erklärungen habe ich eine neue Testmap erstellt
(eine kleine, simple Map), um euch die Verwendung
der Shaders zu zeigen. In der Offline-Version dieses Tutorials
findet ihr den Ordner SHADER, in dem ALLE wichtigen
Texturen, Scripte etc. etc enthalten sind. In der Online-Version leider
nicht.
Hier zunächst eine kleine Übersicht der verschiedenen Abschnitte:
Boden mit Schrittgeräuschen
und einen einfachen Himmel:
Einen Wasserfall erstellen:
Eine Skybox erstellen:
Eine durchsichtige Textur (zb.
Spinnwebe) erstellen:
Boden mit Schrittgeräuschen
und einen einfachen Himmel:
Shaders haben als Dateiendung stets *.shader . Unseren Shader, den wir
nun erstellen wollen, nennen wir zb. tutorial.shader
(wie schon erwähnt, findet ihr dieses File "tutorial.shader" im
Ordner SHADER, der in der Offline-Version enthalten ist).
Nun leisten wir erstmal etwas Vorarbeit, damit wir endgültig in
die Materie einsteigen können. Macht zunächst mal eine
Sicherheitskopie von der Datei: ....baseq3/scripts/shaderlist.txt
. Kopiert diese Datei in einem anderen Ordner, so das ihr
jederzeit den "Urzustand" wieder herstellen könnt. Danach öffnet
ihr die Datei ....baseq3/scripts/shaderlist.txt in einem Text-
editor. In dieser Liste sind alle Shaders von ID (Wasser, Himmerl,
Lava etc.) eingetragen. Fügt ganz am Schluss den Datei-
namen eures Shaders ein, allerdings OHNE
die Dateiendung ".shader". In unserem Fall sieht das dann so aus:
..
...
....
organics
sfx
skin
sky
tutorial <------ Diesen Eintrag
hinzufügen
Speichert diese Liste dann wieder im selben Ordner mit dem selben Dateinamen
ab. Ok, soweit wäre das dann erledigt, jetzt
brauchen wir aber noch zwei Texturen, eine für den Boden und eine
für unseren Himmel, die wir mit diesem Shader beschrei-
ben wollen. Diese Texturen (und noch eine andere) findet ihr im textures/tutorial
Ordner. Die andere Texture, die dort noch
enthalten ist, wird später für die Spinnweben benötigt.
Kopiert deshalb einfach den kompletten Ordner mit den Texturen in
euren baseq3/textures - Ordner, zum besseren Verständnis hier
die genaue Ordnerstruktur:
baseq3/
|
|_____textures/
|
|______tutorial/
|
|______boden.jpg
decke.jpg
spinnwebe.tga (wird später für die durchsichtigen
Texturen benötigt)
Existiert der Ordner "textures" noch nicht, so müsst ihr ihn extra
erzeugen.
Übrigens, diese Texturen könnt ihr natürlich wesentlich
besser gestalten , meine
Beipiele dienen nur zur Demonstration.
Die mitgelieferte Datei "tutorial.shader" (findet ihr in shader/scripts/
) kopiert ihr dann noch in den Ordner baseq3/scripts.
Öffnet nun die Datei "tutorial.shader" im Texteditor und betrachtet
euch folgenden Abschnitt:
textures/tutorial/decke
{
//
// Nachthimmel shader
//
surfaceparm noimpact
surfaceparm nomarks
surfaceparm sky
q3map_surfacelight 300
q3map_lightsubdivide 512
q3map_sun 1 1 1 32 45 90
{
map textures/tutorial/decke.jpg
}
}
OK, was bedeutet das jetzt ? Ich werde euch nun im folgenden Abschnitt
Zeile für Zeile aufschlüsseln:
textures/tutorial/decke
Das ist der Name für euren Shader. Der Name darf laut der Dokumentation
63 Zeichen lang sein. Vermeidet allerdings
Sonderzeichen/Leerzeichen, damit ihr später beim Compilieren keine
Probleme bekommt.
{}
Die Klammern sind wie in den diversen Programmiersprachen (Pascal etc.)
zu betrachten. Damit werden bestimmte Ab-
schnitte im Shader zusammengefasst.
// Nachthimmel shader
Dies ist nur ein Kommentar. Ihr könnt dort beliebige Zeichen verwenden
und soviele Kommentare benutzen, wie ihr wollt.
Einem Kommentar geht aber stehts ein //
vorraus.
surfaceparm noimpact
surfaceparm nomarks
Der Befehl "surfaceparm" beschreibt eine Eigenschaft für unsere
Decke, in diesem Falle bedeutet "noimpact" keinen Einschlag und bei "nomarks"
werden keine Spuren im Himmel hinterlassen.
surfaceparm sky
q3map_surfacelight 300
q3map_lightsubdivide 512
q3map_sun 1 1 1 32 45 90
Den Teil von der Zeile "surfaceparm sky"
bis "q3map_sun 1 1 1 32 45 90" habe ich direkt
von dem Shader "sky.shader" und der darin enthalten Skybox "xblacksky"
übernommen. Dieser Teil beschreibt den Himmel, der eine gewisse Menge
Licht aus-
strahlt. Mit diesen 4 Zeilen wird also dieses "Abstrahlen des Lichts"
gesteuert. Lässt man diese 4 Zeilen hingegen weg, ist es in unserer
Map stockdunkel, da ja sonst keine einzige Lichtquelle in der Map (ausser
in den Räumen) vorhanden ist.
Mit q3map_surfacelight gebt
ihr dabei die Stärke des Lichts an. Der Befehl q3map_lightsubdivide
definiert,
wie groß oder
klein die "Subdivisions" auf einer texturierten
Oberfläche sind. Dabei sollten für Skyboxen die Werte 256 oder
512 benutzt
werden. Und q3map_sun
beschreibt
die Farbe des Lichts, den Einfall und die Intensität. Die genaue Syntax
lautet dabei: q3map_sun
<red> <green> <blue> <intensity> <degrees> <elevation>
<red> <green> <blue>
Beschreibt die Farbe, der Bereich geht von 0.0
bis 1.0.
<intensity>
Intensität, 100 wäre dabei eine sehr
hell strahlende Sonne.
<degrees>
Der Winkel des Lichteinfalls.
<elevation>
Die Höhe der Sonne am Horizont. Ein Wert
von 90 wäre dann ungefähr "Mittagszeit".
map textures/tutorial/decke.jpg
Dieser Befehl zeigt den Pfad an, wo die Textur dann schließlich
zu finden ist.
So, das war der erste Teil, gleich anschließend geht es mit den
Schrittgeräuschen weiter:
textures/tutorial/boden
{
//
// Metallboden shader
//
surfaceparm
metalsteps
// für einen metallischen Sound
{
map textures/tutorial/boden.jpg
}
}
Die Zeile "surfaceparm metalsteps" sorgt dafür, das unser Boden
einen metallischen Klang bekommt.
Achtung:
Nehmt ihr eine Änderung an dem Shader vor,
dann müsst ihre die Map danach nochmal neu compilieren, sonst werden
die
Änderungen nicht übernommen.
Shaders sind wirklich sehr komplex und ich empfehle, das ihr euch das
Q3AShader_manual.doc aus dem Internet besorgt.
Diese Dokumentation ist zwar auf Englisch, es werden aber sämtliche
Parameter, die man hier einsetzen kann, beschrieben.
Da wir jetzt schonmal wissen, wie man einen ganz einfachen Shader erzeugt,
kann man sich mit Hilfe dieser Dokumentation
neue Parameter anschauen und ausprobieren. Ich kann leider nicht die
gesamte Dokumentation mit allen Parametern in
diesem Tutor beschreiben, weil es den Rahmen hier sprengen würde.....
Und noch ein Tipp. Es hat sich auch bewährt, von einem bestehenden
ID-Shader die entsprechenden Abschnitte in den eigen-
en Shader zu übernehmen. So kann man sich viel Arbeit sparen.
Einen Wasserfall erstellen:
In diesem Abschnitt geht es diesmal um einen Shader für einen Wasserfall.
Weiter oben haben wir ja schon ein paar Grund-
lagen zu den Shaders kennengelernt, nun wird es aber etwas komplexer.
Zunächst möchte ich mich bei Todd 'Mr.CleaN' Rose
(Autor der Map: Kihaku) bedanken, da ich mir von seinem Shader einige
Anregungen geholt habe.
Ok, wir legen los und öffnen den Shader "tutorial.shader" aus dem
Scripts-Ordner. Scrollt nun zu folgendem Abschnitt:
textures/tutorial/wasserfall
{
qer_editorimage textures/liquids/pool3d_3c2.tga
q3map_globaltexture
surfaceparm nolightmap
surfaceparm trans
//surfaceparm nonsolid
surfaceparm water
surfaceparm noimpact
tessSize 64
cull disable
deformVertexes wave 64 triangle 1 3 .1
.8
{
map textures/liquids/pool3d_5c2.tga
blendfunc GL_DST_COLOR GL_SRC_COLOR
tcMod scale 1.5 2.5
tcMod turb .1 .08 .5 .1
tcMod scroll 2 -.25
}
{
map textures/liquids/pool3d_3c2.tga
blendfunc GL_DST_COLOR GL_ONE
tcMod scale 1.5 .5
tcMod turb .1 .075 .5 .05
tcMod scroll 2. .1
}
}
Kommen wir zur Erklärung der einzelnen Befehle.
textures/tutorial/wasserfall
Das ist der Name für euren Shader. Der Name darf laut der Dokumentation
63 Zeichen lang sein. Vermeidet allerdings
Sonderzeichen/Leerzeichen, damit ihr später beim Compilieren keine
Probleme bekommt.
qer_editorimage textures/liquids/pool3d_3c2.tga
Dieser Parameter erzeugt den Shader-Namen im Speicher, aber im Editor
wird das TGA-Bild, das im Befehl spezifiziert wurde, dargestellt. Der Editor
benutzt die Größenverhältnisse des TGA-Bildes. Wird das
TGA-Bild von einem anderen
Shader repräsentiert, dann wird das Bild verkleinert/vergrößert,
um die selbe Größe zu erhalten.
q3map_globaltexture
Dieser Parameter muss benutzt werden, wenn im Shader auch der Parameter
"tcMod scale" vor kommt.
surfaceparm nolightmap
Die Oberfläche hat keine lightmap - Phase. Die Welt wird
nicht von der umgebenden Beleuchtung beeinflusst. Es erfordert
kein Hinzufügen eines rgbGen Parameters.
surfaceparm trans
Die Oberfläche ist transparent.
surfaceparm water
Die Oberfläche besteht aus Wasser.
surfaceparm noimpact
Es werden keine Einschläge auf der Oberfläche angezeigt.
tessSize 64
Damit wird die Mosaik-Größe der Oberfläche angegeben,
die später von der Engine berechnet wird.
cull disable
Beide Seiten werden im Spiel gezeigt. Sehr nützlich für die
Herstellung von Schalttafeln oder Schranken , die keine Tiefe, wie z.B.
Gitter, Bildschirme, Metall-Draht-Zäune etc. und für Flüssigkeiten
haben , in welche der Spieler sehen kann. Kann auch
für Energie-Felder, Sprites und Waffen-Effekte (z.B. Plasma)
benutzt werden.
deformVertexes wave 64 triangle 1 3 .1 .8
Speziell für Wasser geeigneter Parameter. Damit wird die zufällige
Bewegung dargestellt.
Die Syntax lautet hier: deformVertexes wave <div> <func> <base>
<amplitude> <phase> <freq>
Für <func> kann man auch: sin, triangle, square, sawtooth oder
inversesawtooth einsetzen.
map textures/liquids/pool3d_3c2.tga
Spezifiziert den Pfad zur TGA-Textur (eine 24 oder 32 - Bit TGA-Datei).
Die Textur kann Alpha-Kanal-Information bein-
halten (muss aber nicht).
Achtung:
Beachtet, das ihr auch bei JPG-Bildern stets
die Endung TGA im Shader benutzt (es ist möglich, das dieser Fehler
in neueren
Radiant-Versionen behoben wurde) , sonst bekommt
ihr beim Compilieren eine Fehlermeldung angezeigt
blendfunc GL_DST_COLOR GL_SRC_COLOR
Blendfunc-Parameter sind dazu da, der Q3Engine mitzuteilen, wie die
Grafiken gemischt werden (siehe Shader-Dokument-
ation zur genaueren Beschreibung).
tcMod scale 1.5 2.5
Skaliert die Textur um den Faktor, der angeben wird (X und Y - Richtung).
tcMod turb .1 .08 .5 .1
Erzeugt Turbulenzen auf der Textur (siehe dazu auch: Shader-Dokumentation).
tcMod scroll 2 -.25
Scrollt die Textur in X und Y-Richtung:
Ich konnte die verschiedenen Parameter leider nur Oberflächlich
beschreiben. Für nähere Infos müsst ihr auf jeden Fall in
die
Shader-Dokumentation von ID schauen.
Ich habe in der Beispielmap eine Curve/Cone erzeugt und dann über
die Taste V etwas "verzogen", so das es aussieht, als ob der Wasserfall
(oder in meinem Beispiel wohl eher Abwasser....
) direkt heraus sprudelt. Legt dann diese Textur auf diese
Curve. Wahrscheinlich muss die Textur dann noch gedreht werden. Benutzt
dazu die Kombination SHIFT+Bild runter. Drückt
man diese Kombi zweimal, so dreht man die Textur um 90 Grad.
Eine Skybox erstellen:
Vorweg möchte ich anmerken, das sich dieser Abschnitt diesmal verstärkt
an den Profi richtet. Ich versuche zwar, alles auch
für den Einsteiger zu erklären, ein gewisses Grundwissen
mit den angesprochenen Programmen setze ich aber diesmal voraus.
Was sind eigentlich Skyboxen ?
Skyboxen zeigen im Hintergrund irgend eine Landschaft an. Natürlich
ist es auch möglich als Hintergrund den Weltraum
oder eine Stadt zu verwenden. Eine Skybox aus dem Radianten wäre
zb. skies/skybox. Eine Skybox-Textur wird an alle 6
Seiten eures Raumes angebracht, um den Effekt der "weiter entfernten"
Landschaft zu erzeugen.
In diesem Abschnitt wollen wir uns aber eine komplett neue und eigene
Skybox erstellen. Wie wäre es denn zb. mit einer
schönen Berglandschaft? Dazu müssen wir uns zunächst
ein Programm besorgen, das ihr hier bekommt:
http://www.planetside.co.uk/terragen/
Dort ladet ihr euch das Programm "Terragen" herunter, das ca. 2 MB hat.
Aktuell ist momentan Version 0.8.11. Dieses Programm ist (zum jetzigen
Zeitpunkt) für den privaten Gebrauch kostenlos. Ich kann leider nicht
das ganze Terragen Programm beschreiben, aber im nachfolgenden erkläre
ich die nötigen Schritte, um mit diesem Programm eine Landschaft
zu erzeugen.
Zunächst mal installieren wir uns das Terragen Programm. Kopiert
nach der Installation meine mitgelieferten Dateien
skybox.ter und skybox.tgw in den Terragen-Ordner. Diese Dateien findet
ihr in der Offline-Version im Ordner "Terragen".
In der Online-Variante ist dieser Ordner leider nicht enthalten.
Diese Dateien sind praktisch für die Landschaft zuständig,
die ich für euch schonmal vorab erzeugt habe. Natürlich könnt
ihr
auch (sofern ihr mit diesem tollen Programm schon vertraut seid) eigene
Terrains generieren, dann muss man meine Files nicht
in den Terragen-Ordner kopieren, allerdings macht es dem Einsteiger
die Arbeit etwas leichter...
Ok, startet nun Terragen, dann klickt ihr im Menü auf Worldfile/Open
World und ladet das File "skybox". Danach klickt ihr
das Fenster "Landscape" an, geht unter der Schrift "Terrain - (NEW)"
auf Open und ladet dort ebenfalls das File "skybox".
Wir haben somit einmal die kompletten "World-Daten" (Kameraposition
etc.) und einmal unser erstelltes Terrain in das Programm geladen. Terragen
sollte nun ungefähr so aussehen:

Im Landscape-Fenster sieht man im Terrain drei Linien (die eine Spitze
bilden), das ist unsere Kamera, die dann die Bilder
unserer Landschaft einfängt. Man kann die Position zwar jederzeit
mit der Maus verändern, aber am besten ihr lasst die Kamera so stehen.
Holt nun das Fenster "Rendering Control" in den Vordergrund. Stellt die
Detailstufe auf HOCH ein, zieht dazu den kleinen Balken ganz nach rechts.
Klickt als nächstes auf den Button "Camera Settings", gebt dort in
dem Feld
"Zoom" UNBEDINGT den Wert 1 ein (sollte
normal schon dort stehen). Steht hier ein anderer Wert und ihr ändert
diesen
nicht auf 1, so kann das Bild "verzogen" sein und eure Skybox wird
später versetzt dargestellt. Schließt nach der Änderung
wieder das Fenster "Camera Settings". Bei den 2 Feldern unter "Image
Size (in pixels)" gebt ihr eure Bildgröße ein. Benutzt
dazu am besten Standardwerte wie zb. 128 X 128, 256 X 256, 512 X 512
etc. Wir wollen im Beispiel die Auflösung 256 X
256 benutzen. Diese stellt einen guten Kompromiss zwischen Dateigröße
und Bildqualität dar. Nun haben wir soweit alles
vorbereitet und können eigentlich loslegen, um die 6 nötigen
Bilder für unsere Landschaft zu erzeugen. Eine Skybox besteht
immer aus den folgenden Bildern:
Ansicht von vorne, hinten, links, rechts, unten und oben.
Die Kunst besteht nun darin, von unserer Kameraposition aus, über
die Winkeleinstellung diese 6 Bilder zu erstellen. Des-
wegen steht die Kamera auch auf einem Berg, so das wir in jede Richtung
eine freie Sicht haben. Die Kameraposition gibt
man im Fenster "Rendering Control" ein. Dort steht "Camera Orientation"
und rechts davon sind die 3 Felder head, pitch und
bank. Diese 3 Felder geben dann den Winkel der Kamera an. In unserem
Fall sind aber nur die beiden Felder head und pitch
wichtig.
Klickt man auf den großen Button "Render Preview", so erhält
man eine kleine Voransicht der Landschaft, so wie sie später
im richtigen Render-Fenster aussehen würde. Beachtet aber, das
ihr das Detail etwas herunter zieht, damit das Rendern nicht
zu lange dauert.
OK, wir können nun loslegen, in dem wir direkt den Button "Render
Image" anklicken (Detail vorher wieder auf HOCH
setzen). Es öffnet sich sogleich ein neues Fenster, in welchem
sich unsere detaillierte Landschaft langsam aufbaut. Ist der
Rendervorgang abgeschlossen, könnt ihr über den Save-Button
euer Bild nun abspeichern. Gebt diesem Bild den Namen
"berg1_rt". Für dieses Bild gelten also die Werte head = 0 und
pitch = 0. Nachdem ihr das Bild abgespeichert habt, könnt ihr
das gerenderte Bild wieder schließen und das nächste erstellen.
Gebt nun in dem Feld head den Wert 90 ein. Das pitch Feld
lasst ihr auf dem Wert 0. Rendert nun wieder das Bild (diesmal ist
eure Landschaft um 90 Grad weiter gedreht) und speichert
das Ergebnis als "berg1_ft" ab. Ändert bei den restlichen 4 Bildern
die Felder head und pitch wie folgt ab:
head pitch
Dateiname
Bild3:
180 0
berg1_lf
Bild4:
270 0
berg1_bk
Bild5:
0 90
berg1_up
Bild6:
0 -90
berg1_dn
Rendert also die restlichen Bilder so durch, wie wir es mit den ersten
2 Bildern gemacht haben. Bei den letzten zwei Bildern
müsst ihr halt noch zusätzlich den pitch-Wert ändern
und den head-Wert auf 0 setzen. Zur Vollständigkeit hier nochmal die
komplette Tabelle, mit allen 6 Bildern:
head pitch
Dateiname
Bild1:
0 0
berg1_rt
Bild2:
90 0
berg1_ft
Bild3:
180 0
berg1_lf
Bild4:
270 0
berg1_bk
Bild5:
0 90
berg1_up
Bild6:
0 -90
berg1_dn
Den hinteren Teil des Dateinamen müsst ihr übrigens so lassen,
wie er ist (zb. _rt) und haltet auch die Reihenfolge so ein, wie
sie aus der Tabelle hervor geht. Den vorderen Teil "berg1" könnt
ihr hingegen ruhig ändern. Meine diversen Skyboxes, die
ich u.a. auf meiner Homepage anbiete, benutzen zb. die Namen "berg2"
"berg3" etc.
Nachdem wir also alle Bilder erzeugt haben, liegen diese nun im BMP-Format
vor. Dieses Format können wir aber nicht
gebrauchen und wandeln diese Bilder nachträglich in ein JPG-Format
um. Speichert nun diese 6 Bilder im baseq3\env Ordner.
Habt ihr diesen Ordner (env) nicht, müsst ihr ihn noch erzeugen.
Nun kommen wir zum Shader, den wir für unsere Skybox brauchen.
Ladet dazu das File "tutorial.shader" in einen Texteditor
und schaut euch folgenden Abschnitt an:
textures/tutorial/tutorialskybox
{
qer_editorimage
textures/skies/pjbasesky.tga
surfaceparm noimpact
surfaceparm nolightmap
// surfaceparm sky
q3map_lightimage
textures/common/white.tga
q3map_sun 0.266383 0.274632 0.358662 100
50 55
q3map_surfacelight 80
skyparms
env/berg1 - -
{
map textures/skies/topclouds.tga
blendfunc GL_ONE GL_ONE
tcMod scroll 0.05 0.06
tcMod scale 3 2
}
}
textures/tutorial/tutorialskybox
Hier gebt ihr einen Namen für euren neuen Shader an. Dieser Name
erscheint dann später in der Auswahl bei den Tutorial -
Texturen.
qer_editorimage textures/skies/pjbasesky.tga
Hier könnt ihr ein Referenz-Bild angeben, das im Editor dann euren
Shader auf den diversen Brushs präsentiert. Ich habe ein
Default-Bild von ID angegeben, wer will, kann natürlich auch ein
eigenes Bild dafür benutzen.
q3map_lightimage textures/common/white.tga
Wird gebraucht, um das Licht mit der Farbe Weiß gleichmäßig
zu verteilen.
q3map_sun 0.266383 0.274632 0.358662 100 50 55
Für eine genaue Erklärung dieses Parameters schaut euch nochmal
diese Stelle an.
q3map_surfacelight 80
Gibt die Helligkeit an.
skyparms env/berg1 - -
Hier müsst ihr den Hauptnamen von euren 6 Bildern angeben. Ihr
dürft aber nur den Teil VOR dem Unterstrich an dieser
Stelle eintragen.
{
map textures/skies/topclouds.tga
blendfunc GL_ONE GL_ONE
tcMod scroll 0.05 0.06
tcMod scale 3 2
}
Hiermit könnt ihr noch animierte Wolken hinzufügen. Mit den
animierten Wolken kann es aber am Boden zu Texturfehlern
kommen. Einfach mal mit und einmal ohne animierten Wolken compilieren....
Achtung:
Ich habe für diesen Skybox-Shader keine
Beispielmap und keine Texturen beigefügt, weil das Tutorial sonst
zu groß gewor-
den wäre. Aber keine Panik
. Ihr könnt euch mehrere Skyboxen auf meiner Homepage downloaden.
Kopiert dann jeweils
davon den kompletten Ordner "env" in euren Ordner
"baseq3" und ändert den Dateinamen beim Parameter skyparms
env/berg1
entsprechend ab. Fängt der Dateiname zb. mit "berg3" an, so müsste
der Parameter so aussehen: skyparms
env/berg3 - -
Eine durchsichtige Textur (zb.
Spinnwebe) erstellen:
Viele von euch haben sicher schon in den diversen Maps Blätter,
Bäume und andere schöne Sachen gesehen und sich dabei
gefragt, wie man so was erstellt. Nun, in diesem Abschnitt möchte
ich euch kurz erklären, wie man eine einfache Spinnwebe
realisieren kann. Wer natürlich eher Blätter, Bäume
etc. bevorzugt und mit meiner Spinnwebe nichts anfangen kann, der
braucht jetzt nicht verzweifeln, da die Vorgehensweise nämlich
die selbe ist. Lediglich die Bilder sehen anders aus....
Voraussetzung ist, das ihr ein Malprogramm euer Eigen nennt, das schon
einige Funktionen wie zb. einen Rahmen markieren,
einen Zauberstab etc. beinhalten sollte. Dazu eignet sich auch die
Vollversion Paint Shop Pro Version 4, die schon auf
vielen verschiedenen Magazin CDs erschienen ist bzw. eignet sich auch
das eine oder andere Grafik-Komplettpaket, das
ihr beim Lebensmittel-Discounter billig kaufen könnt.
Ich benutze hier in meinem Beispiel die Graphics Suite, die mit vielen
verschiedenen Programmteilen (nützlichen, wie auch
weniger nützlichen...) ausgestattet ist.
Wir beginnen damit, in dem wir uns ein neues Bild mit den Maßen
128 x 128 erstellen. Wählt dazu einen schwarzen Hinter-
grund aus. Wir vergrößern uns die Malfläche etwas und
ziehen nun einige Striche, so das es am Ende eben wie eine Spinn-
webe aussieht......
Wer nicht so künstlerisch begabt ist, kann auch die beigefügte
Textur benutzen.
Ich habe übrigens die Methode "Öl" benutzt und dabei mit
dem Pinsel die Striche von unten nach oben gezogen. Dadurch
erscheinen die Linien unten dünner (dunkler), was wohl eher nach
ein paar Spinnweben aussehen dürfte.
Dazu ein Bild vom Malprogramm:

Nun müssen wir nur noch unsere Spinnweben markieren und als TGA
abspeichern. Benutzt dazu den Zauberstab, der es euch
ermöglicht, von einer Farbe eine komplette Maske zu erstellen.
In den verschiedenen Programmen ist die Arbeitsweise stets
ähnlich, ich beziehe mich in meinem Beispiel hier auf die Graphics
Suite.
Zunächst habe ich den Zauberstab ausgewählt, dann auf den
schwarzen Hintergrund geklickt, wobei dann ein Teil schon selektiert wurde.
Das reicht allerdings noch nicht, so das wir zusätzlich an der Werkzeugleiste
oben noch auf "Ähnliche Far-
ben" klicken. Danach drückt man noch die rechte Mausttaste (im
Bild) und wählt "Invertieren" aus. Die Vorgehensweise be-
zieht sich, wie schon beschrieben, auf mein verfügbares Programm.
Wer nicht diese Version hat, kann aber ohne weiteres ein
anderes benutzen. Es kommt nur darauf an, das man diese Maske, Selektion
oder wie auch immer, erstellen kann.
In meinem Programm sieht das dann so aus:

Speichert dieses Pic nun ab. Aber Vorsicht ! Speichert es als TGA-File
und wählt vorher noch unbedingt unter den Optionen
"Maskenkanal speichern" aus. Das ist sehr wichtig. Mit dieser Option
wird die gesamte Markierung mitgespeichert.
In anderen Malprogrammen findet ihr die Option höchstwahrscheinlich
auch im "Speichern unter..."-Dialog. Einfach ein
bißchen suchen....
OK, jetzt geht es mit größeren Schritten voran. Ihr benutzt
als nächstes folgenden Shader:
textures/tutorial/spinnwebe
{
qer_editorimage
textures/tutorial/spinnwebe.tga
surfaceparm trans
surfaceparm alphashadow
surfaceparm nonsolid
cull none
nopicmip
{
map textures/tutorial/spinnwebe.tga
blendFunc GL_ONE GL_ZERO
alphaFunc GE128
depthWrite
rgbGen identity
}
{
map $lightmap
rgbGen identity
blendFunc GL_DST_COLOR GL_ZERO
depthFunc equal
}
}
Dieser Shader ist in der Datei "tutorial.shader" ganz am Ende eingetragen.
Die Textur "spinnwebe.tga" müsst ihr natürlich noch
im Ordner "textures/tutorial" abspeichern, sofern ihr das noch nicht
getan habt.
Im Radianten könnt ihr von nun an diese "hübsche" (jo, es
geht besser.....bin kein Künstler.... ....)
Spinnwebe unter textures/tutorial auswählen.
Natürlich kann man die Spinnweben noch mit Anti-Aliasing bearbeiten,
meine sehen dagegen ziemlich grob aus.
Um diese Textur nun zu verwenden, erstellt ihr einen Brush, der komplett
mit der Textur common/nodraw belegt wird.
Danach wählt ihr eine Seite davon aus (STRG + SHIFT + linke Maustaste)
und belegt diese mit der Spinnweben-Textur.
Das ist alles.
|