Wer kennt es nicht, wir haben eine Map erstellt, deren begehbares Terrain an eine Skybox grenzt, oder durch Zäune und/oder unrealistische Wände von der Außenwelt abgeschnitten ist. Das könnte etwa so aussehen:
Da hier ein normaler Übergang "zum Himmel" nicht gerade schön wirken würde, wird man auf die Idee kommen, hinter dem Zaun noch weiterzubauen.
Dennoch: Bei solchen Szenarien ist es nicht gerade von Vorteil, wenn man einfach außerhalb der Map weiterbaut.
Der Grund dafür ist simpel, es müssen größere Flächen und mehr Leaves berechnet werden.
Hierfür hat sich Valve eine ganz besondere Lösung einfallen lassen.
Die 3D-Skybox
Die 3D-Skybox ist eine im Maßstab verkleinerte Welt, die uns massig Ressourcen spart.
Diese wird dann mithilfe eines Multiplikators jedoch im Spiel auf "Normalgröße" gebracht.
//Anmerkung: Anfänger und Neulinge können die Spoiler ignorieren.
Spoiler für FAQ und oft falsch gemachtes:
Wie schon angeschnitten sollte alles in eine 3D-Skybox gepackt werden, was sich außerhalb der eigentlichen Map befindet. Die 3D-Skybox funktioniert nach einem einfachen Prinzip.
Spoiler für Erklärung des Prinzips:
Kommen wir also zur Durchführung.
Als erstes platziert ihr das Entity "sky_camera" genau in der Mitte der Map. Das bedeutet, dass ihr es an der Koordinate 0:0:0 oder dort, wo die 3 Striche (Rot, Grün, Blau) aufeinandertreffen in die Map setzt.
Nachdem ihr die Kamera platziert habt, habt ihr die Möglichkeit euch Orientierungspunkte herauszugreifen, um die herum ihr euch später eure "3D-Skybox" baut. Am besten nehm ihr dazu Seitenwände und bereits vorhandene Begrenzungen.
Alles was ihr hier als sinnvoll erachtet wählt ihr zusammen mit der sky_camera (strg+Mausklick) aus und copy&pastet es irgendwo ins Void.
Bitte beachtet, dass Models später nicht wirklich weiterhelfen, warum seht ihr später am Beispiel der Zäune, die ich hier aber zu Anschauungszwecken mitkopiert habe.
Nachdem ihr alles kopiert habt, könnt ihr die sky_camera am Punkt 0:0:0 wieder löschen, die neue lasst ihr allerdings dort wo sie ist.
Der nächste Schritt ist, dass wir einen Maßstab wählen, in dem wir die 3D-Skybox verkleinern. Dies ist notwendig, da sich 3D-Skyboxen extrem weit ziehen können, wenn sie 1:1 umgesetzt werden. Außerdem sind bei Skyboxen die Details, wegen der großen Entfernung des Betrachters, nicht so wichtig.
Als Beispiel: Industrieanlagenmodels für die Skybox bei CS:S sind meistens im Maßstab 1:16 gehalten. Die Palmenblätter und Palmen auf Dust2 im Maßstab 1:4.
Ich wähle hier den Maßstab 1:16.
Um den Maßstab korrekt umzusetzen, wählt ihr nun die "sky_camera" aus und tragt bei unter Properties bei "Scale" den Wert "16" ein.
Spoiler für Erklärung der weiteren Eigenschaften der sky_camera:
Anschließend wählt ihr euren vorher kopierten Skyboxanhaltspunkt (alle Mauern und die sky_camera) aus und ändert seine Größe auf ein Sechzehntel.
Dies geht durch das Transformation-Tool (Tools -> Transform; oder Strg+M), das ihr öffnet, "scale" wählt und bei allen Achsenabschnitten euren Multiplikator eintragt. Bei 1:16 wäre das 0.0625 (1/16 = 0.0625). Danach drückt ihr auf OK.
Jetzt seht ihr auf meinem Screenshot, warum Models nicht wirklich Sinn machen:
Sie skalieren sich nicht mit.
Ich lösche sie an dieser Stelle einfach, da sie uns nichtmehr weiterhelfen.
Jetzt könnt ihr rund um eure Wände/Markierungen im Maßstab 1:16 eure kleine Welt aufbauen. Alles wird später dank des Multiplikators in der "sky_camera" 16-fach vergrößert auf die Skybox projeziert.
Wenn ihr Models benutzen wollt, sucht im Modelexplorer am besten nach "sky", dort gibt es eine Vielzahl von Models im Maßstab 1:16.
Beachtet auch, dass ihr die Texturen ebenfalls im Maßstab 1:16 skaliert, da diese sonst sehr gestreckt aussehen.
Seid ihr fertig könnt ihr die Markierungen, die ihr am Anfang kopiert und skaliert habt, wieder löschen. Allerdings müsst ihr die sky_camera übriglassen.
Passt auf, dass in eurer 3D-Skybox kein Leak auftritt, denn alles dort kann, wie in der normalen Map auch, leaken.
Solltet ihr viele Brushes verarbeiten so könnt ihr alle (bis auf die Seitenwände zum Void) zu einem func_detail machen, was die vvis Berechnung immens beschleunigt und in diesem Fall keine FPS-Einbrüche zur Folge hat. Ein zweites light_environment ist nicht notwendig, da die Skybox die Lichtdaten des ersten verwendet.
Jetzt könnt ihr eure Map kompilieren und nachsehen ob alles funktioniert hat.
Sollte alles glattgegangen sein, sollte das Ergebnis so aussehen:
Download Beispielmap.
// FAQs und häufige Probleme bei funktionierender Skybox findet ihr ganz oben im Spoiler unter der Überschrift!
Lesezeichen