Skybox, Nebel und Color Correction in GMod-Maps einstellen
Skybox, Nebel und Color Correction einstellen: 2D-Himmel und eigene Sky-Texturen, env_fog_controller mit Far Z, color_correction und HDR-Belichtung.
Den Himmel einer Map legst du über zwei Dinge fest: Flächen mit dem Material tools/toolsskybox und den Sky-Namen unter Map > Map Properties. Nebel kommt aus einem env_fog_controller, die Farbstimmung aus einem color_correction mit einer .raw-Datei, und die HDR-Belichtung begrenzt ein env_tonemap_controller. Nebelfarbe, Sonnenlicht und Farbkorrektur müssen dabei zum Himmelsbild passen.
So funktioniert die 2D-Skybox
Flächen mit tools/toolsskybox sind Fenster zum Himmel. Die Engine zeichnet dort einen Würfel aus sechs Bildern, der immer um die Kamera liegt und deshalb unendlich weit entfernt wirkt. Welche Bilder das sind, bestimmt das Feld „SkyBox Texture Name“ (skyname) in den Map Properties. Der Standardwert ist sky_day01_01.
Du trägst nur den Grundnamen ein, ohne skybox/ und ohne Endung. Die Engine hängt für jede Würfelseite ein Kürzel an und sucht das Material unter materials/skybox/:
| Kürzel | Seite | Beispiel |
|---|---|---|
up | oben | materials/skybox/sky_day01_01up.vmt |
dn | unten | materials/skybox/sky_day01_01dn.vmt |
lf, rt | links, rechts | sky_day01_01lf.vmt, sky_day01_01rt.vmt |
ft, bk | vorn, hinten | sky_day01_01ft.vmt, sky_day01_01bk.vmt |
Die meisten Himmel von Half-Life 2 liegen zusätzlich als Satz für HDR vor, bei dem _hdr vor dem Kürzel steht, zum Beispiel sky_day01_01_hdrup. Im Spiel zeigt sv_skyname den aktuellen Namen. Eine ferne Kulisse aus Geometrie baust du mit der 3D-Skybox, die vor diesem Bild gezeichnet wird.
Vorhandenen Himmel nutzen oder eigenen einbauen
GMod bringt die Himmel aus Half-Life 2 mit (sky_day01_01 bis sky_day03_06, sky_borealis01, sky_wasteland02) und einen einstellbaren: Mit dem Sky-Namen painted und dem Entity env_skypaint stellst du die Himmelsfarben direkt ein. Für diese Himmel musst du nichts packen.
Ein eigener Himmel besteht aus sechs VTF-Dateien und sechs VMT-Dateien in materials/skybox/. Die VMT eines mitgelieferten Himmels ist die beste Vorlage:
"UnlitGeneric"
{
"$basetexture" "skybox/mymap_skyup"
"$nofog" "1"
"$ignorez" "1"
}
$nofognimmt den Himmel vom Nebel aus,$ignorezzeichnet ihn ohne Tiefentest, sodass er hinter aller Geometrie bleibt.- Die mitgelieferten Sky-Texturen tragen die VTF-Flags Clamp S, Clamp T, No Mipmap und No LOD. Ohne Clamp können an den Würfelkanten Nähte sichtbar werden.
- Der HDR-Satz der Vorlagen nutzt den Shader
skymit$hdrcompressedtexture. Einen eigenen Himmel ohne HDR-Satz solltest du in einer HDR-Map gezielt testen.
Alle zwölf Dateien gehören in die BSP, siehe Custom Content in BSP packen. Wie VTF und VMT entstehen, steht in Eigene Texturen mit VTF und VMT.
Licht an den Himmel anpassen
Der Himmel ist nur ein Bild, das Licht kommt vom light_environment. Pitch und Yaw müssen zum Sonnenstand im Bild passen, „Brightness and Color“ hat die Farbe des Sonnenlichts und „Ambient Color and Brightness“ die Farbe des Himmels. Für die Himmel von Valve führt die Valve Developer Community eine Sky List mit Werten aus den offiziellen Maps. Die Entities selbst erklärt der Artikel zur Beleuchtung in der Source Engine.
Nebel mit env_fog_controller
| Keyvalue | Standard | Wirkung |
|---|---|---|
Fog Enable (fogenable) | No | schaltet den Nebel ein, ein neues Entity zeigt sonst nichts |
Fog Start (fogstart) | 500 | Entfernung, ab der der Nebel beginnt |
Fog End (fogend) | 2000 | Entfernung, ab der die größte Dichte erreicht ist |
Fog Max Density (fogmaxdensity) | 1 | größte Dichte von 0 bis 1 |
Primary Fog Color (fogcolor) | 255 255 255 | Nebelfarbe |
Far Z Clip Plane (farz) | -1 | Entfernung, hinter der nichts mehr gezeichnet wird. -1 bedeutet aus |
Nebel allein spart keine Leistung, er färbt entfernte Flächen nur ein. Den Gewinn bringt Far Z: Was dahinter liegt, wird nicht gezeichnet, und VVIS liest den Wert aus dem env_fog_controller und begrenzt damit die Sichtbarkeit schon beim Compile. Laut FGD soll Far Z größer sein als Fog End, und Fog Max Density soll auf 1 stehen, weil sonst die Leere dahinter sichtbar wird. Weitere Stellschrauben stehen in GMod-Map optimieren.
Weil der Himmel vom Nebel ausgenommen ist, heben sich voll eingenebelte Gebäude als einfarbige Flächen von ihm ab. Wähle die Nebelfarbe deshalb passend zum Horizont.
Die 3D-Skybox hat eigenen Nebel in der sky_camera, mit den gleichen Feldern für Farbe, Start, Ende und Dichte. Die Engine rechnet Start und Ende dort selbst auf den Maßstab der Skybox um, du trägst also dieselben Zahlen ein wie im env_fog_controller. Gibt es mehrere Controller, hat laut FGD der mit dem Flag „Master“ Vorrang. Unterschiedlichen Nebel pro Bereich schaltet in GMod ein fog_volume.
Farbstimmung mit color_correction
Eine Color Correction ist eine Nachschlagetabelle, die jede Farbe des fertigen Bilds durch eine andere ersetzt. Sie liegt als .raw-Datei vor, rund 96 KB groß, und entsteht im Spiel:
- Setze ein
color_correctionin die Map und lass „Lookup Table Filename“ zunächst leer. - Lade die Map, aktiviere
sv_cheats 1und gibcolorcorrectionuiein. - Lege im Werkzeugfenster Filter an und stelle sie ein. Bleib dabei in Reichweite des Entity.
- Speichere das Ergebnis als
.rawund lege die Datei untermaterials/colorcorrection/ab. - Trage den Pfad im Entity ein, kompiliere neu und packe die Datei in die BSP.
Der Dateiname (filename) ist relativ zum Spielordner und enthält die Endung, zum Beispiel materials/colorcorrection/mymap.raw. Die Whitelist von gmad lässt .raw-Dateien nur unter materials/colorcorrection/ zu.
„Lookup Falloff Start Distance“ steht standardmäßig auf 0 und „Lookup Falloff End Distance“ auf 200. Die Korrektur wirkt damit nur im Umkreis von 200 Units um das Entity und nimmt nach außen ab. Für die ganze Map trägst du in beiden Feldern -1 ein. „Maximum Weight“ regelt die Stärke, und mit Enable und Disable schaltest du zwischen Stimmungen um.
HDR-Belichtung mit env_tonemap_controller
In einer HDR-Map passt die Engine die Belichtung laufend an: Helle Szenen dunkelt sie ab, dunkle hellt sie auf. Das env_tonemap_controller setzt dafür Grenzen. In der FGD von GMod hat es dafür keine Keyvalues, du steuerst es über Inputs, am einfachsten aus einem logic_auto:
My Output Target Entity Target Input Parameter
OnMapSpawn tonemap SetAutoExposureMin 0.8
OnMapSpawn tonemap SetAutoExposureMax 1.6
OnMapSpawn tonemap SetBloomScale 0.5
Die Zahlen sind Beispielwerte. SetAutoExposureMin begrenzt, wie stark eine helle Szene abgedunkelt wird, SetAutoExposureMax, wie stark eine dunkle aufgehellt wird. Im Source SDK sind die Ausgangswerte 0.5 und 2. SetBloomScale regelt das Überstrahlen heller Flächen. SetTonemapRate soll das Tempo der Anpassung setzen, wirkte laut Valve Developer Community in Engine-Zweigen vor CS:GO aber nur im Einzelspieler. Prüfe es deshalb auf einem Server. Die Inputs SetTonemapScale und BlendTonemapScale sind in der FGD von GMod auskommentiert, mit dem Hinweis, dass sie nie funktioniert haben. Den Aufbau von Outputs zeigt Hammer Inputs und Outputs.
Typische Probleme
| Symptom | Ursache | Lösung |
|---|---|---|
| Himmel schwarz oder mit pink-schwarzem Karomuster | Name vertippt, Dateien nicht gepackt oder Kürzel falsch | Konsole auf Unable to load sky prüfen, sv_skyname kontrollieren, packen |
| Himmel passt nicht zur 3D-Skybox | Nebel der sky_camera weicht vom env_fog_controller ab | Farbe, Start, Ende und Dichte angleichen |
| Geometrie wird in der Ferne sichtbar abgeschnitten | Far Z kleiner als Fog End, Dichte unter 1 oder Nebel aus | Far Z über Fog End, Dichte auf 1, „Fog Enable“ auf Yes |
| Color Correction wirkt nur an einer Stelle | Falloff steht noch auf 0 und 200 | beide Werte auf -1 setzen |
| Color Correction fehlt bei Spielern | .raw nicht gepackt, Pfad ohne Endung, oder beim Spieler abgeschaltet | Pfad prüfen, packen, mit mat_colorcorrection 0 und 1 gegentesten |
Color Correction und HDR sind Grafikoptionen, und ein Server kann Color Correction über sv_allow_color_correction sperren. Die Map muss also auch ohne beides lesbar sein. Ob Sky-Materialien und .raw im Pakfile liegen, siehst du im Map Scanner, der die eingebetteten Dateien auflistet.
Häufige Fragen
Kann eine Map mehrere Himmel haben?
Nein. Der Sky-Name ist eine Eigenschaft der ganzen Map und gilt überall, wo tools/toolsskybox sichtbar ist. Unterschiedliche Stimmungen pro Bereich erreichst du über Nebel, Color Correction und Licht.
Wie groß sollten Sky-Texturen sein?
Der Standardhimmel sky_day01_01 nutzt 512 × 512 Pixel für die Oberseite und 512 × 256 für die Seiten. Größere Texturen sind schärfer, zählen bei sechs Seiten aber sechsfach für die Dateigröße der Map.
Warum sieht meine Map bei anderen Spielern anders aus?
Meist wegen der Grafikoptionen. Mit HDR greifen HDR-Lightmaps, Tonemapping und der HDR-Himmel, ohne HDR die LDR-Fassung. Ist Color Correction abgeschaltet, fehlt deine Farbstimmung. Teste beide Varianten, bevor du veröffentlichst.