Work in progress

The content of this page was not yet updated for Godot 4.5 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).

Going forward there are no plans to add new features to CPUParticles2D, though pull requests to add features already in GPUParticles2D will be accepted. For that reason we recommend using GPUParticles2D unless you have an explicit reason not to.

You can convert a CPUParticles2D node into a GPUParticles2D node by clicking on the node in the scene tree, selecting the 2D workspace, and selecting CPUParticles2D > Convert to GPUParticles2D in the toolbar.

../../_images/particles_convert.webp

Es ist auch möglich einen GPUParticles2D Node in einen CPUParticles2D Node zu konvertieren, jedoch kann es zu Problemen kommen wenn Sie GPU-only Features nutzen.

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.webp

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.webp

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.

Bemerkung

Godot 4.3 does not currently support physics interpolation for 2D particles. As a workaround, disable physics interpolation for the particles node by setting Node > Physics Interpolation > Mode at the bottom of the inspector.

Delta-Bruchteil

Setting Fract Delta to true results in fractional delta calculation, which has a smoother particles display effect. This increased smoothness stems from higher accuracy. The difference is more noticeable in systems with high randomness or fast-moving particles. It helps maintain the visual consistency of the particle system, making sure that each particle's motion aligns with its actual lifespan. Without it, particles might appear to jump or move more than they should in a single frame if they are emitted at a point within the frame. The greater accuracy has a performance tradeoff, particularly in systems with a higher amount of particles.

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.

Particle Process Material Settings

For information on the settings in the ParticleProcessMaterial see this page.