2D Partikelsysteme

Einführung

Es wird ein einfaches (aber für die meisten Anwendungen flexibles) Partikelsystem bereitgestellt. Partikelsysteme werden verwendet, um komplexe physikalische Effekte wie Funken, Feuer, magische Partikel, Rauch, Nebel usw. zu simulieren.

Die Idee ist, dass ein "Partikel" in einem festen Intervall und mit einer festen Lebensdauer emittiert wird. Während seiner Lebensdauer hat jedes Partikel das gleiche Grundverhalten. Was jedes Partikel von den anderen unterscheidet und ein organischeres Aussehen bietet, ist die "Zufälligkeit", die jedem Parameter zugeordnet ist. Im Wesentlichen bedeutet das Erstellen eines Partikelsystems, dass physikalische Basisparameter festgelegt und dann Zufälligkeiten hinzugefügt werden.

Partikel-Nodes

Godot bietet zwei verschiedene Nodesfür 2D-Partikel, Particles2D und CPUParticles2D. Particles2D ist fortschrittlicher und nutzt die GPU zur Verarbeitung von Partikeleffekten, aber das beschränkt es auf höherwertige Grafik-APIs, und in unserem Fall auf den GLES3-Renderer. Für Projekte, die das GLES2-Backend verwenden, ist CPUParticles2D eine CPU-gesteuerte Option mit nahezu gleichen Funktionen wie Particles2D, aber geringerer Leistung. Während Particles2D über ein ParticlesMaterial (und optional mit einem benutzerdefinierten Smader) konfiguriert wird, werden die passenden Optionen über Knoteneigenschaften in CPUParticles2D bereitgestellt (mit Ausnahme der Trail-Einstellungen). Sie können einen Particles2D-Node in einen CPUParticles2D-Node umwandeln, indem Sie im Inspektor auf den Node klicken und im Menü "Partikel" der Symbolleiste "In CPUParticles2D umwandeln" wählen.

../../_images/particles_convert.png

Im Rest der Anleitung wird das Particles2D Node benutzt. Als erstes fügen Sie ein Particles2D Node zu Ihrer Szene. Nachdem Sie das Node hinzugefügt haben, werden Sie feststellen, dass nur ein weisser Punkt erstellt wurde und im Inspektor neben Ihrem Particles2D Node ein Warnungssymbol ist. In diesem Fall bedeutet dieses Symbol, dass das Node ein ParticlesMaterial benötigt, um zu funktionieren.

Partikel Materialien

Um ein ProcessMaterial zu Ihrem Partikel-Node hinzuzufügen, gehen Sie in Ihrem Inspektor zu Process Material. Klicken Sie auf die Box neben Material mit der Aufschrift [leer] und wählen Sie aus dem Ausklappmenü Neues ParticlesMaterial aus.

../../_images/particles_material.png

Ihr Particles2D-Node sollte jetzt weiße Punkte nach unten senden.

../../_images/particles1.png

Texturen

Ein Partikelsystem benutzt eine einzelne Textur (in der Zukunft könnte dies mit animierten Texturen über ein Spritesheet erweitert werden). Die Textur wird über die entsprechende Eigenschaft "Texture" festgelegt:

../../_images/particles2.png

Zeitparameter

Lebensdauer

Die Zeit in Sekunden, in der jedes Partikel am Leben bleibt. Wenn die Lebensdauer endet, wird ein neues Partikel erstellt, um es zu ersetzen.

Lebensdauer: 0.5

../../_images/paranim14.gif

Lebensdauer: 4.0

../../_images/paranim15.gif

Einmalig

Wenn diese Option aktiviert ist, gibt ein Particles2D-Node alle seine Partikel einmal und dann nie wieder aus.

Vorverarbeitung

Partikelsysteme beginnen mit null emittierten Partikeln und beginnen dann zu emittieren. Dies kann eine Unannehmlichkeit sein, wenn eine Szene geladen wird und Systeme wie Fackel, Nebel usw. in dem Moment, in dem Sie eintreten, zu emittieren beginnen. Mit der Vorverarbeitung kann das System eine bestimmte Anzahl von Sekunden verarbeiten, bevor es beim ersten Mal tatsächlich gezeichnet wird.

Geschwindigkeitsskala

Die Eigenschaft Speed Scale hat einen Standardwert von 1 und wird benutzt, um die Geschwindigkeit eines Partikelsystems einzustellen bzw. zu skalieren. Mit der Senkung des Werts werden die Partikel langsamer, wohingegen eine Erhöhung des Werts die Partikel schneller macht.

Explosivität

