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.
Checking the stable version of the documentation...
Sistemi di particelle 2D
Introduzione
I sistemi di particelle servono per simulare effetti fisici complessi, come scintille, fuoco, particelle magiche, fumo, nebbia, ecc.
The idea is that a "particle" is emitted at a fixed interval and with a fixed lifetime. During its lifetime, every particle will have the same base behavior. What makes each particle different from the rest and provides a more organic look is the "randomness" associated with each parameter. In essence, creating a particle system means setting base physics parameters and then adding randomness to them.
Nodi di particelle
Godot fornisce due diversi nodi per particelle 2D, GPUParticles2D e CPUParticles2D. GPUParticles2D è più avanzato e utilizza la GPU per elaborare gli effetti delle particelle. CPUParticles2D è un'opzione gestita dalla CPU con parità di funzionalità vicina a GPUParticles2D, ma con prestazioni inferiori con una grande quantità di particelle. D'altra parte, CPUParticles2D potrebbe funzionare meglio su sistemi di fascia bassa o in situazioni con colli di bottiglia dovuti alla GPU.
Mentre GPUParticles2D è configurato tramite un ParticleProcessMaterial (e facoltativamente con uno shader personalizzato), le opzioni corrispondenti sono fornite tramite le proprietà del nodo stesso in CPUParticles2D (ad eccezione delle impostazioni della scia).
In futuro non è previsto aggiungere nuove funzionalità a CPUParticles2D, ma saranno accettate le pull request per aggiungere funzionalità già presenti in GPUParticles2D. Per questo motivo, consigliamo di utilizzare GPUParticles2D, a meno che non ci siano motivi specifici per non farlo.
Puoi convertire un nodo GPUParticles2D in un nodo CPUParticles2D cliccando sul nodo nell'albero di scene, selezionando lo spazio di lavoro 2D e selezionando CPUParticles2D > Converti in CPUParticles2D nella barra degli strumenti.
È anche possibile convertire un nodo GPUParticles2D in un nodo CPUParticles2D, ma potrebbero esserci problemi se utilizzi funzionalità esclusive per la GPU.
Il resto di questo tutorial utilizzerà il nodo GPUParticles2D. Per prima cosa, aggiungi un nodo GPUParticles2D alla tua scena. Dopo aver creato il nodo, noterai che è stato creato solo un punto bianco e che accanto al nodo GPUParticles2D nel pannello Scena è presente un'icona di avviso. Questo perché il nodo ha bisogno di un ParticleProcessMaterial per funzionare.
ParticleProcessMaterial
To add a process material to your particles node, go to Process Material in
your inspector panel. Click on the box next to Material, and from the dropdown
menu select New ParticleProcessMaterial.
Il nodo GPUParticles2D dovrebbe ora emettere punti bianchi verso il basso.
Texture
A particle system can use a single texture or an animation flipbook. A flipbook is a texture that contains several frames of animation that can be played back, or chosen at random during emission. This is equivalent to a spritesheet for particles.
La texture è impostata tramite la proprietà Texture:
Utilizzo di un flipbook di animazione
I flipbook di particelle sono adatti a riprodurre effetti complessi come fumo, fuoco ed esplosioni. Possono anche servire per introdurre variazioni casuali di texture, facendo in modo che ogni particella utilizzi una texture diversa. È possibile trovare immagini di flipbook di particelle già esistenti online, oppure pre-renderizzarle attraverso strumenti esterni come Blender o EmberGen, ad esempio.
Esempio di un sistema di particelle che utilizza una texture a flipbook
Using an animation flipbook requires additional configuration compared to a single texture. For demonstration purposes, we'll use this texture with 5 columns and 7 rows (right-click and choose Save as…):
Credito: JoesAlotofthings (CC BY 4.0)
To use an animation flipbook, you must create a new CanvasItemMaterial in the Material section of the GPUParticles2D (or CPUParticles2D) node:
Creazione di un CanvasItemMaterial nella parte inferiore dell'ispettore del nodo di particelle
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:
Configuring the CanvasItemMaterial for the example flipbook texture
Fatto ciò, la sezione Animation in ParticleProcessMaterial (per GPUParticles2D) o nell'ispettore di CPUParticles2D sarà effettiva.
Suggerimento
Se la texture flipbook ha uno sfondo nero anziché trasparente, sarà anche necessario impostare la modalità di fusione su Add invece di Mix per una visualizzazione corretta. Alternativamente, puoi modificare la texture per renderla trasparente tramite un editor di immagini. In GIMP, puoi farlo tramite il menu Colore > Colore ad alfa.
Time parameters
Durata di vita
The time in seconds that every particle will stay alive. When lifetime ends, a new particle is created to replace it.
Durata di vita: 0.5
Durata di vita: 4.0
Colpo singolo
Quando abilitato, un nodo GPUParticles2D emetterà tutte le sue particelle una sola volta e poi mai più.
Preprocesso
I sistemi di particelle iniziano con zero particelle emesse, per poi iniziare a emetterle. Questo può essere un inconveniente al caricamento di una scena, poiché sistemi come una torcia, la nebbia, ecc. iniziano a emettere particelle non appena si entra. La pre-elaborazione serve consentire al sistema di elaborare un determinato numero di secondi prima di essere effettivamente disegnato per la prima volta.
Scala di velocità
La scala di velocità ha un valore predefinito di 1 e serve per regolare la velocità di un sistema di particelle. Abbassando il valore, le particelle saranno più lente, mentre aumentandolo saranno molto più veloci.
Esplosività
Se la durata di vita è 1 e ci sono 10 particelle, significa che una particella sarà emessa ogni 0,1 secondi. Il parametro di esplosività modifica questo comportamento, forzando l'emissione di tutte le particelle assieme. Gli intervalli sono:
0: emette particelle a intervalli regolari (valore predefinito).
1: emette tutte le particelle simultaneamente.
Sono permessi anche valori intermedi. Questa funzionalità è utile per creare esplosioni o raffiche improvvise di particelle:
Casualità
È possibile randomizzare tutti i parametri fisici. I valori casuali vanno da 0 a 1. La formula per randomizzare un parametro è:
initial_value = param_value + param_value * randomness
FPS fisso
Questa impostazione può servire per impostare il sistema di particelle in modo che sia renderizzato a un FPS fisso. Ad esempio, modificando il valore a 2, le particelle saranno renderizzate a 2 fotogrammi al secondo. Nota che ciò non rallenta il sistema di particelle stesso.
Nota
Godot 4.3 attualmente non supporta l'interpolazione della fisica per le particelle 2D. Come soluzione alternativa, disabilita l'interpolazione della fisica per il nodo di particelle impostando Node > Interpolazione della fisica > Modalità in fondo all'ispettore.
Delta frazionario
Impostando Fract Delta su true si abilita il calcolo del delta frazionario, che visualizza le particelle più fluidamente. Questa maggiore fluidità deriva da una maggiore precisione. La differenza è più evidente nei sistemi con elevata casualità o particelle in rapido movimento. Aiuta a mantenere la coerenza visiva del sistema di particelle, assicurando che il movimento di ciascuna particella sia coerente con la sua effettiva durata. Senza questa impostazione, le particelle potrebbero apparire più lente o muoversi più del dovuto in un singolo frame se sono emesse in un momento specifico all'interno del frame stesso. La maggiore precisione ha un compromesso sulle prestazioni, soprattutto nei sistemi con un numero elevato di particelle.
Parametri di disegno
Rettangolo di visibilità
Il rettangolo di visibilità controlla la visibilità delle particelle sullo schermo. Se questo rettangolo si trova fuori la viewport, il motore non renderizzerà le particelle sullo schermo.
Le proprietà W e H del rettangolo controllano rispettivamente la sua larghezza e la sua altezza. Le proprietà X e Y controllano la posizione dell'angolo superiore sinistro del rettangolo, rispetto all'emettitore di particelle.
You can have Godot generate a Visibility Rect automatically using the toolbar above the 2d view. To do so, select the GPUParticles2D node and Click Particles > Generate Visibility Rect. Godot will simulate the Particles2D node emitting particles for a few seconds and set the rectangle to fit the surface the particles take.
You can control the emit duration with the Generation Time (sec) option. The maximum value is 25 seconds. If you need more time for your particles to move around, you can temporarily change the preprocess duration on the Particles2D node.
Coordinate locali
Normalmente, questa opzione è disattivata. Ciò significa che lo spazio in cui sono emesse le particelle è globale e non relativo al nodo. Se il nodo viene spostato, le particelle esistenti non vengono spostate con esso:
Se abilitata, l'emissione delle particelle avverrà nello spazio locale, il che significa che se il nodo viene spostato, anche le particelle già emesse verranno influenzate:
Ordine di disegno
This controls the order in which individual particles are drawn. Index
means particles are drawn according to their emission order (default).
Lifetime means they are drawn in order of remaining lifetime.
Impostazioni di ParticlesProcessMaterial
For information on the settings in the ParticleProcessMaterial see this page.