Titelgrafik

   
zurück vor
 
Shaders (Skybox, Wasserfall etc.): zurück zum Inhaltsverzeichnis

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.
 
 
 
zurück zum Inhaltsverzeichnis
 
zurück vor
 

 

Alle Firmen und Produktnamen, die hier eventuell genannt werden, sind registrierte
Warenzeichen ihrer dazugehörigen Hersteller
Q3Radiant Tutorial, Copyright (c) 2001 M. Kupfer, erstellt mit Netscape Composer 4.75, Auflösung 800 x 600

http://www.dangerzone.de.tf
oder
http://www.dangerzone.de.st

...eine der ersten Q3Radiant Sites in der deutschen Q3-Scene, seit dem 1.1.2000...