User Tag List

Ergebnis 1 bis 1 von 1

Thema: 28 | Eine eigene Skybox mit Terragen

  1. #1
    Super-Moderator Avatar von DaEngineer
    Registriert seit
    22.06.2010
    Beiträge
    1.535
    Blog-Einträge
    2
    Renommee-Modifikator
    20

    28 | Eine eigene Skybox mit Terragen

    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.

    Hinweis: Dieses Tutorial bezieht sich auf eine sehr alte Version von Terragen.

    Bei Programmstart seht ihr folgendes Fenster:

    Name:  28_1.jpg
Hits: 294
Größe:  13,0 KB

    Klickt im rechten Fenster auf Generate Terrain.

    Name:  28_2.jpg
Hits: 293
Größe:  19,7 KB

    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.

    Name:  28_3.jpg
Hits: 294
Größe:  27,0 KB

    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.

    Name:  28_4.jpg
Hits: 268
Größe:  74,2 KB


    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).

    Name:  28_5.jpg
Hits: 264
Größe:  30,5 KB


    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.

    Name:  28_6.jpg
Hits: 284
Größe:  44,2 KB

    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

    Name:  28_7.jpg
Hits: 295
Größe:  15,4 KB

    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 1280x960. Ihr könnt also maximal 960x960 angeben - 512x512 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.

    Code:
    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:

    Code:
    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 in Tutorial 12 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 die in Tutorial 40 erläuterte Methode. 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.
    Geändert von DaEngineer (09.01.2016 um 13:09:23 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
[email protected]