Schöneres Wasser mit func_conveyor

Der Standard-Wassereffekt des func_water von Half-Life ist nicht besonders schön und funktioniert nur mit einer Texturgröße von 64*64 ordentlich. Dieses Tutorial zeigt eine Alternativmethode.

Wozu neues Wasser?

Das normale func_water-Wasser von Half-Life hat diverse Nachteile. Es sieht nicht besonders schön aus und ist auf Texturen mit einer Größe von 64*64 beschränkt. Schicker wäre da Wasser im Stile von Quake 3. Die Shader, die man im Falle von Half-Life dafür nicht zur Verfügung hat muss man tricksen.

Diese Methode für schönes Wasser ist weder neu noch bahnbrechend, aber man sieht's so selten, dass es diesem Tutorial durchaus eine Existenzberechtigung gibt.

Was brauchen wir?

Jeder, der schon mal ein Spiel mit Q3-Engine in Aktion gesehen hat, der weiß wie das Wasser dort (normalerweise) aussieht. Es handelt sich um einen Shader, bei dem die Wassertextur mehrmals übereinader liegt und dabei in verschiedene Richtungen fließt. Den Effekt können wir in Half-Life ganz einfach reproduzieren. Alles was wir dafür brauchen ist:

  • Zwei oder mehr func_conveyor
  • Ein func_illusionary

Die func_conveyor versorgen uns mit dem Fließeffekt, das func_illusionary sorgt dafür, dass wir in unserem Wasser auch schwimmen können.

Und so geht's

Die Sache ist im Prinzip ganz einfach. Wir erstellen uns einen Block an unsere Wasserstelle, als würden wir normales Wasser benutzen wollen. An die Seiten und die Unterseite des Brushs kommt die Null-Textur, auf die Oberseite legen unsere Wassertextur. Diese sollte keine Wassertextur im klassischen Sinne sein (“!Texturname“), sondern sollte einen ganz normalen Namen haben und kann auch gerne eine höhere Auflösung besitzen.

Den Block machen wir jetzt zu einem func_conveyor und setzen die Flags „Not solid“ und „No push“. Die Scrollgeschwindigkeit sollte irgendwo zwischen 15 und 25 liegen. Das ist aber natürlich auch abhängig von der Skalierung der Textur. Die Scrollrichtung können wie, solange wir kein fließendes Gewässer machen, willkürlich festlegen. Zudem stellen wir das Ding jetzt noch transparent ein, so wie's sich für schönes Wasser gehört. Bedenkt dabei, dass hier mehrere Ebenen von transparentem Wasser aufeinander liegen werden; daher sollte der Transparentwert eines einzelnen func_conyeyors lieber etwas niedriger sein als sonst.

Diesen Conveyor duplizieren wir jetzt. Wir verändern dezent Scrollgeschwindigkeit und (weniger dezent) die Scrollrichtung. Conveyor 2 schieben wir jetzt genau auf die Position von Conveyor 1, so dass die beiden oberen Flächen (die mit der Wassertextur) genau übereinander liegen. Diesen Schritt wiederholen wir jetzt so oft wie wir Wasserlayer haben wollen. Meist reichen aber zwei func_conveyor vollkommen aus.

Zu guter letzt fehlt dem Wasser noch etwas entscheidendes: Man kann nicht drin schwimmen! Kein Problem, dafür haben wir ja unser func_illusionary. Dieses sollte wie die func_conveyor unseren Tümpel ausfüllen, als wär's ein func_water. Das func_illusionary machen wir jetzt unsichtbar (Rendermode: Solid /FX Amout 0) und weisen ihm bei „Contents“ den Wert “-3“ zu. Dadurch verhält es sich wie Wasser, d.h. man kann darin schwimmen, ertrinken und so weiter.

Fertig! Jetzt müssen noch ein paar Werte bei den Conveyors bearbeitet werden (Geschwindigkeit, Rotation, Transparenz), damit's auch richtig gut aussieht. Da hilft nur testen und rumprobieren.

Tipps/Anhang

Für fließendes Wasser sollte man einem Conveyor, nämlich dem in Fließrichtung, sinnigerweise den „No Push“-Flag entziehen. Sollten es die Scrollrichtungen nötig machen, kann man auch einen weiteren conveyor einfügen und den zum „schieben“ benutzen, wahlweise sichtbar oder auch nicht.

Ineinander geschobene Brushes sind schwer genau zu selektieren… eigentlich. Ordnet eure Brushes wie im Bild an, dann wird's weniger schlimm.

wasser.jpg

Wie ihr seht, überschneiden sich nur die oberen Teile der Entities, allein das func_illusionary füllt den ganzen Tümpel wirklich aus. Sinn des ganzen: Ihr könnt bequem eine „Schicht“ selektieren, indem ihr im 3D-Fenster in die darunter liegende Schicht fliegt. Denn wenn die Kamera in einem Brush drinsteckt, wird dieser ausgeblendet und man kann bequem alles anklicken was man mag.

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/schoeneres_wasser_mit_func_conveyor.txt · Zuletzt geändert: 2004/12/21 01:13 von -Sir_Pepe-