Overlays

Nachdem ich mittlerweile so viele Anfragen zu dem Thema bekommen habe, dass das Schreiben eines Tuts wohl weniger Arbeit macht als das beantworten der Fragen: Hier ist euer Overlaytextur-Tutorial, mit dem wir dann bald alle solch schöne Effekte hinbekommen wie unser Freund Relic25 in seinem Level ns_bast:

overlays01.jpg

Unser Ziel ist es also, ähnlich schicke Computerkonsolen, Monitore und Lichter zu erstellen, die bei der „klassischen“ Methode mit Texlights bekanntermaßen komplett fullbright beleuchtet werden - was nicht gerade besonders gut aussieht, verglichen mit dem Bildchen da oben.

Wofür andere Engines Shader nutzen, muss der zurückgebliebene Mapper für Half-Life tricksen. Als Beispiel soll uns dieser Monitor aus Natural Selection dienen:

overlays02.jpg

Prinzipiell funktioniert das ganze so: Es gibt von diesem Monitor (oder jedem anderen Objekt um das wir uns bemühen) zwei Texturen. Eine, die normale, seht ihr oben. Die zweite, die Overlay-Textur sieht ungefähr so aus:

overlays03.jpg

Das geschulte Auge erkennt sofort: Die Overlaytextur unterscheidet sich von der normalen dadurch, dass alles, was man an so einem Bildschirm gerne am Leuchten hätte auch vorhanden ist, alles andere (Rahmen usw) jedoch ausgespart ist - an diesen Stellen ist nun nur noch Schwarz.

Und was soll das ganze? Nun, der Rendermode „Additive“, den HL uns (unter anderem) für Brushentities zur verfügung stellt funktioniert folgendermaßen: Wenn die Engine ein Frame rendert, wird der Farbwert eines additiv gerenderten Pixels auf den Farbwert des dahinter liegenden Pixels addiert. Wenn wir also jetzt einen große blauen Block hätten (Farbwert RGB: 0 0 255) und ihn additiv vor einem roten Hintergrund (Farbwert RGB: 255 0 0) rendern ließen, käme also durch die Farbaddition der Wert 255 0 255 raus. Demzufolge sind schwarze additiv gerenderte Pixel durchsichtig; Wenn man den Farbwert von Schwarz (RGB 0 0 0) auf irgend etwas anderes addiert passiert nicht viel.

Wir nutzen diesen Rendermode für unsere Effekte wie folgt: Vor unserem Beispielbrildschirm erstellen wir ein 1 Unit (Kleinstmögliche Größe) dickes Brushentity (Zu empfehlen wäre ein func_illusionary). Seiten- und Rückseite dieses Entities verpassen wir die Null-Textur, um Polygone zu sparen und die Seiten nebenher noch unsichtbar zu machen, während die Vorderseite die zum Hintergrund passende Overlay-textur bekommt. Das sieht dann ungefähr so aus:

overlays04.jpg

Nun schieben wir das Entity so nah wie möglich an unseren Bildschirm heran. Nicht vergessen dem Entitie den Rendermode Additive zu verpassen, und mit dem FX Amount die Transparenz und damit die gewünschte Leuchtkraft zu regulieren. Kompilieren, fertig!

Wenn jetzt jemand in der kompilierten Map den Monitor betrachtet, wird er den Bildschirm durch das Overlay-Entitie hindurch sehen; Farbwerte der Pixel des Overlays werden auf die Werte der Pixel des Hintergrund-Bildschirms addiert. Da die schwarzen Flächen faktisch nicht sichtbar sind, ist das Ergebnis ein glaubwürdig leuchtender Monitor, bei dem wirklich nur das strahlt was auch soll… hässliche Fullbright-Textlights adé.

Abschließend noch ein paar Tipps:

  • Unbedingt darauf achten, dass Skalierung und Alignment der Hintergrund- und Overlaytextur auf dem Hintergrundbrush und dem Overlayentity absolut identisch sind, sonst leuchtet nicht akkurat das was leuchten soll.
  • Auch für ganz normale Lampen können sich Overlays lohnen. In diesem Fall setzt man einfach für die Overlay-Textur ein Texlight.
  • Am geeignetsten für Overlay-Entities sind func_illusionaries; schließlich will ja niemand im Spiel an leuchtenden Blinklichtern hängen bleiben. Außerdem spart's, richtige Compiler vorausgesetzt, Clipodes. - Durch Kombination mit anderen Effekten und Techniken kann man mit Overlays einiges anstellen. Besonders zu empfehlen sind die diversen Effekte von HL (Strobe, Pulse). Was man zum Beispiel durch Kombination der Overlay-Technik mit der Scroll-Textur anstellen kann, demonstriert KungFuSquirrel in seinem Natural-Selection Level ns_eclipse mit den berühmten Blitzeffekten.

overlays05.jpg

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/tutorials/overlays.txt · Zuletzt geändert: 2004/12/21 22:33 von -Sir_Pepe-