Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Systèmes de particules 2D

Introduction

Les systèmes de particules sont utilisés pour simuler des effets physiques complexes tels que des étincelles, du feu, des particules magiques, de la fumée, de la brume, de la magie, etc.

L'idée est qu'une "particule" soit émise à un intervalle fixe et avec une durée de vie fixe. Au cours de sa vie, chaque particule aura le même comportement de base. Ce qui rend chaque particule différente et donne un aspect plus organique, c'est le "caractère aléatoire" associé à chaque paramètre. En substance, créer un système de particules signifie définir les paramètres de base de la physique, puis leur ajouter un caractère aléatoire.

Nœuds de particules

Godot provides two different nodes for 2D particles, GPUParticles2D and CPUParticles2D. GPUParticles2D is more advanced and uses the GPU to process particle effects. CPUParticles2D is a CPU-driven option with near-feature parity with GPUParticles2D, but lower performance when using large amounts of particles. On the other hand, CPUParticles2D may perform better on low-end systems or in GPU-bottlenecked situations.

Bien que GPUParticles2D soit configuré via un ParticleProcessMaterial (et potentiellement avec un shader personnalisé), les options correspondantes sont fournies via des propriétés de nœud dans CPUParticles2D (à l'exception des paramètres de trainée).

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

It is also possible to convert a GPUParticles2D node to a CPUParticles2D node, however there may be issues if you use GPU-only features.

Le reste de ce tutoriel va utiliser le nœud GPUParticles2D. Tout d'abord, ajoutez un nœud GPUParticles2Dà votre scène. Après avoir créé ce nœud, vous remarquerez que seul un point blanc a été créé et qu'il y a une icône d'avertissement à côté de votre nœud GPUParticles2Ddans le dock de la scène. Cela est dû au fait que le nœud a besoin d'un ParticleProcessMaterial pour fonctionner.

ParticleProcessMaterial

Pour ajouter un matériau de processus à votre nœud de particules, accédez à Matériau de processus dans votre panneau d’inspecteur. Cliquez sur la case à côté de Matériau, puis sélectionnez Nouveau ParticleProcessMaterial dans le menu déroulant.

../../_images/particles_material.webp

Votre nœud GPUParticles2D devrait maintenant émettre des points blancs vers le bas.

../../_images/particles1.png

Texture

Un système de particules peut utiliser une seule texture ou un flipbook d'animation. Un flipbook est une texture qui contient plusieurs images d'animation pouvant être lues ou choisies au hasard lors de l'émission. Cela équivaut à une feuille de sprites pour les particules.

La texture est choisie via la propriété Texture :

../../_images/particles2.webp

Using an animation flipbook

Les Particle flipbooks sont adaptés pour reproduire des effets complexes tels que la fumée, le feu, les explosions. Ils peuvent également être utilisés pour introduire une variation aléatoire de texture, en faisant en sorte que chaque particule utilise une texture différente. Vous pouvez trouver des images de particle flipbooks existantes en ligne, ou les pré-rendre à l'aide d'outils externes tels que Blender ou EmberGen.

Exemple d'un système de particules utilisant une flipbook texture

Exemple d'un système de particules utilisant une flipbook texture

L'utilisation d'un flipbook d'animation nécessite une configuration supplémentaire par rapport à une texture seule. À des fins de démonstration, nous allons utiliser cette texture avec 5 colonnes et 7 rangées (clic droit et choisissez Enregistrer comme...) :

Exemple de texture de particules flipbook

Crédit : JoesAlotofthings (CC BY 4.0)

Pour utiliser un animation flipbook, vous devez créer un nouveau CanvasItemMaterial dans la section Material du nœud GPUParticles2D (ou CPUParticles2D) :

Création d'une CanvasItemMaterial en bas de l'inspecteur du nœud de particules

Création d'une CanvasItemMaterial en bas de l'inspecteur du nœud de particules

In this CanvasItemMaterial, enable Particle Animation and set H Frames and V Frames to the number of columns and rows present in your flipbook texture:

Configuration du CanvasItemMaterial pour la flipbook texture de l'exemple

Configuration du CanvasItemMaterial pour la flipbook texture de l'exemple

Une fois cela fait, la section Animation dans ParticleProcessMaterial (pour GPUParticles2D) ou dans l'inspecteur CPUParticles2D sera effective.

Astuce

Si votre texture flipbook a un fond noir au lieu d'un fond transparent, vous devrez également définir le mode de fusion sur Add au lieu de Mix pour un affichage correct. Sinon, vous pouvez modifier la texture pour qu'elle ait un fond transparent dans un éditeur d'images. Dans GIMP, cela peut être fait en utilisant le menu Couleur > Couleur vers Alpha.

Paramètres de temps

Durée de vie

Le temps en secondes que chaque particule restera en vie. Lorsque la durée de vie est terminée, une nouvelle particule est créée pour la remplacer.

Durée de vie : 0.5

../../_images/paranim14.gif

Durée de vie : 4.0

../../_images/paranim15.gif

Jouer une fois

Lorsqu'il est activé, un nœud GPUParticles2D émettra toutes ses particules une fois, puis jamais plus.

Pré-traitement

Les systèmes de particules commencent avec zéro particule émise, puis commencent à émettre. Cela peut être un inconvénient lors du chargement d'une scène et des systèmes comme une torche, une brume, etc. commencent à émettre dès que vous entrez. Le prétraitement est utilisé pour permettre au système de traiter un nombre donné de secondes avant qu'il ne soit réellement dessiné la première fois.

Échelle de vitesse

L'échelle de vitesse a une valeur par défaut de 1 et est utilisée pour ajuster la vitesse d'un système de particules. Réduire la valeur ralentira les particules tandis que l'augmenter les rendra beaucoup plus rapides.

Explovisité

Si la durée de vie est 1 et qu'il y a 10 particules, cela signifie qu'une particule sera émise toutes les 0,1 secondes. Le paramètre d'explosivité change cela et oblige les particules à être émises toutes ensemble. Les gammes sont :

  • 0 : émettre des particules à intervalles réguliers (valeur par défaut).

  • 1 : Émettre toutes les particules simultanément.

Les valeurs au milieu sont également autorisées. Cette fonctionnalité est utile pour créer des explosions ou des explosions soudaines de particules :

../../_images/paranim18.gif

Aléatoire

Tous les paramètres physiques peuvent être randomisés. Les valeurs aléatoires vont de 0 à 1. La formule pour randomiser un paramètre est la suivante :

initial_value = param_value + param_value * randomness

FPS fixes

Ce paramètre peut être utilisé pour configurer le système de particules pour qu'il rende à un FPS donné. Par exemple, si vous modifiez la valeur à 2, les particules seront rendues à 2 images par seconde. Notez que cela ne ralentit pas le système de particules lui-même.

Note

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 Fraction

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.

Paramètres de dessin

Zone de Visibilité

Le rectangle de visibilité contrôle la visibilité des particules à l'écran. Si ce rectangle est à l'extérieur de la fenêtre, le moteur ne rendra pas les particules à l'écran.

Les propriétés W et H du rectangle contrôlent respectivement sa Largeur et sa Hauteur. Les propriétés X et Y contrôlent la position du coin supérieur gauche du rectangle par rapport à l'émetteur de particules.

Vous pouvez demander à Godot de générer un rectangle de visibilité automatiquement à l’aide de la barre d’outils au-dessus de la vue 2d. Pour ce faire, sélectionnez le nœud GPUParticles2D et cliquez sur Particules > Générer un rectangle de visibilité. Godot va simuler le nœud GPUParticles2D émettant des particules pendant quelques secondes et réglera le rectangle pour s’adapter à la surface que prennent les particules.

Vous pouvez contrôler la durée d'émission avec l'option Generation Time (sec). La valeur maximale est de 25 secondes. Si vous avez besoin de plus de temps pour que vos particules se déplacent, vous pouvez changer temporairement la durée du preprocessus sur le nœud Particules2D.

Coordonnées locales

By default, this option is off. It means that the space that particles are emitted to is global, and not relative to the node. If the node is moved, existing particles are not moved with it:

../../_images/paranim21.gif

If enabled, particles will emit to local space, meaning that if the node is moved, already emitted particles are also affected:

../../_images/paranim20.gif

Ordre de rendu

Ceci contrôle l'ordre dans lequel les particules individuelles sont dessinées. Index signifie que les particules sont dessinées en fonction de leur ordre d'émission (valeur par défaut). Lifetime signifie qu'elles sont dessinées dans l'ordre de leur durée de vie restante.

Particle Process Material Settings

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