GtkRadiant logo

Quake 3 Radiant – Eine eigene Skybox mit Terragen

Last Updated on 31. January 2023 by Victor Karp

Das Tutorial bezieht sich auf eine alte Version von Terragen, die der Hersteller nicht mehr zum Download anbietet.

In diesem Tutorial erkläre ich Schritt für Schritt die Benutzung von Terragen zum Erstellen der Skybox und das Schreiben eines Shaders für die Skybox. Grundkenntnisse über das Ändern von Dateiendungen und die Benutzung des Windows Explorers werden vorausgesetzt.

Terragen

Um eine Skybox mit Bergen, Wolken und Wasser zu erstellen, brauchen wir das kostenfreie Programm Terragen. Ihr könnt es hier herunterladen.

Bei Programmstart seht ihr folgendes Fenster:

Klickt im rechten Fenster auf Generate Terrain.

Spielt ein wenig mit den Reglern herum, zu Deutsch bedeuten sie so viel wie “Realismus, Glätte, Gletscher, Schluchten”. Um das Terrain generieren zu lassen, klickt auf Generate Terrain. Danach könnt ihr das Fenster mit einem Klick auf Close schließen.

Klickt jetzt zuerst doppelt auf Surface Map. Daraufhin öffnet sich das Surface Layer Fenster. Mit einem Klick auf Color könnt ihr nun die Farbe des Terrains auswählen.

Wollt ihr mehrere Farben auf euer Terrain anwenden, müsst ihr im Landscape Fenster auf den Button Add Child klicken. Oben könnt ihr über den Button Modify angeben, in welchen Höhen die Farbe benutzt werden soll, sodass ihr Schnee z.B. nur auf den Berggipfeln habt. Über den Button Edit an der rechten Seite könnt ihr weitere Einstellungen vornehmen. Besonders interessant ist der Reiter Advanced Distribution auf der unteren Hälfte des Fensters. Dort lässt sich z.B. angeben, dass die Farbe nur bis zu einer gewissen Neigung des Terrains benutzt werden soll (praktisch, wenn man z.B. Gras nicht auf zu stark abfallendem Gelände haben will).

Lasst uns das Bild rendern. Klickt dazu mit der linken Maustaste auf das schwarz-weiße Übersichtsbild eurer Landschaft, um die Kamera zu setzen. Mit der rechten Maustaste bestimmt ihr die Blickrichtung.

Klickt dann auf Render Preview. Mit dem Schiebregler lässt sich die Qualität des Bildes beeinflussen. Hohe Qualität sieht besser aus, dauert aber auch länger.

Wasser, Wolken, Atmosphäre und Licht

…lassen sich über die Buttons an der linken Seite konfigurieren

Die Benutzeroberfläche der jeweiligen Kategorien ist selbsterklärend aufgebaut, weshalb ich jetzt nicht weiter darauf eingehe. Ich kann euch nur raten, die Beschreibungstexte aufmerksam zu lesen und viel herumzuexperimentieren. Das ist spannender und lehrreicher, als wenn ich die Kategorien seitenweise erkläre.

Die richtigen Renderoptionen

Für unsere Skybox brauchen wir insgesamt 6 Einzelbilder. Sie werden später wie ein Würfel angeordnet, sodass sie – von innen betrachtet, denn es ist ja eine SkyBOX – wieder ein Gesamtbild ergeben.

Sucht euch also eine Stelle aus, von der aus man sich gut um 360° drehen kann (also nicht direkt vor eine Bergwand guckt). Wählt zuerst den Reiter Quality. Hier schiebt ihr beide Regler ganz nach rechts.

Wählt dann den Reiter Image. Ihr müsst eine quadratische Größe angeben. Die größte Auflösung, die die unregistrierte Version von Terragen Classic erlaubt, ist 1280×960. Ihr könnt also maximal 960×960 angeben – 512×512 tun es aber auch. Ihr könnt das Fenster dann schließen.

