Work in progress

The content of this page was not yet updated for Godot 4.2 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

2D-Partikel-Systeme

Einführung

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 Nodes für 2D-Partikel, GPUParticles2D und CPUParticles2D. GPUParticles2D ist fortschrittlicher und nutzt die GPU zur Verarbeitung von Partikeleffekten. CPUParticles2D ist eine CPU-gesteuerte Option mit nahezu gleichen Funktionen wie GPUParticles2D, aber geringerer Performance bei der Verwendung großer Mengen von Partikeln. Auf der anderen Seite kann CPUParticles2D auf Low-End-Systemen oder in Situationen mit GPU-Bottlenecks besser performen.

Während GPUParticles2D über ein ParticleProcessMaterial (und optional mit einem benutzerdefinierten Shader) konfiguriert wird, werden die passenden Optionen über Node-Propertys in CPUParticles2D bereitgestellt (mit Ausnahme der Trail-Einstellungen).

Sie können einen GPUParticles2D-Node in einen CPUParticles2D-Node umwandeln, indem Sie auf den Node im Inspektor klicken, den 2D-Viewport auswählen und GPUParticles2D > Zu CPUParticles2D konvertieren in der Viewport-Toolbar wählen.

../../_images/particles_convert.webp

Im Rest des Tutorials wird der Particles2D-Node benutzt. Als Erstes wird ein Particles2D-Node zur Szene hinzugefügt. Nachdem Sie den Node hinzugefügt haben, werden Sie feststellen, dass nur ein weißer Punkt erstellt wurde, und im Szenen-Panel neben Ihrem Particles2D-Node ein Warnungssymbol erschienen ist. In diesem Fall bedeutet dieses Symbol, dass der Node ein ParticlesMaterial benötigt, um zu funktionieren.

ParticleProcessMaterial

Um ein Prozessmaterial zu Ihrem Node hinzuzufügen, gehen Sie zu Prozessmaterial in Ihrem Inspektor-Panel. Klicken Sie auf das Feld neben Material und wählen Sie aus dem Dropdown-Menü Neues ParticleProcessMaterial.

../../_images/particles_material.png

Ihr GPUParticles2D-Node sollte nun weiße Punkte nach unten emittieren.

../../_images/particles1.png

Textur

Ein Partikelsystem kann eine einzelne Textur oder ein Animations-Flipbook verwenden. Ein Flipbook ist eine Textur, die mehrere Bilder einer Animation enthält, die abgespielt oder während der Emission zufällig ausgewählt werden können. Dies ist gleichbedeutend mit einem Spritesheet für Partikel.

Die Textur wird über die Property Textur festgelegt:

../../_images/particles2.png

Verwendung eines animierten Flipbooks

Partikel-Flipbooks eignen sich für die Darstellung komplexer Effekte wie Rauch, Feuer und Explosionen. Sie können auch verwendet werden, um zufällige Texturvariationen einzuführen, indem man für jedes Partikel eine andere Textur verwendet. Sie können bestehende Partikel-Flipbook-Bilder online finden oder sie mit externen Tools wie Blender oder EmberGen vorrendern.

Beispiel für ein Partikelsystem, das eine Flipbook-Textur verwendet

Beispiel für ein Partikelsystem, das eine Flipbook-Textur verwendet

Die Verwendung eines animierten Flipbooks erfordert eine zusätzliche Konfiguration gegenüber der Verwendung einer einzelnen Textur. Zu Demonstrationszwecken verwenden wir diese Textur mit 5 Spalten und 7 Zeilen (klicken Sie mit der rechten Maustaste und wählen Sie Speichern unter...):

Beispiel für eine Partikel-Flipbook-Textur

Quelle: JoesAlotofthings (CC BY 4.0)

Um ein Animations-Flipbook zu verwenden, müssen Sie ein neues CanvasItemMaterial im Abschnitt Material des Nodes GPUParticles2D (oder CPUParticles2D) erstellen:

Erstellen eines CanvasItemMaterials am unteren Rand des Partikel-Node-Inspektors

Erstellen eines CanvasItemMaterials am unteren Rand des Partikel-Node-Inspektors

Aktivieren Sie in diesem CanvasItemMaterial die Partikelanimation und setzen Sie H Frames und V Frames auf die Anzahl der Spalten und Zeilen, die in Ihrer Flipbook-Textur vorhanden sind:

Konfigurieren des CanvasItemMaterials für die Beispiel-Textur des Flipbooks

Konfigurieren des CanvasItemMaterials für die Beispiel-Textur des Flipbooks

