De/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 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 und 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 , verwendet.
==Vorteile==
Standard Skyboxen sind einfache 2D , 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 ) ausgestattet werden.
* Jedes Modell, das in der 3D Skybox platziert wird, muss die Skalierung der Skybox kompensieren. Standardmodelle () werden für die 3D Skybox nicht richtig skaliert. Spezielle 1/16 Versionen müssen verwendet werden. Für können diese Props im models/props_skybox-Verzeichnis gefunden werden.
* Sollten keine , 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 im nicht-Skybox Bereich ebenfalls für die 3D Skybox Beleuchtung verwendet wird.
* Das -Entity muss benutzt werden, um die Position der 3D Skybox in Relation zum Level zu definieren.
* 3D Skyboxen haben ihre eigenen, in der -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 enthalten, andernfalls werden Modelle in der 3D Skybox falsch leuchten. Ein light_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 -Entity am Weltnullpunkt (Koordinaten 0, 0, 0), dem Mittelpunkt des Maprasters, hinzufügen. Die 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 -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 , die man erstellt hat, ausgewählt hat. 
# 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. 
# 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 -Entity aus dem normalen Mapbereich löschen, in dem man startete. Wichtig: nur die -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 -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