Lichter in der Source Engine

In Half-Life 2 wird wie beim Vorgänger das eigentliche Licht durch Light-Entities produziert. Sie dienen als eigentliche Lichtquellen für die Engine; sie sind unsichtbar. Das heißt, ein Light-Entity produziert nur das Licht, nicht die eigentliche Quelle wie z.B eine Lampe. Diese muss per Model nachträglich hinzugefügt werden. Es gibt 4 unterschiedliche Licht-Entities, diese sind light, light_dynamic, light_spot und light_environment. Diese erzeugen nur das eigentliche Licht, weitere Effekte kann man dann mit point_spotlight für einen Lichtstrahl oder env_sun für die Korona einer Sonne erstellen.

Dynamisches Licht oder nicht?

Zuerstmal kann man sagen, Half-Life2 ist nicht wirklich auf dem neusten Stand. Es unterstützt zwar dynamische Lichter (→ light_dynamic), aber diese sind nur für bewegliche Lichter gedacht und werfen keine dynamischen Schatten. Weil diese Lichter dann keine Schatten erzeugen können, sieht das ganze recht unschön aus. Außerdem ist diese Entity-Art sehr performanelastig, deswegen sollte man sowenige dynamische Lichter wie möglich setzen.

Cubemaps

Bitte beachtet, dass für die richtigen Reflexionen der Lichter Cubemaps benötigt werden. Wie ihr sie setzt und was ihr beachten müsst bzw. was Cubemaps überhaupt sind, erfahrt ihr hier.

Die Entities

Light

Das light-Entity ist eine unsichtbare Lichtquelle, die mithilfe von Inputs/Outputs an- und ausgeschaltet werden kann. Das Light-Entity leuchtet in jede Richtung, anders als bei einem light_spot. Somit braucht es auch keine Angabe der Richtung o.ä.

Diese werden vorallem für bestimmte Licht-Models benutzt, die auch in jede Richtung leuchten soll (Kellerleuchten z.B). Für gebogene Lampen, die nach oben nicht offen sind, empfiehlt sich des Aussehens wegen ein light_spot zu benutzen.

Light_Spot

Mit dem light_spot kann man eigentlich die meisten Lichtsituationen meißtern. Lampen, Strahler oder Laternen, alle diese können am Besten mit einem light_spot erstellen.

Bestes Beispiel dafür sind die vielen Combine_Lichter in den Anfangsmaps von Half-Life2. Diese sind so aufgebaut:
light_spot.jpg


Dieses Gebilde aus der map d1_trainstation_01 (ist übrigens im Sdk als Beispielmap vorhanden, ihr könnt euch das ganze also im Hammer angucken) besteht aus 3 Entities. Einem prop_static für das Model, einem light_spot und einem point_spotlight.

Hier ist eine Anweisung was ihr alles machen müsst.

  1. Erstellt ein prop_static mit dem Model models/props_combine/combine_light002a.mdl.
  2. Erstellt vor dem Model ein light_spot.

Ihr könnt nun die Richtung des light_spots einstellen, in dem ihr den Point at im Auswahlmenü der Pitch Yaw Roll-Einstellung (klicken, Position suchen, nochmals klicken)

Plaziert nun ein point_spotlight in genau der gleichen Richtung wie das light_spot. Ihr solltet bei den Flags neben StartOn noch No dynamic light aktivieren, damit nicht soviel Performance verbraucht wird. Auch dieses Entity kann mit dem Point at Buton justiert werden.

Ingame sieht das ganze dann folgendermaßen aus:

spot_ingame.jpg

Tip: Die Verwendung von func_dustmotes (beleuchtete Staubkörner) in Verbindung mit light_spots bringen weitere schöne Effekte.

Kombination von light und light_spot

Diese zwei ersten Entities (light und light_spot) kann man auch kombinieren. Somit erreicht man qualitativ beste Ergebnisse.

Das macht Valve sehr häufig in den Maps. Auch zu sehen ist es an der Stelle, wo der Spieler Barney das erste Mal sieht. In dem Gang, durch den der Spieler laufen muss, befinden sich Lichter an der Decke, die mit exakt dieser Methode gebaut wurden.