Klickt jetzt auf Camera Settings (links neben der Terrainvorschau zu sehen). Im Feld Zoom gebt ihr den Wert “1” ein, da die Bilder sonst hinterher nicht zu einem Würfel zusammenfügbar sind.

Die 6 Bilder rendern

Wir müssen jetzt – bildlich gesprochen – das Innere eines Würfels abfotografieren. Über der Terrainvorschau seht ihr die Leiste Camera Orientation. Ich werde euch jetzt die Werte aufschreiben, die ihr dort für Head und Pitch angeben müsst, Bank ist für uns nicht interessant. Nach dem Eintragen jedes Wertes klickt ihr auf Render Image (NICHT Render Preview!).

Das Rendern des Bildes kann sehr lange dauern, also wundert euch nicht, wenn ihr aus dem Renderprozess mit [Alt]+[Tab] zu einem anderen Fenster wechselt und nicht mehr zurück könnt. Der Prozess ist nicht abgestürzt, nur nicht ansprechbar. Wenn das Bild fertig ist, werdet ihr das Fenster wieder aufrufen können. Wenn es so weit ist, klickt ihr auf Save und gebt dem Bild den entsprechenden Namen aus der Liste.

Head 0
Pitch 0
Dateiname: skybox_ft

Head 90
Pitch 0
Dateiname: skybox_lf

Head 180
Pitch 0
Dateiname: skybox_bk

Head 270
Pitch 0
Dateiname: skybox_rt

Head 270
Pitch 90
Dateiname: skybox_up

Head 270
Pitch -90
Dateiname: skybox_dn

Da diese Bilder alle als .bmp abgespeichert werden, Quake aber .jpg’s braucht, müsst ihr sie alle noch einmal mit einem Bildbearbeitungsprogramm öffnen und unter dem selben Dateinamen speichern, nur als .jpg oder .tga und nicht als .bmp.

Die Bilder zur Skybox umwandeln

Jetzt müssen wir Quake noch sagen, was es mit unseren Bildern tun soll. Erstellt im baseq3 Ordner eures Quake 3 Verzeichnisses einen Ordner mit dem Namen textures. Darin erstellt ihr einen weiteren Unterordner mit beliebigem Namen, ich nenne ihn terragenskybox. In ihn verschiebt ihr alle 6 Bilder. Im baseq3 Ordner solltet ihr außerdem einen Ordner finden, der scripts heißt. Darin erstellt ihr eine Textdatei. Diese nennt ihr terragenskybox.shader, wobei das .shader nicht der Dateiname sondern die Endung ist (also so wie etwa .jpg, .txt, .exe bei anderen Dateien).

In diese Datei kopiert ihr nun folgenden Text:

textures/terragensky/skybox
{
qer_editorimage textures/terragensky/skybox_up.jpg
surfaceparm nodlight
surfaceparm noimpact
surfaceparm nolightmap
q3map_surfacelight 80
q3map_sun 1 1 1 80 249 10
skyParms textures/terragensky/skybox - -
}

textures/terragensky/skybox
Später braucht ihr eine Textur, die ihr im Radiant auswählen und auf eure Skyboxbrushes legen könnt. Diese Zeile gibt an, wo sie im Radiant zu finden sein soll (nämlich im Verzeichnis terragensky) und wie sie heißen soll (skybox). Die Zeile ist also eine reine Namens- und Pfaddefinition und sagt nichts über den Ort oder Aussehen der verwendeten Bilddateien aus.

qer_editorimage textures/terragensky/skybox_up.jpg
Das ist der Pfad zum Vorschaubild, das für die Textur im Radiant benutzt werden soll und auf die Brushes gelegt wird. Ich habe für dieses Tutorial skybox_up.jpg genommen, ihr könnt auch ein anderes der 6 Skyboxbilder verwenden.

q3map_lightimage textures/common/white.tga
Benötigen wir, damit weißes Licht von unserer Skybox ausgegeben wird (von der Textur, nicht von der Sonne. Genaueres dazu ist im Tutorial über Skybox und Sonne nachzulesen). Hierbei handelt es sich um den Pfad zu einer der bereits von Quake mitgelieferten Texturen.

