Mapping & Hammer

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_camera entspricht 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

  1. Planen: Lege fest, was nur Kulisse ist: Gebirge, Häuserzeilen in der Ferne, Wasserflächen, Wald.
  2. 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.
  3. Skalieren: Markiere die gesamte Kopie und skaliere sie über Tools → Transform (Strg+M) mit dem Faktor 0.0625. Das entspricht 1/16.
  4. Verschieben: Schiebe die verkleinerte Referenz an eine freie Stelle abseits der Hauptmap.
  5. Kamera setzen: Platziere die sky_camera genau auf dem Markierungs-Brush. Der Wert für den Maßstab in der Entity bleibt beim Standard 16.
  6. Kulisse bauen: Baue die ferne Landschaft um die Mini-Referenz herum, etwa mit Displacements, einfachen Brushes und wenigen Models.
  7. Abdichten: Umschließe den Skybox-Raum vollständig mit Brushes, die tools/toolsskybox tragen. Er muss dicht sein wie jeder andere Raum.
  8. Referenz entfernen: Lösche die Mini-Kopie der Hauptmap oder verschiebe sie in eine ausgeblendete VisGroup. Ausgeblendete Objekte werden nicht mitkompiliert.
  9. Hauptmap vorbereiten: Überall, wo die Ferne sichtbar sein soll, brauchen die Flächen tools/toolsskybox. Mit tools/toolsnodraw bleibt die Skybox unsichtbar.
  10. Testen: Kompiliere die Map und prüfe im Spiel die Übergänge. Mit r_3dsky 0 und r_3dsky 1 blendest 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_camera deshalb 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_controller und 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 1 ist die sichere Wahl.

Weitere Stellschrauben findest du im Artikel GMod-Map optimieren.

Typische Fehler

SymptomUrsacheLösung
3D-Skybox ist nicht zu sehenKeine sky_camera, oder die Hauptmap nutzt an den Rändern nicht tools/toolsskyboxEntity setzen, Texturen prüfen, r_3dsky kontrollieren
Kulisse schwebt oder ist seitlich versetztsky_camera sitzt nicht auf dem skalierten Ursprung, oder der Faktor stimmt nichtAusrichtung mit Referenz und Markierung wiederholen
Leak nach dem EinbauDer Skybox-Raum ist nicht dichtRaum vollständig mit Welt-Brushes schließen
Harte Kante am HorizontNebel von sky_camera und env_fog_controller weicht abFarbe und Distanzen angleichen
Models in der Ferne riesigNormales Model statt Skybox-VarianteKleines Model verwenden
Mini-Landschaft in der Hauptmap sichtbarSkybox-Raum berührt die Hauptmap oder ist zu ihr offenRaum 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.