Hazel Whorley
Level Design

me@hazelwhorley.com

Tutorials

Skybox [UED 3]

Many thanks to Tobias "Murphy" Pimmer (www.unrealedforum.de) for the German translation.

Dieses Tutorial erklärt die Grundzüge einer Skybox und ein paar tiefergehende Effekte. Das Tutorial wurde von Hazel Whorley erstellt und von Tobias "Murphy" Pimmer eher schlecht als recht übersetzt. Wer der englischen Sprache mächtig ist, sollte lieber auf das Original von Hazel Whorley zurückgreifen, welches sich unter folgendem Link findet: Klick mich!.



Was ist eigentlich eine Skybox?

Eine Skybox ist eine Art "Fake Backdrop", und wird dafür verwendet realistische Himmel oder weit entfernte Objekte (z.B. Planeten) darzustellen. Wenn man sich dann in der Map herum bewegt, sieht es so aus, als würde sich der Himmel mit einem bewegen. Es wirkt also so, als wäre der Himmel ewig weit weg, da man sich ihm nie nähern kann. Mit dem Unrealed kann man eine ganze Fülle von Himmelseffekten erzeugen und abhängig davon, wie gut die Skybox später aussieht, kann sie die Atmosphäre einer Map verstärken, oder sie zer- stören. Hier ein paar Beispiele für Skyboxen:

example screenshot
ONS-RedPlanet - Ein roter, nebliger Himmel mit einem Planeten und ein paar Aurora-Effekten.
example screenshot
DM-CBP2-Buliwyf - Diese Skybox ist in Terragen entstanden und im Unrealed wurde ein animierter Fog-Ring hinzugefügt..
example screenshot
CTF-FaceClassic - Diese Skybox hier dreht sich, was dafür sorgt, dass es wirkt als würde das ganze Level im All herum taumeln.
example screenshot
JB-DoomedHeaven-Gold - Ein riesiger Dämon schaut von der Skybox aus in die Map.


Schritt für Schritt zur Skybox

Schritt 1: Die Box
Subtracte einen Cube für die Skybox außerhalb des Levels - Eigentlich kann er jede Größe haben, aber man bleibt bei den Abmessungen am besten bei 2er Potenzen. (z.B. 1024 x 1024 x 1024).

Subtracted cube for skybox

Schritt 2: Die SkyZoneInfo
In die eben erstellte "Skybox" muss eine SkyZoneInfo. Dadurch wird dem Editor klar gemacht, dass dieser Cube die Skybox ist. Sie wird dann später immer dort angezeigt wo Backdrop oder Fake Backdrop ist.
  1. Die SkyZoneInfo findet sich im ActorBrowser unter Info > ZoneInfo > SkyZoneInfo.
  2. Sie muss in die Skybox gesetzt werden indem man dort rechtsklickt und Add SkyZoneInfo Here auswählt.
  3. Bewege die SkyZoneInfo in die Mitte der Skybox. Der Himmel wird später so angezeigt, als würde man von der SkyZoneInfo aus in ihn blicken.
Skybox actor

Schritt 3: Die Texturen
Man kann eine Skybox auf viele Arten erstellen. Hier wird erklärt wie man sie mit sechs nahtlosen Texturen in einem Würfel erstellt. Dazu braucht man eine Textur für jede Himmelsrichtung (Norden, Süden, Westen, Osten, Oben, Unten). Nachdem man sich seine Texturen rausgesucht hat, müssen sie dem Würfel zugewiesen werden. Sollten die Texturen (obwohl sie im TexturBrowser noch passen ausgesehen haben) in der Map verschmiert aussehen wie auf diesem Bild, dann ist das kein Grund zur Beunruhigung. Das wird im nächsten Schritt behoben.

textured skybox

Schritt 3: Texture Alignment
Manche Skyboxtexturen verwenden einen anderen Clamp Modus als normale Texturen. Das verhindert diese weißen Linien an den Kanten des Cubes, die bei normalen Texturen auftreten würden. Der Editor geht aber standartmäßig von normalen Texturen aus, also sehen diese Texturen hier manchmal so verschmiert aus. Und so stellt man sie richtig ein:
Das folgende muss an allen Seiten des Würfels einzeln gemacht werden:

  1. Rechtsklicke auf die Fläche und wähle Alignment > Face.
  2. Dann rechtsklicke sie noch einmal und öffne die Surface Properties. Gehe zum Pan/Rot/Scale Reiter und klicke auf beide Buttons mit der Aufschrift "1" bei "Pan U" und "Pan V".
  3. Wenn die Textur immernoch nicht ganz passt, kannst du das Texture Pan-Tool um sie manuell zurecht zu rücken..
  4. Außerdem muss die Fläche noch auf Unlit gestellt werden. Dazu einfach den Reiter Flags öffnen und das Häkchen bei Unlit aktivieren.