Hinweis: Oberflächenlicht wird inzwischen nicht mehr für Skyboxen verwendet. Die Methode ist veraltet und sollte nicht mehr benutzt werden. Ich habe sie beim Schreiben dieses Tutorials noch angewendet, für eure Skyboxen benutzt ihr besser den verbesserten Skybox Shader. An der Anwendungsweise der 6 Skyboxbilder ändert sich dadurch aber nichts.

surfaceparm nodlight
Verhindert, dass dynamische Lichtquellen wie etwa der Lichtschein von Raketen auf der Skybox sichtbar sind. Was passiert, wenn ihr die Zeile nicht benutzt, seht ihr, wenn ihr auf q3dm7 mit dem Raketenwerfer in den Himmel schießt.

surfaceparm noimpact
Gibt an, dass keine Projektile auf unserer Skybox einschlagen

surfaceparm nolightmap
Sorgt dafür, dass die Skybox nicht von anderen Lichtquellen beleuchtet wird

q3map_sun 1 1 1 X Y Z
Die ersten drei Zahlen geben die Farbwerte des Lichts im RGB (Rot Grün Blau) System an – Werte von 0-1 oder 0-255 sind zulässig. Im Beispiel oben ist das Sonnenlicht weiß. X steht für die Stärke des Lichts, Y für den Winkel (Osten = 0, Norden = 90 usw.) und Z für die Höhe der Sonne (ebenfalls in Grad. 0 = Horizontlinie, 90 = Mittag).

Einen passenden Farbwert könnt ihr ermitteln, indem ihr im Radiant ein light Entity erstellt, mit [K] den Colorpicker öffnet und eine Farbe aussucht. Die drei RGB Werte an der rechten Seite schreibt ihr nacheinander in den Shader.

q3map_surfacelight X
Die Helligkeit des Lichts, das der Brush mit der Skyboxtextur abgibt. X ersetzt ihr durch eine Zahl. Die Farbe des Lichts wird von der Durchschnittsfarbe der Textur bestimmt, die ihr bei q3map_lightimage angegeben habt.

skyParms textures/terragensky/skybox – –
Diese Angabe sagt dem Shader, welche Bilder er zur Darstellung der Skybox im Spiel benutzen soll. Weiter oben haben wir die sechs Bilder so benannt, dass sie sich lediglich durch ihre Richtungsangabe nach dem Unterstrich unterscheiden. Diese Richtungsangabe und den Unterstrich lasst ihr im Shader weg, und der Compiler erkennt automatisch alle zur Skybox gehörenden Bilder.

Die beiden Minuszeichen mit jeweils einem Leerzeichen dazwischen sind wichtig. Ihr dürft sie nicht weglassen. Anstelle eines Minuszeichens stehen nämlich Zahlen, sofern man bewegliche Wolken am Himmel hat. Die Zahl gibt dann an, in welcher Höhe sich die Wolken befinden. Da wir keine Wolken haben, brauchen wir keine Zahlen anzugeben; trotzdem muss der Shader wissen, dass die Angabe nicht fehlt. Und dafür braucht er diese Minuszeichen.

Wenn alle Punkte erledigt sind, speichert das Textdokument ab.

Im scripts Ordner werdet ihr ein Dokument finden, das shaderlist heißt. Dort hinein müsst ihr nur den Name der Shaderdatei, also terragenskybox, schreiben. Die Endung .shader dürft ihr nicht dazuschreiben.

Wenn ihr den Radiant jetzt startet (falls er vorher geöffnet war, müsst ihr ihn einmal schließen), werdet ihr einen neuen Texturordner mit dem Namen terragensky im Texturbrowser finden. Darin befindet sich dann die neue Skyboxtextur.

Besuche die Quake 3 Mapping Tutorial Hauptseite für weitere Tutorials.

Scroll to top