3D-Skybox erstellen in Hammer: Anleitung mit sky_camera
3D-Skybox erstellen: Aufbau im Maßstab 1/16 mit sky_camera, saubere Ausrichtung zur Hauptmap, passender Nebel und die häufigsten Fehler in Hammer.
Eine 3D-Skybox ist ein kleiner, abgeschlossener Raum in deiner Map, in dem die ferne Umgebung im Maßstab 1/16 gebaut ist. Die Engine rendert ihn aus Sicht der Entity sky_camera und zeigt das Bild überall dort, wo in der Hauptmap die Textur tools/toolsskybox sichtbar ist. So wirkt die Map deutlich größer, ohne dass Berge, Skyline oder Meer in voller Größe existieren.
So funktioniert die 3D-Skybox
Die Engine zeichnet zuerst den normalen 2D-Himmel, dann die 3D-Skybox und zuletzt die eigentliche Map darüber. Die Kamera in der Skybox bewegt sich mit dem Spieler mit, aber nur mit einem Sechzehntel der Strecke. Dadurch verschiebt sich die Ferne glaubwürdig, wenn du durch die Map läufst.
Zwei Regeln folgen daraus:
- Die Position der
sky_cameraentspricht dem Ursprung der Hauptmap, also der Koordinate 0 0 0. Daran hängt die gesamte Ausrichtung. - Spieler betreten die Skybox nie. Alles, was erreichbar sein soll, gehört in die Hauptmap.
Aufbau Schritt für Schritt
- Planen: Lege fest, was nur Kulisse ist: Gebirge, Häuserzeilen in der Ferne, Wasserflächen, Wald.
- Referenz bauen: Kopiere den groben Umriss der Hauptmap als einfache Brushes, zum Beispiel Bodenkanten und Außenmauern. Setze zusätzlich einen kleinen Markierungs-Brush genau auf den Ursprung 0 0 0 und nimm ihn in die Kopie auf.
- Skalieren: Markiere die gesamte Kopie und skaliere sie über Tools → Transform (
Strg+M) mit dem Faktor 0.0625. Das entspricht 1/16. - Verschieben: Schiebe die verkleinerte Referenz an eine freie Stelle abseits der Hauptmap.
- Kamera setzen: Platziere die
sky_cameragenau auf dem Markierungs-Brush. Der Wert für den Maßstab in der Entity bleibt beim Standard 16. - Kulisse bauen: Baue die ferne Landschaft um die Mini-Referenz herum, etwa mit Displacements, einfachen Brushes und wenigen Models.
- Abdichten: Umschließe den Skybox-Raum vollständig mit Brushes, die
tools/toolsskyboxtragen. Er muss dicht sein wie jeder andere Raum. - Referenz entfernen: Lösche die Mini-Kopie der Hauptmap oder verschiebe sie in eine ausgeblendete VisGroup. Ausgeblendete Objekte werden nicht mitkompiliert.
- Hauptmap vorbereiten: Überall, wo die Ferne sichtbar sein soll, brauchen die Flächen
tools/toolsskybox. Mittools/toolsnodrawbleibt die Skybox unsichtbar. - Testen: Kompiliere die Map und prüfe im Spiel die Übergänge. Mit
r_3dsky 0undr_3dsky 1blendest du die 3D-Skybox zum Vergleich aus und ein.
Maßstab und Ausrichtung prüfen
Eine Einheit in der Skybox entspricht 16 Einheiten in der Hauptmap. Ein Berg, der im Spiel 2048 Einheiten hoch wirken soll, ist in der Skybox also 128 Einheiten hoch. Das hat Folgen:
- Feine Details sind nicht möglich. Arbeite mit kleinem Raster und groben Formen.
- Ein Versatz von einer Einheit in der Skybox ergibt 16 Einheiten Versatz im Spiel. Verschiebe Kulisse und
sky_cameradeshalb nur gemeinsam. - Models werden nicht automatisch verkleinert. Nutze Models, die eigens für Skyboxen im kleinen Maßstab gebaut wurden. Ein normales Model erscheint in der Ferne sechzehnmal zu groß.
Kontrolliere die Ausrichtung dort, wo Hauptmap und Skybox aneinanderstoßen, etwa an einer Straße oder einer Geländekante. Passt die Fortsetzung in Höhe und Richtung, sitzt die Kamera richtig.
Nebel und Licht abstimmen
Die sky_camera besitzt eigene Nebel-Einstellungen. Die Hauptmap nutzt dagegen meist einen env_fog_controller. Passen beide nicht zusammen, siehst du am Übergang eine harte Kante.
- Verwende in beiden Entities dieselbe Nebelfarbe.
- Beginne bei Start- und Enddistanz mit denselben Werten wie im
env_fog_controllerund korrigiere nach einem Test im Spiel. - Wähle eine Nebelfarbe, die zum Horizont der 2D-Sky-Textur passt. Die Textur liegt weiterhin hinter der 3D-Skybox.
Nebel verdeckt auch den geringen Detailgrad der Kulisse. Die Sonne aus light_environment beleuchtet den Skybox-Raum mit, weil er denselben Himmel nutzt. Schatten wirken dort durch den Maßstab schnell grob. Mehr dazu steht im Artikel zur Beleuchtung in der Source Engine.
Performance im Blick behalten
Nach dem Code des Source SDK wird die 3D-Skybox zusätzlich zur Hauptmap gerendert, sobald vom Standort des Spielers aus Himmel sichtbar sein kann, nicht erst, wenn eine Himmelsfläche im Bild ist. Auf offenen Maps ist das fast immer der Fall.
- Halte die Geometrie einfach und den Raum so klein, wie die Kulisse es erlaubt.
- Setze wenige, einfache Models ein und verzichte auf alles, was aus der Ferne niemand erkennt.
- Nach dem Code des Source SDK wird die 3D-Skybox in einem einzigen Durchgang ohne eigene Reflexion und Refraktion gezeichnet, Wasser mit Echtzeit-Spiegelung funktioniert dort also nicht wie in der Hauptmap. Ein günstiges Wassermaterial mit
$forcecheap 1ist die sichere Wahl.
Weitere Stellschrauben findest du im Artikel GMod-Map optimieren.
Typische Fehler
| Symptom | Ursache | Lösung |
|---|---|---|
| 3D-Skybox ist nicht zu sehen | Keine sky_camera, oder die Hauptmap nutzt an den Rändern nicht tools/toolsskybox | Entity setzen, Texturen prüfen, r_3dsky kontrollieren |
| Kulisse schwebt oder ist seitlich versetzt | sky_camera sitzt nicht auf dem skalierten Ursprung, oder der Faktor stimmt nicht | Ausrichtung mit Referenz und Markierung wiederholen |
| Leak nach dem Einbau | Der Skybox-Raum ist nicht dicht | Raum vollständig mit Welt-Brushes schließen |
| Harte Kante am Horizont | Nebel von sky_camera und env_fog_controller weicht ab | Farbe und Distanzen angleichen |
| Models in der Ferne riesig | Normales Model statt Skybox-Variante | Kleines Model verwenden |
| Mini-Landschaft in der Hauptmap sichtbar | Skybox-Raum berührt die Hauptmap oder ist zu ihr offen | Raum abrücken und getrennt abdichten |
Meldet VBSP nach dem Einbau einen Leak, nennt das Compile-Log die Entity, von der aus der Leak verfolgt wurde, zum Beispiel die sky_camera selbst. Wie du die Lücke findest, steht im Artikel Map-Leak-Fehler beheben. Der Map Scanner erkennt in VBSP-, VVIS- und VRAD-Logs Ursachen, Folgefehler und passende Lösungswege.
Häufige Fragen
Welchen Maßstab hat eine 3D-Skybox?
Standard ist 1/16. Der Wert 16 steht in der sky_camera und sollte unverändert bleiben, weil vorhandene Skybox-Models auf diesen Maßstab ausgelegt sind. Du skalierst deine Referenz in Hammer entsprechend mit dem Faktor 0.0625.
Wo platziere ich den Skybox-Raum?
An einer freien Stelle abseits der Hauptmap. Der Raum darf die Hauptmap nicht berühren und muss für sich abgedichtet sein. Seine Lage im Editor spielt keine Rolle, entscheidend ist allein die Position der sky_camera relativ zur Kulisse.
Kostet eine 3D-Skybox viel Leistung?
Das hängt vom Inhalt ab. Eine einfache Kulisse aus Displacements und wenigen Models fällt kaum ins Gewicht. Teuer wird es, wenn du viele Models, aufwendige Materialien oder große Wasserflächen hineinsetzt.
Warum sehe ich die 3D-Skybox im Spiel nicht?
Meist fehlt die sky_camera, oder die Flächen der Hauptmap tragen nicht tools/toolsskybox. Prüfe außerdem, ob r_3dsky auf 1 steht.