3D Skybox:de

From Valve Developer Community
Revision as of 21:33, 23 May 2011 by Sacaldur (talk | contribs) (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.…')

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
English Italiano Русский

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.

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.

Bemerkung:
Eine 3D Skybox ist kein Ersatz für eine 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).
Bemerkung:
Portal developers: 3D Skyboxen rendern nicht richtig, wenn sie durch ein Portal hindurch beobachtet werden. - Beispiel.
Bemerkung:
In Left 4 Dead ist die Standardskalierung 1:32, NICHT 1:16 (aber 1:16 funktioniert richtig!)
Bemerkung:
Um Beleuchtungsprobleme zu vermeiden, solte kein Licht benutzt werden (oder irgend etwas anderes ohne Env_ Präfix)

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.

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.

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.

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

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.
  • Unterstützen Materialien mit Shadereffekten, wie normales 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) erzeugt werden.
  • Jedes Modell, das in der 3D Sykybox platziert wird, muss mit einer 1/16 Skalierung erstellt werden. Standardmodelle (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 models/props_skybox-Verzeichnis gefunden werden.
  • Sollten keine info_player_start, NPCs oder Monsters enthalten.
  • haben 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.
  • Die sky_camera-Entity muss benutzt werden, um zu kontrollieren, wie zur nicht-Skybox Weltgeometrie ausgerichtet wird.
  • 3D Skyboxen haben ihre eigenen, in der 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.
  • Eine Map muss ein light_environment in sich haben, 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 die sky_camera-Entity: 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:

  1. Eine sky_camera-Entity am Weltnullpunkt (Koordinaten 0, 0, 0), dem Mittelpunkt des Mapgrasters, 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 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-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, 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, die man erstellt hat, ausgewählt hat.
    Bemerkung:
    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.
  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 an ist. Das Symbol ähnelt <tl>. Das wird die Texturen mitsamt der Geometrie schrumpfen.
  6. 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. OKanklicken.
    Bemerkung:
    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. 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.
  8. 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 Schritts (mehrere multiple 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 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 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 als das tools\toolsskybox 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.
  11. Die gesamte Referenzgeometrie entfernen außer die 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.
  12. Die Originale Map benötigt noch das tools\toolsskybox Material woimmer der Himmel zu sehen sein soll. Es wird jetzt die 3D und die 2D Skybox (was es vorher tat) zeigen.

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 Skybox (2D)Skybox (3D)HDR SkiesSkybox with TerragenSkybox with Terragen - AdvancedList of skies
Terrain and displacement mapping DisplacementsHoles in displacementsDigital Elevation Models