Wenn die Eigenschaft Lifetime den Wert 1 hat und zehn Partikel vorhanden sind, bedeutet dies, dass jede Zehntelsekunde (0.1s) ein Partikel ausgesendet wird. Die Eigenschaft Explosiveness beinflusst dies insofern, dass alle Partikel gleichzeitig ausgesendet werden. Folgende Spannbreite ist möglich:

  • 0: Partikel in regelmäßigen Abständen emittieren (Standardwert).

  • 1: Alle Partikel gleichzeitig emittieren.

Werte dazwischen sind ebenfalls zulässig. Diese Funktion ist nützlich, um Explosionen oder plötzliche Partikelausbrüche zu erzeugen:

../../_images/paranim18.gif

Zufälligkeit

Alle physikalischen Parameter können zufallsbestimmt werden. Zufällige Werte reichen von 0 bis 1. Die Formel um einen Parameter per Zufall zu bestimmen lautet:

initial_value = param_value + param_value * randomness

feste FPS

Diese Einstellung kann verwendet werden, um das Partikelsystem so einzustellen, dass es mit einem festen FPS gerendert wird. Wenn Sie z. B. den Wert auf 2 ändern, werden die Partikel mit 2 Bildern pro Sekunde gerendert. Beachten Sie, dass dies das Partikelsystem selbst nicht verlangsamt.

Fract Delta

Dies kann verwendet werden, um Fract Delta ein oder auszuschalten.

Zeichnungsparameter

sichtbares Recheck

Das Sichtbarkeits-Rechteck stellt die Sichtbarkeit von Partikeln ein. Wenn dieses Rechteck außerhalb des Viewports liegt, wird die Engine keine Partikel rendern.

Die W und H Eigenschaften des Rechtecks stellen die Breite und Höhe ein. Die X und Y Eigenschaften stellen die Position der oberen linken Kante des Rechtecks ein, in Relation zu dem Partikelemitter.

Mit der Toolbar über dem 2D-View kann ein Sichtbarkeits-Rechteck automatisch generiert werden. Dazu müssen Sie das Particles2D Node auswählen und auf Partikel > Sichtbarkeits-Rechteck generieren anklicken. Godot simuliert dann die Partikel der Particles2D Node für einige Sekunden und skaliert dann das Rechteck auf die von den Partikeln eingenommene Fläche.

Sie können die Dauer der Emmitierung mit der Generation Time (sec) Option einstellen. Der Maximalwert ist 25 Sekunden. Falls sie mehr Zeit für die Partikel brauchen, können Sie temporär die preprocess Dauer der Particles2D Node ändern.

Lokale Koordinaten

Standardmäßig ist diese Option aktiviert. Dies bedeutet, dass der Raum, in den Partikel emittiert werden, relativ zum Node ist. Wenn der Node verschoben wird, werden alle Partikel mit verschoben:

../../_images/paranim20.gif

Wenn diese Option deaktiviert ist, werden Partikel in den globalen Raum emittiert. Wenn der Node verschoben wird, sind bereits emittierte Partikel nicht betroffen:

../../_images/paranim21.gif

Zeichnungsreihenfolge

Stellt die Reihenfolge ein, in der die Partikel gezeichnet werden. Index bedeutet, dass Partikel nach ihrer Emmisionsreihenfolge (standardmäßig) gezeichnet werden. Lebensdauer bedeutet dass die Partikel der Reihe ihrer Rest-Lebenszeit nach gezeichnet werden.

ParticlesMaterial Einstellungen

Richtung

Die Richtung, in welche Partikel emittiert werden. Der Standardwert ist Vector3(1, 0, 0), was bedeutet dass Partikel nach Rechts emittiert werden. Mit Standard-Schwerkrafteinstellungen werden sich die Partikel jedoch direkt nach unten bewegen.

../../_images/direction1.png

Damit diese Eigenschaft eine Wirkung hat, brauchen Sie eine Anfangsgeschwindigkeit größer als 0. Hier setzen wir die Anfangsgeschwindigkeit auf 40. Sie werden feststellen, dass die Partikel nach Rechts emittiert werden, und sich dann durch die Schwerkraft nach unten bewegen.

../../_images/direction2.png

Ausbreitung

Dieser Parameter ist der Winkel in Grad, der zufällig in jede Richtung zur Basis Direction addiert wird. Eine Streuung von 180 wird in alle Richtungen (+/- 180) emittieren. Damit die Streuung etwas bewirkt, muss der Parameter "Anfangsgeschwindigkeit" größer als 0 sein.

../../_images/paranim3.gif

Ebenheit

Diese Eigenschaft ist nur für 3D-Partikel nützlich.

Gravitation

Die Schwerkraft, die auf jedes Teilchen angewendet wird.