Falls es nicht funktioniert hat, wiederhohlt einfach diese Schritte nochmal!
Das Verschmieren der Texturen kann auch daran liegen, dass die Skybox von BSP-Holes betroffen ist. Falls dem so ist, hilft es meistens sie weiter von der eigentlichen Map wegzuschieben.

aligned skybox textures

Schritt 4: Die Skybox in der Map sichtbar machen
Die Skybox wird jetzt außerhalb des Level angezeigt. Dort wo normalerweise nur diese Schlieren zu sehen sind, (z.b. wenn man aus der Map fällt, oder wenn man in ein BPS-Hole sieht). Diesen "Effekt" nennt man Backdrop. Damit das "Backdrop" (wo jetzt die Skybox zu sehen ist) auch in funktionstüchtigen Maps angezeigt werden kann, muss bei allen Flächen, von denen aus man in den Himmel sehen können soll, in den Surface Properties die Funktion Fake Backdrop unter Flags aktiviert werden. Dieses Häkchen kann man natürlich bei allen Texturen setzen, aber es ist viel übersichtlicher, wenn man alle solchen Flächen mit einer speziellen Textur versieht, damit man auch im Editor immer ganu weiß, wo Himmel ist und wo nicht. Im Beispielbild wurde die Textur wm_textures.Editor.sky verwendet

fake backdrop

Im Editor ist der Backdropeffekt normaler Weise deaktiviert, da man ja (im Gegensatz zum Spiel) recht oft außerhalb des Levels unterwegs ist, und deshalb diese angesprochenen Schlieren stören würden. Jetzt gibts aber keine Schlieren mehr, sondern nur unsere hübsche Skybox, also soll der Effekt wieder aktiviert werden. Also rechtsklicke auf den grauen Balken über dem 3d-Ansichts-Fensterchen und wähle View > Show Backdrop und Rebuilde dann die Map.

fake backdrop viewed from the editor




Sonstige Skybox Effekte und Methoden

Skyboxen sind nicht limitiert auf flache Flächen oder BSP-Holes. Man kann eigentlich alles verwenden was man in der normalen Map auch verwenden kann. StaticMeshes, Emitter, Lichter - Denk dir was aus!

Wolkenschichten
cloud layers 1 cloud layers 2
Diese Skybox aus ONS-Dria verwendet zwei Schichten aus sich bewegenden Wolken (ein Sheet und ein StaticMesh) und einen Fog-Ring. Die Farben bekommen die Wolken durch Lichter. Man kann auch andere StatiMeshes oder Sheets in die Skybox setzen, wie z.B. Planeten, Monde, Raumschiffe, etc.

Fog-Ringe
Wenn in der Map mit Distancefog gearbeitet wird, kann das zu unschönen Effekten führen, wie hier auf dem Bild zu sehen ist:

BR-TwinTombs without fog ring
BR-TwinTombs ohne Fog-Ring.

Zone-Fog (also Distance-Fog durch eine ZoneInfo) wirkt sich nur auf die Zone aus, in der man sich befindet. Da man sich aber nie in der Skybox befindet, gilt der Nebel dort nicht. Zonefog blendet auch alle StaticMeshes aus, die weiter weg sind als man im Nebel sehen kann. Außerdem nehmen sie die Farbe des Nebels an. Die Skybox aber nicht. Diesen schrecklichen Effekten kann man mit einem "Fog-Ring" - ein runder StaticMesh in der Skybox mit der selben Farbe wie der Distance-Fog - vorbeugen.

BR-TwinTombs with fog ring
BR-TwinTombs mit Fog-Ring.

Entweder klaut man sich dazu einen Fog-Ring aus einer bestehenden Map, oder man baut sich einen eigenen indem man eine Textur mit der selben Farbe wie der Nebel erstellt und sie mit einer Alphamap versieht, wie auf dem Bild zu sehen ist.

fog ring

Projektile treffen den "Himmel"
Man schießt also, angenommen, eine Rakete in den Weltraum um zu sehen wie weit sie kommt. Nach ein paar Metern explodiert sie einfach, "als ob sie eine Wand getroffen hätte"...
Die Wände mit der Fake Backdrop Funktion reagieren nämlich immernoch wie Wände, solange kein Limitation Volume davor ist. Man kann verhindern, dass Projektile und/oder der Translocator-Teller durch das Volume kommen.

  1. Baue einen BuilderBrush (der rote Brush, die "Bauform") so, dass er die Wand verdeckt.
  2. Rechtsklicke auf den Volume-Button und wähle LimitationVolume
  3. Schiebe jetzt den BuilderBrush zur Seite, öffne die Properties des Volumes und wähle Limits
  4. Hier kann man einstellen was alles durch darf und was nicht
Alles was man jetzt in den Himmel schießt, verschwindet einfach sobald es das LimiationVolume trifft. Man kann das Volume auch dazu verwenden Leute davon abzuhalten sich mit dem Translocator an bestimmte Punkte zu teleportieren. Es gibt ein Problem, dass LimitationVolume online nicht richtig funktionieren. Hazel Whorley (die eigentliche Verfasserin dieses Tutorials!!!) hat hier eine Anleitung für ein online-taugliches LimitationVolume bereitgestellt. Klick mich!.

