3D Skybox
Eine 3D Skybox kann eine eindrucksvolle Ergänzung der visuellen Erscheinung eines Levels darstellen. Die 3D Skybox ist ein extra vom Leveldesigner konstruierter Levelbereich, der außerhalb der Grenzen des spielbaren Bereichs der Map liegt. Der Client rendert alle leaves in der 3D Skybox seperat und mit einer eigenen Projektionsmatrize. Dies ermöglicht den Eindruck eines viel größeren Levels, ohne dabei unnötig Resourcen zu verschwenden. 3D Skyboxen sind nicht interaktiv – der Spieler und andere Entities können den Bereich der 3D Skybox nicht betreten.
In der 3D Skybox können Brushes und Models standardmäßig wie im normalen Level genutzt werden. Nahtlohse Übergänge der Levelgeometrie zu der 3D Skybox sind durchaus möglich und werden in vielen Maps offizieller Source Spiele, wie Counter-Strike: Source , verwendet.
Vorteile
Standard Skyboxen sind einfache 2D Texturen , die so auf einen Würfel abgebildet werden, dass sie das Level umrunden. 3D Skyboxen ermöglichen eine Erweiterung der 2D Skybox, da sie mit Hilfe normaler Brushgeometrie und Entities erstellet werden und relativ zur absoluten Position des Spielers im eigentlichen Level gerendert werden. Weiterhin wird dadurch die Nutzung von Parallaxen in der Skybox möglich.
Der Hauptvorteil der Benutzung von 3D Skyboxen ist, dass sie dem Leveldesigner erlaubt, eine Map viel größer aussehen zu lassen, als es mit der standard Weltgeometrie möglich ist. Die größte Welt, die ohne eine 3D-Skybox erzeugt werden kann, ist 32768 Einheiten in jede Richtung groß. Unter Verwendung einer 3D Skybox kann die Map um das bis zu 16-fache erweitert werden.
Da 3D Skyboxen seperat gerendert werden, sind sie nicht an die selbe maximale Zeichendistanz, wie sie im spielbaren Bereich definiert ist, gebunden.
Basischarakteristiken
3D Skyboxen haben folgende Charakteristiken:
- Werden (standardmäßig) mit 1/16 Skalierung im Hammer Editor erzeugt und dann mit der 16-fachen Größe von der Engine gerendert, um zur Weltgeometrie zu passen.
- Unterstützen Materialien wie sie im spielbaren Bereich verwendet werden können, dazu zählen normal mapping, Wasser, Umgebungsmapping, Proxys etc.
- Sind nicht-interaktiv – Spieler und andere Welt-Entities können 3D Skyboxen nicht betreten. Die 3D Skybox ist nur eine visuelle Erweiterung der Map.
- Können mit Brushes, Displacements, statischen oder dynamischen Props, Licht, Brush-Entities und Point Entities (wie env_sprite ) ausgestattet werden.
- Jedes Modell, das in der 3D Skybox platziert wird, muss die Skalierung der Skybox kompensieren. Standardmodelle (Props ) werden für die 3D Skybox nicht richtig skaliert. Spezielle 1/16 Versionen müssen verwendet werden. Für Half-Life 2 können diese Props im
models/props_skybox
-Verzeichnis gefunden werden. - Sollten keine info_player_start , NPCs oder Monsters enthalten.
- haben in Relation zum spielbaren Bereich kleinere Lightmap- und Texturauflösungen aufgrund der Skalierung, mit der sie erstellt werden.
- Müssen ihre eigene Lichtquelle haben, obwohl ein light_environment im nicht-Skybox Bereich ebenfalls für die 3D Skybox Beleuchtung verwendet wird.
- Das sky_camera -Entity muss benutzt werden, um die Position der 3D Skybox in Relation zum Level zu definieren.
- 3D Skyboxen haben ihre eigenen, in der sky_camera -Entity einstellbaren, Nebelparameter.
- Geometrie in der 3D Skybox kann nicht durch Leaves optimiert werden. Deshalb sollte man kostspielige Materialien mit Bedacht verwenden.
- Eine Map muss ein
light_environment
enthalten, andernfalls werden Modelle in der 3D Skybox falsch leuchten. Einlight_environment
in dem nicht-Skybox Teil der Map hebt den Bedarf eines in der 3D Skybox auf.
Konstruktion von 3D Skyboxen
- Eine Anmerkung über das folgende Verfahren: Point-Entities werden nicht runterskaliert.
- Eine sky_camera -Entity am Weltnullpunkt (Koordinaten 0, 0, 0), dem Mittelpunkt des Maprasters, hinzufügen. Die sky_camera ist ein Referenzpunkt, der vom Renderer genutzt wird, um die 3D Skybox an der Hauptmap auszurichten. In anderen Worten agiert es als Markierung, die dem Renderer mitteilt, wie sich der 3D Skyboxnullpunkt und der Weltnullpunkt zueinander verhalten. Man kann sich den Prozess so vorstellen, als würde man die 3D Skyboxgeometrie auswählen und dann die sky_camera -Entity in dieser Auswahl mit dem Weltnullpunkt (0,0,0) ausrichten. Die Geometrie wird zurück zur Position in der Welt übersetzt. Das ist das gleiche Konzept, wie das Rendern der Skybox in der Engine.
- Einige verschiedene Teile des Levels, die man für eine Richtlinie zur Skalierung und Positionierung in der 3D Skybox verwenden kann, auswählen. Übliche Elemente zum Auswählen für diesen Zweck würden einige große Strukturen sein, wie Wände, Klippen, Berge etc. Das definiert die Grenzen der Map. Man muss sicher gehen, dass man die sky_camera , die man erstellt hat, ausgewählt hat. Hinweis:Es ist wichtig nicht irgendwelche Entities sondern nur Brushes auszuwählen. Modelle können nicht als Referenzgeometrie verwendet werden, weil Modelle im Hammer Editor nicht runterskaliert werden können.
- Copy aus dem Edit Menü auswählen oder Cstrg+C drücken.
- Paste Special aus dem Edit Menü auswählen. Die Number of copies to paste muss auf 1 und alle anderen Werte auf 0 gesetzt werden. OK drücken. Das erstellt eine Kopie der ausgewählten Geometrie.
- Scaling Texture Lock in der Toolbar anschalten, wenn es noch nicht aktiviert ist. Das Symbol ähnelt <tl>. Dadurch werden die Texturen mitsamt der Geometrie geschrumpft.
- Geometrie ausgewählt lassen und Transform aus dem Tools Menü auswählen. Den Radiobutton zum Skalieren auswählen. Den Wert .0625 für X, Y und Z eingeben. Das ist das dezimale Äquivalent zu 1/16 – die Skalierung der 3D Skybox. OKanklicken. Hinweis:Wenn man Texturen auf der Geometrie entsprechend skalieren will, muss man sicher gehen, dass Texture Lock aktiviert ist.
- Jetzt hat man eine 1/16 Skalierung der Referenzgeometrie. Nun muss es zu einem anderem Teil der Karte gezogen (bewegt) werden, wo die 3D Skybox erstellt werden soll. Es ist egal, wo das ist, solange es keinen Teil der Haupt-Levelgeometrie berührt.
- Die sky_camera -Entity aus dem normalen Mapbereich löschen, in dem man startete. Wichtig: nur die sky_camera -Entity in der 3D Skybox sollte auf der Map bleiben. In L4D2 (und möglicherweise anderen Source Spielen) wird das Vergessen dieses Schrittes (mehrere sky_cameras auf der Map zu haben) darin resultieren, dass alle Navigationsbereiche blockiert sind.
- Die 3D Skybox-Geometrie um die Referenzgeometrie, die als Führung verwendend, bauen. Man kann Skyboxgeometrie erstellen, die die Referenzgeometrie nahtlos berührt. Man kann Brushes und Displacements verwenden. Modelle können auch platziert werden, da die 3D Skybox aber eine 1/16 Skalierung besitzt, muss jedes Modell ebenfalls eine 1/16 Skalierung besitzen. Das Modell
hl2\models\props_skybox\coast01.mdl
ist ein Beispielmodell mit 1/16 Skalierung. Die Kamera in Höhe des Spielers zu platzieren verschafft ein gutes Gefühl dafür, wie die 3D Skybox gerendert aussehen wird. - Einen hohlen Brush Würfel um die Referenzgeometrie hinzufügen und das
tools\toolsskybox
Material zuweisen. Der 3D Skybox-Bereich muss mit diesem Würfeln versiegelt werden. - Die gesamte Referenzgeometrie außer die sky_camera -Entity entfernen. Es funktioniert vielleicht am besten, wenn die Referenzgeometrie in ihre eigene Visgroup hinzugefügt wird, sodass sie an- und ausgestellt oder ersetzt werden kann. Sie muss vor dem Kompilieren ausgestellt werden oder wird in die 3D Skybox kompiliert.
- Die Originale Map benötigt noch das
tools\toolsskybox
Material wo der Himmel zu sehen seien soll. Es werden jetzt die 3D und die 2D Skybox gerendert.
Testen
Wenn die 3D Skybox richtig versiegelt wurde, kann die Map kompiliert und die 3D Skybox in der Engine überprüft werden.
Beispiele
- Siehe
sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf
für eine Demonstration der 3D Skybox. - An example of extending draw distances with 3D skyboxes (kommentiert)
- 3D Skybox Video Tutorial
- HL2 sample VMF for 3D Skybox water/world
Environment articles: | |
---|---|
Skies and environment maps | Skybox (2D) • Skybox (3D) • HDR Skies • Skybox with Terragen • Skybox with Terragen - Advanced • List of skies |
Terrain and displacement mapping | Displacements • Creating Holes in Displacements • Digital Elevation Models • Creating custom terrain with Worldmachine |
Environment articles: | |
---|---|
Skies and environment maps | Skybox (2D) • Skybox (3D) • HDR Skies • Skybox with Terragen • Skybox with Terragen - Advanced • List of skies |
Terrain and displacement mapping | Displacements • Creating Holes in Displacements • Digital Elevation Models • Creating custom terrain with Worldmachine |