../../_images/paranim7.gif

Anfangsgeschwindigkeit

Die Anfangsgeschwindigkeit ist die Geschwindigkeit mit der Partikel emittiert werden (in Pixeln pro Sekunde). Geschwindigkeit wird womöglich (wie unten beschrieben) von Schwerkraft oder anderen Beschleunigungen beeinflusst.

../../_images/paranim4.gif

Winkelgeschwindigkeit

Die Winkelgeschwindigkeit ist die anfängliche Winkelgeschwindigkeit, die auf Partikel angewendet wird.

Spin-Geschwindigkeit

Die Spin-Geschwindigkeit ist die Geschwindigkeit, mit der sich Partikel um ihr Zentrum drehen (in Grad/Sek.).

../../_images/paranim5.gif

Umlaufgeschwindigkeit

Die Umlaufgeschwindigkeit wird verwendet, um Partikel dazu zu bringen, sich um ihr Zentrum zu drehen.

../../_images/paranim6.gif

Lineare Beschleunigung

Die lineare Beschleunigung, die auf jedes Teilchen angewendet wird.

Radiale Beschleunigung

Wenn diese Beschleunigung positiv ist, werden Partikel vom Zentrum weg beschleunigt. Wenn sie negativ sind, werden sie dazu angezogen.

../../_images/paranim8.gif

Tangentiale Beschleunigung

Diese Beschleunigung verwendet den Tangentenvektor zur Mitte. Die Kombination mit Radialbeschleunigung kann schöne Effekte erzielen.

../../_images/paranim9.gif

Dämpfung

Dämpfung erzeugt Reibung auf den Partikeln, was sie zum anhalten zwingt. Dies ist praktisch für Funken oder Explosionen, welche üblicherweise mit hoher Anfangsgeschwindigkeit schnell wieder abklingen.

../../_images/paranim10.gif

Winkel

Bestimmt den Anfangswinkel des Partikels (in Grad). Dieser Parameter wird meistens zufällig genutzt.

../../_images/paranim11.gif

Skalierung

Bestimmt den anfänglichen Maßstab der Partikel.

../../_images/paranim12.gif

Farbe

Wird verwendet, um die Farbe der emittierten Partikel zu ändern.

Farbtonvariation

Der Variation-Wert stellt den Anfangs-Farbton der Partikel ein. Der Variation Random-Wert stellt ein, mit wie viel Zufälligkeit der Anfangs-Farbton generiert wird.

Emissionformen

ParticlesMaterials stellt eine Emmisionsmaske ein, welche die Fläche und Richtung der Partikelemitter beeinflusst. Die Maske kann von einer Textur im Projekt generiert werden.

Stellen Sie sicher, dass ParticlesMaterial eingestellt und das Particles2D Node ausgewählt wurde. In der Toolbar sollte dann ein "Partikel" Menü erscheinen:

../../_images/emission_shapes1.png

Öffnen Sie es und wählen Sie "Emissionsmaske laden":

../../_images/emission_shapes2.png

Wählen Sie dann die Textur aus, die Sie als Maske verwenden möchten:

../../_images/emission_shapes3.png

Ein Eingabefenster mit diversen Einstellungen wird erscheinen.

Emissionsmaske

Aus einer Textur können drei Arten von Emissionsmasken erzeugt werden:

  • Feste Pixel: Partikel erscheinen aus jedem Bereich der Textur, ausgenommen transparente Bereiche.

../../_images/emission_mask_solid.gif
  • Grenzpixel: Die Partikel werden von den äußeren Rändern der Textur erzeugt.

../../_images/emission_mask_border.gif
  • Gerichtete Randpixel: Ähnlich wie Border Pixels, fügt aber zusätzliche Informationen zur Maske hinzu, um Partikeln die Möglichkeit zu geben, von den Rändern weg zu emittieren. Beachten Sie, dass eine Initial Velocity gesetzt werden muss, um dies zu nutzen.

../../_images/emission_mask_directed_border.gif

Emissionsfarben

Capture from Pixel bewirkt, dass die Partikel die Farbe der Maske an ihren Spawnpunkten erben.

Mit klicken auf "OK" wird die Maske generiert und auf das ParticlesMaterial unter dem Abschnitt Emission Shape gesetzt:

../../_images/emission_shapes4.png

Alle Werte in diesem Abschnitt wurden automatisch durch das "Load Emission Mask"-Menü generiert. Grundsätzlich sollten sie nicht verändert werden.

Bemerkung

Ein Bild sollte nicht direkt zur Point Texture oder Color Texture hinzugefügt werden. Es sollte immer das "Load Emission Mask"-Menü benutzt werden.