Quake 3: Wasser, Lava, Schleim und Nebel Volumen
Last Updated on 7. January 2022 by Victor Karp
In diesem Tutorial lernst du, wie du Wasser, Lava, Schleim und Nebel Volumen erstellen kannst und wie du häufig auftretende Probleme löst.
Du kannst die Beispielmap, von der der Screenshot oben stammt, hier herunterladen.
Table of Contents
Ein einfaches Volumen erstellen
Wasser, Lava, Schleim und Nebel funktionieren grundsätzlich gleich. Du erstellst dazu einen Brush und belegst ihn mit der passenden Textur. Es sind keine weiteren Schritte nötig. In der Beispielmap habe ich vier Becken erstellt und darin vier Brushes platziert, die vollständig mit den folgenden Texturen belegt sind:
liquids/clear_calm1
liquids/lavahell_1000
liquids/slime1_2000
sfx/xbluefog
Woran man funktionierende Volumentexturen erkennt
Wenn du im Texturbrowser nach passenden Texturen suchst, wirst du sehen, dass einige Texturen weiße Umrandungen haben und andere Texturen nicht.
Brushes mit Texturen ohne weiße Umrandung haben im Spiel keinen besonderen Effekt. Wenn du einen Brush mit einer dieser Texturen belegst, funktioniert dieser Brush wie jeder andere normale Wand- oder Bodenbrush.
Texturen mit weißen Umrandungen besitzen einen Shader. Ein Shader ist eine Textdatei mit Anweisungen, die einer Textur bestimmte Eigenschaften verleiht. Im Einstieg in Shader Tutorial erfährst du dazu mehr. Achte also beim Texturieren darauf, für deine Volumen eine Textur mit Shader zu verwenden.
Flüssigkeiten in Pools mit komplexeren Formen
Wenn zwei Volumen treffen, werden die seitlichen Faces der Brushes sichtbar und bilden unschöne Wände.
Die common/watercaulk Textur ist dafür da, genau dieses Problem zu beheben. Wenn du diese Textur nicht hast, installiere bitte die Quake 3 Extras.
Watercaulk hat die Eigenschaften von Wasser, ist im Spiel aber unsichtbar. Es gibt zwei Möglichkeiten, wie du diese Textur verwenden kannst:
- Du belegst gezielt die seitlichen Faces deiner Wasserbrushes mit der watercaulk Textur
- Du belegst alle Wasserbrushes vollständig mit watercaulk und texturierst lediglich die sichtbaren Oberseiten mit der richtigen Wassertextur
Ich benutze immer die zweite Variante, da sie schneller und einfacher funktioniert.
Wenn dein Pool kein Wasser, sondern Lava oder Schleim enthält, benutze stattdessen die lavacaulk bzw. slimecaulk Textur.
Nebel in Pools mit komplexeren Formen
Bei Nebelvolumen gibt es genau wie bei Flüssigkeiten Probleme, wenn mehrere Brushes aufeinandertreffen.
Das Rendering von Nebel verhält sich jedoch anders als das von Flüssigkeiten. Auch, wenn du die Brushseiten unsichtbar machst, z.B. mit der common/nodraw Textur, schließt sich der Nebel nichtt zusammen. Jeder Brush hat weiterhin seinen eigenen Nebelbereich.
Das liegt daran, dass Nebel, anders als Wasser, Lava oder Schleim, auch optisch ein Volumen und nicht nur eine Textur ist. Diese Volumendarstellung weiß nicht, dass sie mit den umliegenden anderen Volumen zusammenarbeiten muss, also steht jedes Volumen für sich.
Du kannst dieses Problem nicht mit Hilfstexturen beheben. Die Lösung besteht darin, anstatt kleiner Brushes einen Großen zu verwenden, der den ganzen Raum einnimmt.
Häufige Fragen
Ich habe die Textur watercaulk/slimecaulk/lavacaulk nicht
Lade die Quake 3 Extras herunter, die den Radiant um mehrere Zusatzfunktionen erweitern.
Wie unterscheiden sich die watercaulk/lavacaulk/slimecaulk Texturen von common/nodraw?
Nodraw hat im Gegensatz zu den anderen Texturen keine weiteren Eigenschaften außer Transparenz und Durchlässigkeit. Deshalb kann ein nodraw Brush mit Wassertextur unter Umständen völlig kollisionsfrei sein. Der Spieler würde in diesem Fall nicht wie erwartet schwimmen, sondern durch den Brush hindurchfallen.
Um das auf jeden Fall ausschließen zu können, bieten sich diese speziellen Wasser-, Lava- und Schleimtexturen an. Sie besitzen die Eigenschaften des angegebenen Elements, sind aber unsichtbar.
Wie kann ich einen Fluss erstellen? Ich finde nur Wassertexturen für Pools
Quake 3 hat keine Wassertexturen für Flüsse, aber du kannst selbst Shader erstellen, die das Wasser bewegen. Ich empfehle dir die Tutorials über den Einstieg in Shader und Shader mit Q3ASE: Interface. Sobald du weißt, wie Shader funktionieren, verwende den Shaderbefehl q3map_tcmod translate.
Warum hat eine große Fläche mit Lava- bzw. Schleimtextur dunkle Flecken, obwol die Textur Licht abgibt?
Das Licht wird in regelmäßigen Abständen abgestrahlt, da nicht jeder einzelne Pixel der Textur Licht abgeben kann. Der Rechenaufwand während des Lightcompiles wäre dafür zu hoch. Stell dir das so vor, als wenn du in den immer gleichen Gridabständen Light Entities auf dieser Textur platzieren würdest. Die Größe dieser Abstände wird im Shader der Textur in Units angegeben.
Dafür verantwortlich ist der Befehl q3map_lightsubdivide. Ist er zu groß, entstehen dunkle Passagen zwischen den hellen Bereichen.
Wieso habe ich längere Compilezeiten, nachdem ich einen großen Lava-/Schleimsee angelegt habe?
Wie bereits in der vorigen Frage erwähnt, senden die mitgelieferten Lava- und Schleimtexturen Licht aus. Je größer deine Lava-/Schleimseen sind und je mehr solcher Seen du hast, desto umfangreicher wird auch die Lichtberechnung. Das schlägt sich in einer längeren Compilezeit nieder und ist normal.
Wieso soll ich Flüssigkeiten passgenau bauen und Nebel nicht?
Wasser/Lava/Schleim haben oftmals eine Oberfläche, die sich wellenartig bewegt. Wenn du dir z.B. in der Map q3dm11 den Schleimpool beim Rocketlauncher ansiehst, kannst du diese Wellen deutlich sehen. Mit dem Konsolenbefehl /r_showtris kannst du den Viewport in den Wireframe Modus schalten, in dem du die Edges von Brushes und damit auch die Wellen besser sehen kannst.
Die Wellen des Schleimpools folgen recht genau der Architektur um den Pool, denn im Boden unter der Rocketlauncherinsel sind keine Wellen. Der Sinn hinter dem genauen Ausfüllen eines Pools anstatt dem Füllen der Fläche mit einem großen Brush liegt darin, Polygone zu sparen, weil weniger Wellen gerendert werden müssen.
Je nach Größe der Architektur, die in die jeweilige Flüssigkeit hineinragt, würde ich diese übrigens auch nicht unterteilen, da sich der Aufwand für kleine Sachen nicht lohnt.
Mit Nebel musst du das deshalb nicht machen, weil Nebel keine riffelige Oberfläche und somit sowieso maximal zwei Polys hat (und weil es techisch unmöglich ist, wie man weiter oben lesen kann).
Ich habe mein Level mit einem großen Nebelbrush umgeben. Jetzt flackert die Skybox ab und zu je nach Sichtwinkel.
Soweit ich weiß, harmonieren eine Skybox und levelweiter Nebel nicht. Abhilfe schafft meines Wissens lediglich eine einfarbige Skybox ohne bewegliche Wolken und Nebel, der die gleiche Farbe wie die Skybox hat. Dieser Nebel wird dann über eine Einstellung im Worldspawn eingestellt, und nicht über einen Nebelbrush.
Lassen sich Environment Maps in Shadern verwenden, die deformVertexes benutzen?
Soweit ich weiß, gibt es keine Möglichkeit, Environment Maps und deformVertexes ohne Anzeigefehler zu kombinieren. Zugesendete Lösungen dafür werde ich gerne hier veröffentlichen.
Besuche die Quake 3 Mapping Tutorial Hauptseite für weitere Tutorials.