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.
L'idea è che una "particella" viene emessa a intervalli fissi e con una durata di vita fissa. Durante la sua vita, ogni particella avrà lo stesso comportamento base. Ciò che rende ogni particella diversa dalle altre e conferisce un aspetto più organico è la "casualità" associata a ciascun parametro. In sostanza, creare un sistema di particelle significa impostare i parametri fisici base e poi aggiungere una casualità ad essi.
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
Per aggiungere un materiale di processo al nodo di particelle, vai su Process Material nel pannello Ispettore. Clicca sulla casella accanto a Material e dal menu a discesa seleziona Nuovo ParticleProcessMaterial.
Il nodo GPUParticles2D dovrebbe ora emettere punti bianchi verso il basso.
Texture
Un sistema di particelle può utilizzare una singola texture o un'animazione flipbook. Un flipbook è una texture che contiene più fotogrammi di animazione che possono essere riprodotti o scelti casualmente durante l'emissione. Questo è l'equivalente di uno spritesheet per le particelle.
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
Utilizzare un'animazione flipbook richiede un'ulteriore configurazione rispetto a una singola texture. A scopo dimostrativo, useremo questa texture con 5 colonne e 7 righe (fai clic destro e scegli Salva con nome…):
Credito: JoesAlotofthings (CC BY 4.0)
Per utilizzare un'animazione flipbook, è necessario creare un nuovo CanvasItemMaterial nella sezione Materiali del nodo GPUParticles2D (o CPUParticles2D):
Creazione di un CanvasItemMaterial nella parte inferiore dell'ispettore del nodo di particelle
In questo CanvasItemMaterial, abilita Particle Animation e imposta H Frames e V Frames sul numero di colonne e righe presenti nella texture a flipbook:
Configurazione del CanvasItemMaterial per la texture a flipbook di esempio
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.
Parametri temporali
Durata di vita
Il tempo in secondi che ogni particella rimarrà in vita. Quando la durata di vita termina, una nuova particella viene creata per sostituirla.
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.
È possibile generare automaticamente un rettangolo di visibilità in Godot attraverso la barra degli strumenti sopra la vista 2D. Per farlo, seleziona il nodo GPUParticles2D e clicca su Particles > Generate Visibility Rect. Godot simulerà l'emissione di particelle dal nodo Particles2D per alcuni secondi e imposterà il rettangolo per adattarsi alla superficie occupata dalle particelle.
È possibile controllare la durata dell'emissione tramite l'opzione Generation Time (sec). Il valore massimo è di 25 secondi. Se c'è bisogno di più tempo affinché le particelle si muovano, è possibile modificare temporaneamente la proprietà preprocess sul nodo Particles2D.
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
Questa controlla l'ordine in cui vengono disegnate le singole particelle. Index significa che le particelle vengono disegnate in base al loro ordine di emissione (predefinito). Lifetime significa che vengono disegnate in ordine di durata rimasta.
Impostazioni di ParticlesProcessMaterial
Per informazioni sulle impostazioni in ParticleProcessMaterial vedi questa pagina.