Sobald dies geschehen ist, wird der Animationsabschnitt in ParticleProcessMaterial (für GPUParticles2D) oder im CPUParticles2D-Inspektor wirksam.

Tipp

Wenn Ihre Flipbook-Textur einen schwarzen statt einen transparenten Hintergrund hat, müssen Sie auch den Blending-Modus auf Hinzufügen statt Mischen einstellen, damit die Textur korrekt angezeigt wird. Alternativ dazu können Sie die Textur in einem Bildbearbeitungsprogramm so verändern, dass sie einen transparenten Hintergrund hat. In GIMP kann dies über das Menü Farbe > Farbe zu Alpha erfolgen.

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, emittiert ein GPUParticles2D Node alle seine Partikel einmal und dann nie wieder.

Vorverarbeitung

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

Geschwindigkeitsskalierung

Die Geschwindigkeitsskalierung hat einen Standardwert von 1 und wird verwendet, um die Geschwindigkeit eines Partikelsystems anzupassen. Ein niedrigerer Wert macht die Partikel langsamer, während ein höherer Wert die Partikel viel schneller macht.

Explosivität

Wenn die Lebensdauer 1 ist und es 10 Partikel gibt, bedeutet das, dass alle 0,1 Sekunden ein Partikel ausgestoßen wird. Der Parameter Explosivität ändert dies und erzwingt, dass alle Partikel zusammen emittiert werden. Die Bereiche sind:

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

  • 1: Alle Partikel gleichzeitig emittieren.

Werte dazwischen sind ebenfalls zulässig. Diese Funktion ist nützlich, um Explosionen oder plötzliche Stöße von Partikeln zu erzeugen:

../../_images/paranim18.gif

Zufälligkeit

Alle Physikparameter können randomisiert werden. Zufällige Werte reichen von 0 bis 1. Die Formel für die Randomisierung eines Parameters 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.

Delta-Bruchteil

Dies kann verwendet werden, um den Delta-Bruchteil ein- oder auszuschalten.

Zeichenparameter

Sichtbarkeitsrechteck

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

Die W und H-Propertys des Rechtecks stellen jeweils Breite und Höhe ein. Die X und Y-Property stellen die Position der oberen linken Ecke des Rechtecks ein, relativ zum Partikelemitter.

Sie können Godot veranlassen, automatisch ein Sichtbarkeitsrechteck zu erzeugen, indem Sie die Symbolleiste oberhalb der 2D-Ansicht verwenden. Wählen Sie dazu den Node GPUParticles2D und klicken Sie auf Partikel > Generiere Sichtbarkeitsrechteck. Godot simuliert den Particles2D-Node, der einige Sekunden lang Partikel aussendet, und legt das Rechteck so fest, dass es auf die Oberfläche passt, die von den Partikeln eingenommen wird.

Sie können die Dauer der Emission mit der Option Erzeugungszeit (s) steuern. Der maximale Wert ist 25 Sekunden. Wenn Sie mehr Zeit für die Bewegung Ihrer Partikel benötigen, können Sie die Dauer der Vorverarbeitung im Node Particles2D vorübergehend ä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 mitverschoben:

../../_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

Zeichenreihenfolge

Dies steuert die Reihenfolge, in der einzelne Partikel gezeichnet werden. Index bedeutet, dass die Partikel in der Reihenfolge ihrer Emission gezeichnet werden (Default). Lifetime bedeutet, dass sie in der Reihenfolge ihrer verbleibenden Lebensdauer gezeichnet werden.

ParticleProcessMaterial-Einstellungen

Richtung

Dies ist die Basisrichtung, in der die Partikel emittiert werden. Der Default ist Vector3(1, 0, 0), wodurch die Partikel nach rechts emittiert werden. Mit den Defaulteinstellungen der Schwerkraft gehen die Partikel jedoch gerade nach unten.

../../_images/direction1.png

Damit diese Property 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

Streuung

Dieser Parameter ist der Winkel in Grad, der zufällig in jede Richtung zur Basis-Richtung 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

Flachheit

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

Schwerkraft

Die Schwerkraft, die auf jedes Partikel angewendet wird.

../../_images/paranim7.gif

Anfangsgeschwindigkeit

Die Anfangsgeschwindigkeit ist die Geschwindigkeit, mit der Partikel emittiert werden (in Pixeln pro Sekunde). Die 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

Orbitgeschwindigkeit

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

../../_images/paranim6.gif

Lineare Beschleunigung

Die lineare Beschleunigung, die auf jedes Partikel angewendet wird.

Radiale Beschleunigung

Wenn diese Beschleunigung positiv ist, werden Partikel vom Zentrum weg beschleunigt. Wenn sie negativ sind, werden von ihm 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

