De/3D Skybox: Difference between revisions

From Valve Developer Community
< De
Jump to navigation Jump to search
(Created page with '{{otherlang2 |ru=3D Skybox:ru |it=3D Skybox:it |en=3D Skybox }} Eine ''3D Skybox'' hinzuzufügen, kann eine ausdrucksvolle Ergänzun der visuellen Erscheigung eines Levels sein.…')
 
m (Multipage removal)
 
(19 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar|title = 3D Skybox}}
|ru=3D Skybox:ru
{{subpage|[[Skybox Basics]]}}
|it=3D Skybox:it
|en=3D Skybox
}}


Eine ''3D Skybox'' hinzuzufügen, kann eine ausdrucksvolle Ergänzun der visuellen Erscheigung eines Levels sein. Die 3D skybox ist ein vom Leveldesigner konstruierter extra Levelbereich, das außerhalb der Grenzen des spielbaren Bereichs der Map ist. Wenn die Map geladen wird, vergrößert Source die Objekte des 3D Skybox-Gebitets und platziert sie außerhalb der Granzen des aktuellen Levels zwischen der [skybox:de|Skybox] und dem Spieler. Das wird gemacht, um das Aussehen einer viel größeren Welt außerhalb des Levels zu erzeugen, ohne zu verschwenderisch mit den Ressourcen umzugehen, durch die (standardmäßige) 1:16 Skalierung. 3D Skyboxen sind nicht interaktiv – der Spieler und andere Entities können nicht in den Bereich der 3D Skybox gehen.
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 {{L|Visleaf|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.


3D Skybox-Geometrie können sich kaum von normaler Levelgeometrie unterscheiden. Nahtlohse Übergänge der Levelgeometrie in die 3D Skybox sind durchaus möglich und werden in vielen Maps offizieller Source Spiele, wie [[Counter-Strike: Source]], verwendet.
In der 3D Skybox können {{L|Brush|Brushes}} und {{L|Model|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 {{L|Counter-Strike: Source}}, verwendet.


{{note:de|Eine 3D Skybox ist kein Ersatz für eine [[2D skybox:de|2D Skybox]]. Die 2D Skybox ist immer im Hintergrund der 3D Skybox. Um die Standard 2D Skybox zu editieren oder zu ändern, siehe [[Skybox (2D):de|Skybox (2D)]].}}
{{Note|Eine 3D Skybox ist kein Ersatz für eine {{L|2D skybox|2D Skybox}}. Die 2D Skybox ist immer im Hintergrund der 3D Skybox. Um die standard 2D Skybox zu editieren oder zu ändern siehe {{L|Skybox (2D)}}.}}


{{note:de|Portal developers:  ''3D Skyboxen rendern nicht richtig, wenn sie durch ein Portal hindurch beobachtet werden.'' - [[Image:3dSkyboxProb.png|30 px|Beispiel]].}}
{{Note|Portal developers:  ''3D Skyboxen rendern nicht richtig, wenn sie durch ein Portal hindurch beobachtet werden.'' - [[File:3dSkyboxProb.png|30 px|Beispiel]].}}


{{note:de|In Left 4 Dead ist die Standardskalierung 1:32, NICHT 1:16 (aber 1:16 funktioniert richtig!)}}
{{Note|In Left 4 Dead ist die Standardskalierung 1:32, NICHT 1:16 (aber 1:16 funktioniert richtig!)}}


{{note:de|Um Beleuchtungsprobleme zu vermeiden, solte kein [[light:de|Licht]] benutzt werden (oder irgend etwas anderes ohne Env_ Präfix)}}
{{Note|Um Beleuchtungsprobleme zu vermeiden, sollte kein {{L|light|Licht}} benutzt werden (oder andere Lichter ohne das Env_Präfix)}}


==Vorteile==
==Vorteile==


Standard Skyboxen sind einfache 2D Bilder, die so auf einen Würfel abgebildet werden, dass sie das Level umrunden. 3D Skyboxen sind vollständige 3D Geometrie und haben eine richtige Parallaxe, wenn der Spieler sich durch das Level bewegt. Da sie in Echtzeit gerendert werden, werden sie mit der Grafikkartenauflösung skaliert und unterstützen deshalb Echtzeit-Shadereffekte, die auf 2D Skyboxen nicht möglich sind.
Standard Skyboxen sind einfache 2D {{L|Texture|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 es 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 gemacht weren kann, ist 32768 Einheiten in jede Richtung groß. Unter Verwendung einer 3D Skybox kann die Map um das bis zu 16-fache erweitert werden.
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.


Maps dieser Größe sind möglich, weil 3D Skyboxen im Hammer Editor mit einer 1/16 Skalierung der Standardmap erstellt werden. Zur Laufzeit skaliert die Engine sie zurück, um zur Skalierung der restlichen Karte zu passen. Das spart nicht nur Platz in den Editoransichten, es ist auch einfacher, dies zu kompilieren und zu rendern.
Da 3D Skyboxen seperat gerendert werden, sind sie nicht an die selbe maximale Zeichendistanz, wie sie im spielbaren Bereich definiert ist, gebunden.
 
Aufgrund ihrer Skalierung haben 3D Skyboxen weit geringere Lightmap- und Texturauflösungen. Das macht 3D Skybox-Geometrie Performance-sparsamer als Standard-Weltgeometrie.
 
3D Skyboxen können benutzt werden, um Zeichenweitenbegrenzungen zu überwinden, wenn eine detailarme Skybox identisch zur Hauptmap erstllt wird. Ein Mod-Team, welches das machen will, sollte Code entwickeln, um den Wechsel zwischen Mapversionen zu erleichtern.


===Basischarakteristiken===
===Basischarakteristiken===
Line 33: Line 26:
3D Skyboxen haben folgende Charakteristiken:
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 zu Weltgeometrie zu passen.
* 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 mit Shadereffekten, wie normales mapping, Wasser, Umgebungsmapping, Proxys etc.
* 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.
* 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:de|env_sprite]]) erzeugt werden.
* Können mit Brushes, Displacements, statischen oder dynamischen Props, Licht, Brush-Entities und Point Entities (wie {{L|env_sprite}}) ausgestattet werden.
* Jedes Modell, das in der 3D Sykybox platziert wird, muss mit einer 1/16 Skalierung erstellt werden. Standardmodelle ([[Prop_Types_Overview:de|Props]]) werden für die 3D Skybox nicht richtig skaliert. Spezielle 1/16 Skalierungsversionen müssen verwendet werden. Für [[Half-Life 2]] können diese Props im <code>models/props_skybox</code>-Verzeichnis gefunden werden.
* Jedes Modell, das in der 3D Skybox platziert wird, muss die Skalierung der Skybox kompensieren. Standardmodelle ({{L|Prop_Types_Overview|Props}}) werden für die 3D Skybox nicht richtig skaliert. Spezielle 1/16 Versionen müssen verwendet werden. Für {{L|Half-Life 2}} können diese Props im <code>models/props_skybox</code>-Verzeichnis gefunden werden.
* Sollten keine [[info_player_start:de|info_player_start]], NPCs oder Monsters enthalten.
* Sollten keine {{L|info_player_start}}, NPCs oder Monsters enthalten.
* haben kleinere Lightmap- und Texturauflösungen aufgrund der Skalierung, mit der sie erstellt werden.
* 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:de|light_environment]] im nicht-Skybox Bereich ebenfalls für die 3D Skybox Beleuchtung verwendet wird.
* Müssen ihre eigene Lichtquelle haben, obwohl ein {{L|light_environment}} im nicht-Skybox Bereich ebenfalls für die 3D Skybox Beleuchtung verwendet wird.
* Die [[sky_camera:de|sky_camera]]-Entity muss benutzt werden, um zu kontrollieren, wie zur nicht-Skybox Weltgeometrie ausgerichtet wird.
* Das {{L|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:de|sky_camera]]-Entity einstellbaren Nebelparameter.
* 3D Skyboxen haben ihre eigenen, in der {{L|sky_camera}}-Entity einstellbaren, Nebelparameter.
* Geometrie in der 3D Skybox schließen nicht den Rest der Levelgeometrie ab. Viel detaillierte Brush-Geometrie, speziell lichtdurchlässige Materialien, zur 3D Skybox hinzuzufügen, kann die Performance stark beeinflussen.
* Geometrie in der 3D Skybox kann nicht durch Leaves optimiert werden. Deshalb sollte man kostspielige Materialien mit Bedacht verwenden.
* Eine Map muss ein <code>[[light_environment:de|light_environment]]</code> in sich haben, andernfalls werden Modelle in der 3D Skybox falsch leuchten. Ein <code>light_environment</code> in dem nicht-Skybox Teil der Map hebt den Bedarf eines in der 3D Skybox auf.
* Eine Map muss ein <code>{{L|light_environment}}</code> enthalten, andernfalls werden Modelle in der 3D Skybox falsch leuchten. Ein <code>light_environment</code> in dem nicht-Skybox Teil der Map hebt den Bedarf eines in der 3D Skybox auf.


==Konstruktion von 3D Skyboxen==
==Konstruktion von 3D Skyboxen==
* Eine Anmerkung über die [[sky_camera:de|sky_camera]]-Entity: Point-Entities werden nicht runterskaliert.
* Eine Anmerkung über das folgende Verfahren: Point-Entities werden nicht runterskaliert.
 
Der effizienteste Weg, eine 3D Skybox zu erzeugen, die zur aktuellen Map passt, ist es, ein wenig Geometrie auss dem Hauptteil des Levels zu verwenden. Man kann diesen Schritten nach dem Erstellen seiner Haupt-Level-Geometrie folgen:


# Eine [[sky_camera:de|sky_camera]]-Entity am Weltnullpunkt (Koordinaten 0, 0, 0), dem Mittelpunkt des Mapgrasters, hinzufügen. Die [[sky_camera:de|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 sagt, wie der 3D Skyboxnullpunkt und der Weltnullpunkt sich zueinander verhalten. Man kann sich den Prozess so vorstellen, als würde man die 3D Skyboxgeometrie auswählen und dann die [[sky_camera:de|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.
# Eine {{L|sky_camera}}-Entity am Weltnullpunkt (Koordinaten 0, 0, 0), dem Mittelpunkt des Maprasters, hinzufügen. Die {{L|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 {{L|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, für die man 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 Ecke der Map. Man muss sicher gehen, dass man die [[sky_camera:de|sky_camera]], die man erstellt hat, ausgewählt hat. {{note:de|Es ist wichtig, '''nicht''' irgendwlche Entitymodelle sondern nur Brushes auszuwählen. Modelle können nicht als Referenzgeometrie verwendet werden, weil Modelle im Hammer Editor nicht runterskaliert werden können.}}
# 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 {{L|sky_camera}}, die man erstellt hat, ausgewählt hat. {{Note|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.
# '''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.
# '''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 an ist. Das Symbol ähnelt <tl>. Das wird die Texturen mitsamt der Geometrie schrumpfen.
# '''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 '''Slalieren''' 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. '''OK'''anklicken. {{note:de|Wenn man Texturen auf der Geometrie entsprechend skalieren will, muss man sicher gehen, dass Texture Lock aktiviert ist.}}
# 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. '''OK'''anklicken. {{Note|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. Jetzt muss es zu einem anderem Teil der Kart gezogen (bewegt) werden, wo die 3D Skybox gebaut werden soll. Es ist egal, wo das ist, solange es keinen Teil der Haupt-Levelgeometrie berührt.
# 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:de|sky_camera]]-Entity aus dem normalen Mapbereich löschen, in dem man startete. ''Wichtig'': nur die [[sky_camera:de|sky_camera]]-Entity in der 3D skybox sollte auf der Map bleiben. In L4D2 (und möglicherweise anderen Source Spielen) wird das vergessen dieses Schritts (mehrere multiple sky_cameras auf der Map zu haben) darin resultieren, dass alle Navigationsbereiche blockiert sind.
# Die {{L|sky_camera}}-Entity aus dem normalen Mapbereich löschen, in dem man startete. ''Wichtig'': nur die {{L|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 bauen, die die Referenzgeometrie nahtlos berührt. Man kann Brush und Displacement Geometrie 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 <code>hl2\models\props_skybox\coast01.mdl</code> 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.
# 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 <code>hl2\models\props_skybox\coast01.mdl</code> 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 als das <code>tools\toolsskybox</code> Material zuweisen. Die Standard 2D Würfel Skybox wird auf diesem Würfel erscheinen. Der 3D Skybox-Bereich muss mit diesen Würfeln versiegelt werden.
# Einen hohlen Brush Würfel um die Referenzgeometrie hinzufügen und das <code>tools\toolsskybox</code> Material zuweisen. Der 3D Skybox-Bereich muss mit diesem Würfeln versiegelt werden.
# Die gesamte Referenzgeometrie entfernen '''außer''' die [[sky_camera:de|sky_camera]]-Entity. Es funktioniert vielleicht am besten, wenn die Referenzgeometrie in ihre eigene Visgroup hinzugefügt wird, sodass es an und aus gestellt und ersetzt werden kann. Es muss vor dem Kompilieren aus gestellt werden oder es wird in die 3D Skybox kompiliert.
# Die gesamte Referenzgeometrie '''außer''' die {{L|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 <code>tools\toolsskybox</code> Material woimmer der Himmel zu sehen sein soll. Es wird jetzt die 3D und die 2D Skybox (was es vorher tat) zeigen.
# Die Originale Map benötigt noch das <code>tools\toolsskybox</code> Material wo der Himmel zu sehen seien soll. Es werden jetzt die 3D und die 2D Skybox gerendert.


==Testen==
==Testen==


Wenn die 3D Skybox richtig versiegelt wurde, kann die Map kompiliert und die 3D skybox in der Engine überprüft werden.
Wenn die 3D Skybox richtig versiegelt wurde, kann die Map kompiliert und die 3D Skybox in der Engine überprüft werden.


== Beispiele ==
== Beispiele ==
* Siehe <code>sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf</code> for an example of a 3D skybox.
* Siehe <code>sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf</code> für eine Demonstration der 3D Skybox.
* [http://www.steamreview.org/external/vdc/3dskybox/3dskybox_drawdistextend.zip An example of extending draw distances with 3D skyboxes] (kommentiert)
* [http://www.steamreview.org/external/vdc/3dskybox/3dskybox_drawdistextend.zip An example of extending draw distances with 3D skyboxes] (kommentiert)
* [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/akg_3Dskybox01.zip 3D Skybox Video Tutorial]
* [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/akg_3Dskybox01.zip 3D Skybox Video Tutorial]
* [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/wiseEscape.zip HL2 sample VMF for 3D Skybox water/world]
* [http://www.type3studios.com/downloads/tutorials/SdkNutsTutorials/wiseEscape.zip HL2 sample VMF for 3D Skybox water/world]


{{envart}}


[[Category:Level Design:de]]
{{envart}}{{envart}}
[[Category:Glossary:de]]
{{ACategory|Level Design}}{{ACategory|Tutorials}}{{ACategory|Skybox}}{{ACategory|Source}}
[[Category:Tutorials:de]]
[[Category:Skybox:de]]
[[Category:German]]

Latest revision as of 03:54, 12 July 2024

English (en)Deutsch (de)Italiano (it)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

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(en) 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(en) und Models(en) 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(en), verwendet.

Note.pngBemerkung:Eine 3D Skybox ist kein Ersatz für eine 2D Skybox(en). Die 2D Skybox ist immer im Hintergrund der 3D Skybox. Um die standard 2D Skybox zu editieren oder zu ändern siehe Skybox (2D)(en).
Note.pngBemerkung:Portal developers: 3D Skyboxen rendern nicht richtig, wenn sie durch ein Portal hindurch beobachtet werden. - Beispiel.
Note.pngBemerkung:In Left 4 Dead ist die Standardskalierung 1:32, NICHT 1:16 (aber 1:16 funktioniert richtig!)
Note.pngBemerkung:Um Beleuchtungsprobleme zu vermeiden, sollte kein Licht(en) benutzt werden (oder andere Lichter ohne das Env_Präfix)

Vorteile

Standard Skyboxen sind einfache 2D Texturen(en), 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(en)) ausgestattet werden.
  • Jedes Modell, das in der 3D Skybox platziert wird, muss die Skalierung der Skybox kompensieren. Standardmodelle (Props(en)) werden für die 3D Skybox nicht richtig skaliert. Spezielle 1/16 Versionen müssen verwendet werden. Für Half-Life 2(en) können diese Props im models/props_skybox-Verzeichnis gefunden werden.
  • Sollten keine info_player_start(en), 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(en) im nicht-Skybox Bereich ebenfalls für die 3D Skybox Beleuchtung verwendet wird.
  • Das sky_camera(en)-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(en)-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(en) 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.
  1. Eine sky_camera(en)-Entity am Weltnullpunkt (Koordinaten 0, 0, 0), dem Mittelpunkt des Maprasters, hinzufügen. Die sky_camera(en) 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(en)-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.
  2. 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(en), die man erstellt hat, ausgewählt hat.
    Note.pngBemerkung: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.
  3. Copy aus dem Edit Menü auswählen oder Cstrg+C drücken.
  4. 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.
  5. 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.
  6. 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.
    Note.pngBemerkung:Wenn man Texturen auf der Geometrie entsprechend skalieren will, muss man sicher gehen, dass Texture Lock aktiviert ist.
  7. 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.
  8. Die sky_camera(en)-Entity aus dem normalen Mapbereich löschen, in dem man startete. Wichtig: nur die sky_camera(en)-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.
  9. 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.
  10. 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.
  11. Die gesamte Referenzgeometrie außer die sky_camera(en)-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.
  12. 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


Environment articles:
Skies and environment maps Source Source: Skybox (2D)Skybox (3D)HDR SkiesSkybox with TerragenSkybox with Terragen - AdvancedList of skies


Source 2 Source 2: Skybox (3D)

Terrain and displacement mapping DisplacementsCreating Holes in DisplacementsDigital Elevation ModelsCreating custom terrain with Worldmachine
Environment articles:
Skies and environment maps Source Source: Skybox (2D)Skybox (3D)HDR SkiesSkybox with TerragenSkybox with Terragen - AdvancedList of skies


Source 2 Source 2: Skybox (3D)

Terrain and displacement mapping DisplacementsCreating Holes in DisplacementsDigital Elevation ModelsCreating custom terrain with Worldmachine