light_and_spot.jpg
Dieses Gebilde besteht nun aus 4 Entities. Einem prop_static für das Model, einem light_spot, einem light und einem point_spotlight.

Valve hat folgende Einstellungen verwendet:

  1. prop_staticWorld Model models/props_wasteland/prison_lamp001b.mdl
  2. light_spotBrightness 254 216 146 400.
  3. point_spotlight → Flags: No Dynamic Light und StartOn. Length - 256, Width - 64 und Color 254 216 146.
  4. lightBrightness 254 216 146 2.

Ich hoffe durch dieses Beispiel wurde euch klar, wie man mehrere Light-Entities zu einem schönen Effekt verbinden kann. Probiert einfach mal einige Sachen aus.

light_dynamic

Dieses Light-Entity wird relativ selten verwendet. Es bietet viel mehr Möglichkeiten und Inputs für die Verwendung des Entities. Zum Beispiel wurden am Anfang von Half-Life2 (→ Szene mit Gman) mehrere light_dynamics verwendet, um den Kopf von Gman zu beleuchten. Guckt euch die Anfangsszene nochmal an und ihr werdet sie sicherlich bemerken.

Außerdem wird dieses Entity benutzt, um schwingende Lampen erstellen zu können, bei denen sich das Licht mitbewegt. Denkt allerdings daran, dass dieses Light-Entity keine dynamischen Schatten wirft und viel Performance frisst. Es gibt auch ein Tutorial für diese Lichtart → Siehe hier.

Es gibt noch weitere Ressourcen für die Dynamischen Lichter (auf Englisch):

light_environment

Dieses Entity wird ausschliesslich in Verwendung mit Aussenarealen verwendet. Es erzeugt ein künstliches Sonnenlicht. Da ich keine Erfahrungswerte für diese Entities habe, ist es am Besten, ihr probiert ein bisschen (und tragt evtl hier eure besten Ergebnisse ein). Um den Effekt einer Sonne zu verstärken, könnt ihr euch eines env_sun bedienen. Wie ihr dieses richtig in die Map einbaut, erfahrt ihr hier.

Texlights

Texlights sind Texturen, denen die Eigenschaft zugewiesen wurde, Licht abzugeben. Die Materials beleuchten sich dabei nicht selbst, dazu gibt es die Einstellung selfillum. Welche Farbe und Helligkeit das Licht haben soll, liest vrad.exe aus der Datei lights.rad im jeweiligen Modverzeichnis (hl2, hl2mp oder cstrike). Diese Datei hat folgendes Format:

pfad/material R G B Helligkeit

Die Farb- und Helligkeitswerte entsprechen denen, die es auch im Hammereditor für light-Entities gibt. Ein Beispiel ist schon vorgegeben:

xeno/crys_4b 255 160 128 40000

Das abgegebene Licht hängt zusätzlich noch vom Alpha-Kanal der Textur ab. Der angegebene Helligkeitswert wird dort erreicht, wo der Alphakanal sein Maximum hat und wird proportional verrechnet.

Linear-Quadratic-Constant

Neben Helligkeit und Farbe kann man bei Light und Light_spot noch eine weitere Einstellung machen, die die Erscheinung bestimmt: Das Linea-Quadratic-Constant-System. Alle 3 Einstellungen geben eine „Formart“ wieder, und können beliebig kombiniert werden.

Linear Die Lichtstärke nimmt Linear von der Lichtquelle ab.
Quadratic Die Lichtstärke nimmt Exponentiell von der Lichtquelle ab. Diese Einstellung ist Standartmäßig auf 1 und sorgt unverändert oft für ein übertriebenes glühen.
Constant Die Lichtstärke bleibt Konstant.

Alle Werte bestimmen den Anteil an der Gesamtlichtstärke und sollten immer zusammen 1 ergeben. Dies ist aber nicht zwingend Notwendig.

Anmerkung

Man kann natürlich noch viel mehr mit den Effekten spielen. Ein weiteres wichtiges Beispiel ist voluminöses Licht, wie ihr es einsetzt und was ihr damit machen könnt, erfahrt ihr hier.

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/lichter.txt · Zuletzt geändert: 2009/11/30 13:09 von Adrian_Broher