Bei der Dämpfung werden die Partikel durch Reibung zum Anhalten gezwungen. Dies ist besonders nützlich für Funken oder Explosionen, die in der Regel mit einer hohen linearen Geschwindigkeit beginnen und dann beim Abklingen anhalten.

../../_images/paranim10.gif

Winkel

Bestimmt den Anfangswinkel des Partikels (in Grad). Dieser Parameter wird meistens randomisiert genutzt.

../../_images/paranim11.gif

Skalierung

Bestimmt die initiale Skalierung der Partikel.

../../_images/paranim12.gif

Farbe

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

Farbton-Variation

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.

Animation

Bemerkung

Die Partikel-Flipbook-Animation ist nur wirksam, wenn das CanvasItemMaterial, das auf dem GPUParticles2D- oder CPUParticles2D-Node verwendet wird, entsprechend konfiguriert wurde.

Um das Partikel-Flipbook für die lineare Wiedergabe einzurichten, setzen Sie die Werte Geschwindigkeit Min und Geschwindigkeit Max auf 1:

Einrichten der Partikelanimation für die Wiedergabe während der Lebensdauer des Partikels

Einrichten der Partikelanimation für die Wiedergabe während der Lebensdauer des Partikels

Standardmäßig ist Looping deaktiviert. Wenn das Partikel vor dem Ende seiner Lebensdauer abgespielt wird, verwendet das Partikel weiterhin das letzte Bild des Flipbooks (das je nach Gestaltung der Flipbook-Textur vollständig transparent sein kann). Wenn Looping aktiviert ist, springt die Animation zum ersten Bild zurück und wird erneut abgespielt.

Je nachdem, wie viele Bilder Ihr Sprite-Sheet enthält und wie lange Ihr Partikel aktiv ist, sieht die Animation möglicherweise nicht flüssig aus. Die Beziehung zwischen der Lebensdauer des Partikels, der Animationsgeschwindigkeit und der Anzahl der Bilder im Sprite Sheet ist die folgende:

Bemerkung

Bei einer Animationsgeschwindigkeit von 1.0 erreicht die Animation das letzte Bild in der Sequenz genau dann, wenn die Lebensdauer des Partikels endet.

\[Animation\ FPS = \frac{Anzahl\ der\ Bilder}{Lebensdauer}\]

Wenn Sie möchten, dass das Partikel-Flipbook als Quelle für zufällige Partikeltexturen für jedes Partikel verwendet wird, lassen Sie die Geschwindigkeitswerte auf 0 und setzen Sie stattdessen Offset Max auf 1:

Einrichten einer Partikelanimation für einen zufälligen Offset bei der Emission

Einrichten einer Partikelanimation für einen zufälligen Offset bei der Emission

Beachten Sie, dass der Wert Feste FPS des Nodes GPUParticles2D auch die Wiedergabe der Animation beeinflusst. Für eine flüssige Animationswiedergabe wird empfohlen, den Wert auf 0 zu setzen, damit die Partikel bei jedem gerenderten Frame simuliert werden. Wenn dies für Ihren Anwendungsfall nicht in Frage kommt, setzen Sie Feste FPS auf die effektive Framerate, die von der Flipbook-Animation verwendet wird (siehe oben für die Formel).

Emissions-Shapes

Mit ParticleProcessMaterials können Sie eine Emissionsmaske festlegen, die den Bereich und die Richtung vorgibt, in die Partikel emittiert werden. Diese können aus Texturen in Ihrem Projekt generiert werden.

Stellen Sie sicher, dass ein ParticleProcessMaterial eingestellt und der Node GPUParticles2D ausgewählt ist. In der Toolbar sollte ein Menü "Partikel" 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
  • Rand-Pixel: Die Partikel werden von den äußeren Rändern der Textur erzeugt.

../../_images/emission_mask_border.gif
  • Gerichtete Rand-Pixel: Ähnlich wie Rand-Pixel, 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 Anfangsgeschwindigkeit gesetzt werden muss, um dies zu nutzen.

../../_images/emission_mask_directed_border.gif

Emissionsfarben

Von Pixel aufnehmen bewirkt, dass die Partikel die Farbe der Maske an ihren Spawnpunkten erben.

Sobald Sie auf "OK" klicken, wird die Maske erzeugt und auf das ParticleProcessMaterial unter dem Abschnitt Emissions-Shape gesetzt:

../../_images/emission_shapes4.png

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

Bemerkung

Ein Bild sollte nicht direkt zur Punkt-Textur oder Farb-Textur hinzugefügt werden. Es sollte immer das "Emissionsmaske laden"-Menü benutzt werden.