Cubemaps

In Half-Life 2 benötigen viele Materialien Informationen über die Reflexionen, um richtig zu funktionieren. Das geschieht mithilfe einer Cubemap. Durch diese Cubemap wird eine 360°-Ansicht der Umgebung gemacht, welche dann auf die Materialien übertragen werden. Somit können sie die Umgebung genaustens reflektieren. Auch Npc's oder andere Entities werden von der Cubemap beeinflusst.

Erstellen einer Cubemap

In Hammer gibt es ein Entity namens env_cubemap. Dieses werden wir für die Cubemap benötigen. Da es unterschiedliche Anwendungsmöglichkeiten gibt, musst du bei den unterschiedlichen Möglichkeiten andere Abstände zwischen den Objekten wählen:

  • Wenn du die Cubemap nur für die Materialien verwendest, muss sie mindestens 16 Units weg von der Fläche weg sein.
  • Wenn du die Cubemap für Npc's oder andere Entities verwendest, muss sie ungefähr 64 Units überhalb des Bodens angebracht werden, weil das am ehesten an die Augenhöhe des Spielers herankommt.

Wenn du alle deine Cubemaps gesetzt hast, musst du nurnoch kompilieren und deine Map starten. Wenn sie fertig geladen wurde, gibst du in der Console buildcubemaps ein. Je nachdem, wie schnell deine Grafikkarte ist, geht der laufende Prozess länger oder kürzer. Das kann manchmal nur mehrere Sekunden oder aber Minuten dauern, das hängt davon ab, wie komplex deine Map gebaut ist. Nachdem der Prozess durchgelaufen ist, musst du noch deine Map neustarten, dann sind alle Cubemaps funktionstüchtig.

Cubemap: Wo und wieviele?

  • Etwa alle 256 Units sollte man eine Cubemap setzen (als Grundregel).
  • Stark reflektierende Oberflächen wie Fenster oder Wasser sollten eine eigenen Cubemap zugewiesen bekommen.
  • Cubemaps enger als 64 Units zu setzen macht nur in extremen Ausnahmefällen Sinn.

Ansonsten setzt man sie dort, wo ein Unterschied in der Umgebung eine solche erfordert. Das bedeutet: Cubemaps bilden quasi einen Schnappschuss der Umgebung und dieser wird dann als Spiegelung verwendet. Deswegen sollte die Cubemap-Dichte vor allem an Grenzen, wo sich die Umwelt stark verändert erhöht sein:

  • Beispielsweise an Tunneleingängen, wo das Licht außen von vielen Seiten, innen aber nur vom Eingang her kommt.
  • Generell an Grenzen, wo sich die Lichtverhältnisse ändern sollte nicht nur jeder Bereich eine eigene Cubemap haben, sondern auch der „Grenzbereich“ (zB in einer Tür zwischen 2 Räumen)

Was für Lichtverhältnisse gilt bezieht sich nicht ausschließlich auf die gesetzten Lights, sondern auch auf die allgemeine Farbgebung der Texturen in der Umgebung.

  • Wenn man im Extremfall einen Bereich mit Rötlichen Texturen und daneben einen mit blauen Texturen hat, die aber beide mit weißem Licht beleuchtet sind, setzt man Extracubemap.
  • Schließlich sollte man auch bei Architektonischen Gegebenheiten ein Extracubemap für einen Grenzbereich zwischen 2 Arten von Umgebungen setzen. Zum Beispiel sollte ein Enger Gang, der in einen Raum Mündet, der sonst ähnlich Texturiert und beleuchtet ist, trotzdem eine Cubemap am Türdurchgang haben, sowie je mindestens eine im Raum und im Gang selbst.

Wenn einer dieser 3 Aspekte zutrifft, sollte man eine Cubemap spendieren.

Andererseits kann man die Cubemapdichte zu performancezwecken verringern, wenn man ein großes Außenareal hat, und die nächste Oberfläche mehr als 1024 Untis (Boden ausgenommen!) entfernt ist.

Immer dran Denken: Cubemaps werden nicht nur auf Oberflächen im Level dargestellt, sondern auf allen Polygonen dargestellt, auf denen ein Material mit einer Specularmap (=spiegelnd) liegt. Das können Brushes und alle Arten von Modellen sein, also auch Spieler-Models und Waffen.

Überprüfen der Cubemaps

Wenn du dir nicht sicher bist, ob die Cubemap richtig funktioniert, kannst du mithilfe des Commands impulse 81 (sv_cheats 1 muss aktiviert sein!) mehrere Kugeln einschalten, um die Reflexionen zu überprüfen.

Spielfluss mit den Cubemaps

Innerhalb des env_cubemap gibt es eine Einstellung, wie groß die Auflösung sein soll. Während ein größerer Wert natürlich detaillierter wirkt, frisst er auch einiges mehr an Performance. Für die normalen Anwendungsgebiete sollte man die Standardoption beibehalten.

Auch nicht ratsam ist es, mehrere Cubemaps in unmittelbarer Nähe zu plazieren, weil das Sprünge bei den Reflexionen geben kann, was sehr unschön wirkt. Am besten ist es, man plaziert eine Cubemap in der Mitte eines Raums, somit wird das Ergebnis schöner als wenn man mehrere Cubemaps in dem Raum verteilt.

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life_2/tutorials/cubemaps.txt · Zuletzt geändert: 2009/11/22 14:41 von Adrian_Broher