Partikelsystem

Dokumentation Ein Partikelsystem besteht typ. aus einer Vielzahl von geometrielosen Objekten. Es beschreibt deren Emitterort, die Lebensdauer und die Regeln, nach denen sich diese Partikel bewegen. Damit lassen sich z.B. Feuer, Rauch, oder Funkenflug simulieren.

Für die Darstellung der Partikel werden semitransparente Texturen verwendet. Diese liegen im BMP-Fromat vor. Jedes Pixel besitzt neben dem eigentlichen RGB Farbwert einen zusätzliche Transparenzwert, den Alphawert. Bei einem Alphawert=0 ist das Pixel vollkommen transparent, bei Alpha=255 ist es voll sichtbar. Nur mit semitransparenten Texturen lassen sich realistische Effekte erzeugen. Hier wird für diese speziellen Texturen der Begriff Sprite verwendet. Ein Partikel kann mehrere Sprites besitzen.

Die Projektion der Partikel auf die Nearplane ist relativ einfach:

Nachdem alle Polygone rerendert wurden, erfolgt das zeichnen der Partikel, bzw. der zugehörigen Sprites. Da die Partikel keine Geometrie im 3D Raum besitzen, müssen sie nur gemäß ihrer Entfernung zur Kamera skaliert und positioniert werden. Ausserdem ist noch der Test mit dem Z-Buffer nötig. Fertig!

Szene mit zwei Feueranimationen

Die große Flamme links wird mit insgesammt 33 Sprites animiert. Das Kerzenlicht rechts besteht aus einem einzigen Sprite das am Kerzendocht eingeblendet wird, sich dann eine kurze Wegstrecke nach oben bewegt und dann ausgeblendet wird. Anschließend beginnt die Animation von vorn.

Feuer Sprites: Semitransparente Flammentextur #1 Semitransparente Flammentextur #2 ... Semitransparente Flammentextur #33
Kerzen Sprite: Semitransparente Textur (Kerzenflamme)

Szene mit Rauchanimation

Beim Rauch wird genau eine Spritetextur verwendet die zum Ende eines Animationszyklus vollständig transparent wird. So entsteht der Eindruck einer sich auflösenden Gaswolke. Die Anzahl der Partikelinstanzen und die Bewegungsrichung ist zufallsgesteuert. Die kleinen roten Funken sind Partikel im klassischen Sinne. Auch hier ist die Anzahl der Instanzen und der Emitterwinkel zufallsgesteuert. Die Bewegung erfolgt gemäß dem schrägen Wurf.
Rauch Sprite: Semitransparente Textur (Rauch)
Funken Sprite: Semitransparente Textur (Partikel)