Beleuchtung

Man kann ganz normale Lights benutzen um Wolken oder andere Teile der Skybox zu beleuchten. Falls man sich für die Würfel-Skybox entschieden hat, sollte man aber die Texturen auf Unlit setzen, damit sie nahtlos aussehen..

Sunlight Actors
Sunlight actors sind richtungsgebundene Lichter, die die ganze Zone betreffen, in der sie sich befinden. Befinden sie sich in der Skybox, strahlen sie von dort aus in alle Bereiche der Map von denen aus die Skybox zu sehen ist. Man benutzt sie um realistische Sonnenlicht-Effekte zu erzeugen. Das Licht eines SunlightAcotrs strahlt nicht in alle Richtungen wie das eines normalen Lights, sondern nur in die durch den kleinen roten Pfeil markierte Richtung. Das Licht fällt außerdem parallel ein. Da die echte Sonne so weit von der Erde entfernt ist, kommen ihre Sonnenstrahlen bei uns auch nahezu parallel an. Um also den Sunlight-Actor in die Map einzubauen, wähle Actors > Light > Sunlight im ActorBrowser aus. Du kannst den Sunlight Actor jetzt entweder in der Map selbst, oder in der Skybox platzieren. Wie oben angesprochen betrifft er dann entweder die jeweilige Zone, oder die ganze Map. Hier wird vorgeschlagen ihn die Skybox zu setzen, da man ihn dann leicht der (noch nicht leuchtenden) Sonne in der Skybox anpassen kann und es außerdem schön übersichtlich ist. Selbstverständlich kann man auch mehrere SunlightActor verwenden um Licht aus verschiedenen Richtungen mit verschiedenen Farben etc zu simulieren.

Das Corona-Problem
Normale Coronas werden in der Skybox nicht angezeigt, wenn man vom Level aus in sie hineinblickt. Um das zu umgehen, benutzt man kein Licht für die Corona, sondern einen Emitter.

  1. Einen neuen Sprite-Emitter erstellen wo die Corona hin soll
  2. Emitter-Properties öffnen und folgendes umstellen:
  3. Bei Texture > Texture die Coronatextur einstellen.
  4. General > MaxParticles auf "1" setzen.
  5. Time > LifetimeRange (Min and Max) auf "0.5" setzen (Das soll verhindern, dass es eine Verögerung gibt bis die Corona erscheint, wenn man den Emitter im Spiel anschaut. Man kann den Wert auch noch niedriger einstellen.)


Spezialeffekte mit Emittern

Hier sind einige Beispiele für Emitter, die man in die Skybox bauen kann. Einfach einen neuen Sprite-Emitter erstellen und folgendes umstellen:

Für einen Meteoriten Hagel: Wolken/Dunst

StaticMesh- und Texturen-Referenz

UT2004
Textures Static Meshes
AnubisSky.utx - Skybox mit lila Nebelfeldern
Aurorae.utx - Animierte Auroraeffekte
AWGlobal.utx - Wolken (in der Group "skies").
cf_tex01.utx - Planeten Texturen (auf existierenden StaticMeshes).
cf1.utx - Regenbogentextur
Skies.utx - Mond und animierte Wolken
skyline-epic - Ein paar Wolken und Fog-Ringe
SkyRenders.utx - Viele Skyboxtexturen, Wolken und Sonnen
XceptOne.utx - Planten
AntalusStatic.usx - Sky Ring mit blauem Himmel und Horizon mit Bäumen
AS_Weapons_SM.usx - Stadt unter einer Kuppel (bekannt aus AS-RobotFactory)
AW-Bridge.usx - Untexturierte Sky Ringe
AW-RustMeshes.usx - Junkyard Sky Ring und Corona-Mesh.
AWStellarMeshes.usx - Mondstaticmesh und Sternenkugel
AW-Tech.usx - Untexturierte Sky Ringe und Kugeln
BarrenHardware-epic.usx - Helle Fog-Ringe
BenTropicalSM01.usx - Blaue Sky-Kuppel mit grauen/weißen/orangen Wolken
cf_sm01.usx - Planten, Ringe, Atmosphäre, Asteroiden...
Desp-SMS-SM.usx - Atmosphären-Kuppel mit weißen Wolken
forest.usx - Baumreihe
X_AW-Bridge - Texturierte Sky Ringe
X_AW-Natural - Texturierte Sky Kuppel und Ring
X_AW-Tech - Texturierte Sky Ringe
cp-Evilsky1 - Graue Sky Ringe
X_SC_CityPrefabs - Blaue Sky Ringe



Links

Terragen Tutorial

UnrealWiki: Building a Skybox
UnrealWiki: Terragen
UnrealWiki: Rotating Skybox
Outpt.co.uk tutorial

Original English version of this tutorial