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.

Proprietà di materiale di processo

Proprietà di ParticleProcessMaterial

Proprietà di minimo, massimo e curva

Le proprietà di questo materiale controllano il comportamento e i cambiamenti che le particelle subiscono nel corso della loro vita. Molte di esse hanno valori Min, Max e Curve che consentono di regolarne con precisione il comportamento. La relazione tra questi valori è la seguente: quando una particella viene generata, la proprietà viene impostata con un valore casuale tra Min e Max. Se Min e Max sono uguali, il valore sarà sempre lo stesso per ogni particella. Se anche Curve è impostata, il valore della proprietà verrà moltiplicato per il valore della curva nel punto attuale della vita della particella. Utilizza la curva per cambiare una proprietà durante la vita della particella. È possibile esprimere comportamenti molto complessi in questo modo.

Nota

Questa pagina illustra come utilizzare ParticleProcessMaterial specificamente per scene 3D. Per informazioni su come utilizzarlo in una scena 2D, consultare Utilizzo di ParticlesProcessMaterial in 2D.

Tempo

La proprietà Lifetime Randomness controlla quanta casualità applicare al tempo di vita di ciascuna particella. Un valore di 0 significa che non c'è alcuna casualità e tutte le particelle vivono per lo stesso intervallo di tempo, impostato dalla proprietà Lifetime. Un valore di 1 significa che il tempo di vita di una particella è completamente casuale nell'intervallo [0,0, Lifetime].

Flag di particelle

La proprietà Align Y allinea l'asse Y di ciascuna particella con la sua velocità. Abilitare questa proprietà equivale a impostare la proprietà Transform Align su Y to Velocity.

La proprietà Rotate Y interagisce con le proprietà dei gruppi Angle e Angular Velocity per controllare la rotazione delle particelle. Bisogna abilitare Rotate Y se si desidera applicare una rotazione alle particelle. C'è un'eccezione per le particelle che utilizzano il materiale standard in cui la proprietà Billboard è impostata su Particle Billboard. In tal caso, le particelle ruotano anche senza che Rotate Y sia abilitato.

Quando la proprietà Disable Z è abilitata, le particelle non si muoveranno lungo l'asse Z. Che sia l'asse Z locale del sistema di particelle o l'asse Z globale è determinato dalla proprietà Local Coords.

La proprietà Damping as Friction cambia il comportamento dello smorzamento, passando da una decelerazione costante a una decelerazione basata sulla velocità.

Spawn

Forma d'emissione

Le particelle possono essere emesse da un singolo punto nello spazio o in modo da riempire una forma. La proprietà Shape controlla tale forma. Point è il valore predefinito. Tutte le particelle vengono emesse da un singolo punto al centro del sistema di particelle. Quando impostato su Sphere o Box, le particelle vengono emesse in modo da riempire uniformemente una sfera o un riquadro. È possibile controllare completamente le dimensioni di queste forme. Sphere Surface funziona come Sphere, ma anziché riempirla, tutte le particelle vengono generate sulla superficie della sfera.

Forme semplici di emissione di particelle

Particelle emesse da un punto (a sinistra), da una sfera (al centro) e da un riquadro (a destra)

Sistema di particelle ad anello

Un sistema di particelle a forma di anello

La forma di emissione Ring fa emettere le particelle nella forma di un anello. È possibile controllare la direzione dell'anello modificando la proprietà Ring Axis. Ring Height controlla lo spessore dell'anello lungo il suo asse. Ring Radius e Ring Inner Radius controllano la larghezza dell'anello e del foro al centro. L'immagine mostra un sistema di particelle con un raggio di 2 e un raggio interno di 1,5, con l'asse che punta lungo l'asse Z globale.

Oltre a queste forme relativamente semplici, è possibile selezionare l'opzione Points o Directed Points per creare forme di emissione molto complesse. Consulta la sezione Forme di emissione complesse per una spiegazione dettagliata su come configurarle.

Angolo

La proprietà Angle controlla la rotazione iniziale di una particella, come descritto sopra. Per avere effetto sulla particella, è necessario abilitare una tra due proprietà: Rotate Y ruota la particella attorno all'asse Y del sistema di particelle. La proprietà Billboard nello Standard Material, se impostata su Particle Billboard, ruota la particella attorno all'asse che punta dalla particella alla telecamera.

Direzione

Nota

La proprietà Direction da sola non basta per vedere il movimento delle particelle. Qualunque valore impostato in questa sezione avrà effetto solo dopo aver impostato anche le proprietà di velocità o accelerazione.

La proprietà Direction è un vettore che controlla la direzione di movimento di ciascuna particella nel momento in cui viene generata. Un valore di (X=1,Y=0,Z=0) farebbe muovere tutte le particelle lateralmente lungo l'asse X. Per qualcosa come una fontana in cui le particelle sono sparate verso l'alto, un valore di (X=0,Y=1,Z=0) sarebbe un buon punto di partenza.

Valori diversi per la direzione delle particelle

Diversi valori di direzione: solo asse Y (a sinistra), valori uguali per X e Y (al centro), X e Y con gravità abilitata (a destra)

Dopo aver impostato una direzione, noterai che tutte le particelle si muovono nella stessa direzione in linea retta. La proprietà Spread aggiunge un po' di variazione e casualità alla direzione di ciascuna particella. Più alto è il valore, maggiore sarà la deviazione dal percorso originale. Un valore di 0 significa che non c'è alcuna dispersione, mentre un valore di 180 fa proiettare le particelle in tutte le direzioni. Potresti utilizzarla per qualcosa come i detriti durante un effetto di esplosione.

Valori diversi per la dispersione delle particelle

Nessuna dispersione (a sinistra), angolo di 45 gradi (al centro), 180 gradi completi (a destra)

La proprietà Flatness limita la dispersione lungo l'asse Y. Un valore di 0 significa che non c'è limite, mentre un valore di 1 elimina completamente il movimento delle particelle lungo l'asse Y. Le particelle si distribuiranno in modo completamente "piatto".

Non vedrai alcun movimento effettivo finché non imposterai anche qualche valore per le proprietà di velocità e accelerazione, quindi diamoci un'occhiata ora.

Velocità iniziale

Mentre la proprietà Direction controlla la direzione di movimento di una particella, la Initial Velocity ne controlla la velocità. È suddivisa in Velocity Min e Velocity Max, entrambe impostate a 0 normalmente, motivo per cui inizialmente non si vede alcun movimento. Non appena si impostano i valori per una di queste proprietà, come descritto sopra, le particelle inizieranno a muoversi. La direzione viene moltiplicata per questi valori, quindi è possibile far muovere le particelle nella direzione opposta impostando una velocità negativa.

Accelerazioni

Gravità

I prossimi gruppi di proprietà lavorano fianco a fianco per controllare il movimento e la rotazione delle particelle. La proprietà Gravity trascina le particelle nella direzione a cui punta, che normalmente è direttamente in basso con l'intensità della gravità della Terra. La gravità influenza il movimento di tutte le particelle. Se il gioco utilizza la fisica e la gravità del mondo può cambiare durante l'esecuzione, è possibile usare questa proprietà per mantenere la gravità del gioco sincronizzata con la gravità delle particelle. Un valore di Gravity pari a (X=0,Y=0,Z=0) significa che nessuna particella si muoverà mai se nessuna delle altre proprietà di movimento è impostata.

Valori diversi per la gravità delle particelle

A sinistra: (X=0,Y=-9.8,Z=0), al centro: (X=0,Y=9.8,Z=0), a destra: (X=4,Y=2,Z=0).

Velocità angolare

La Angular Velocity controlla la velocità di rotazione di una particella, come descritto sopra. È possibile invertire la direzione usando numeri negativi per Velocity Min o Velocity Max. Come per la proprietà Angle, la rotazione sarà visibile solo se è impostato il flag Rotate Y o se è selezionata la modalità Particle Billboard nello Standard Material.

Nota

La proprietà Damping non ha alcun effetto sulla velocità angolare.

Accelerazione lineare

La velocità di una particella è un valore costante: una volta impostata, non cambia e la particella si muoverà sempre alla stessa velocità. È possibile utilizzare la proprietà Linear Accel per cambiare la velocità di movimento durante la vita di una particella, come descritto sopra. I valori positivi accelereranno la particella e la faranno muovere più velocemente. I valori negativi la rallenteranno fino a fermarla e a farla muovere nella direzione opposta.

Valori diversi per l'accelerazione lineare delle particelle

Accelerazione lineare negativa (in alto) e positiva (in basso)

È importante tenere presente che quando cambiamo l'accelerazione, non stiamo cambiando direttamente la velocità, ma stiamo cambiando la variazione di velocità. Un valore di 0 sulla curva di accelerazione non ferma il movimento della particella, ma ferma la variazione del suo movimento. Qualunque fosse la sua velocità in quel momento, continuerà a muoversi a quella velocità finché l'accelerazione non sarà cambiata di nuovo.

Accelerazione radiale

La proprietà Radial Accel aggiunge una forza simile alla gravità a tutte le particelle, con l'origine di tale forza nella posizione attuale del sistema di particelle. Valori negativi fanno muovere le particelle verso il centro, come la forza di gravità di un pianeta sugli oggetti nella sua orbita. Valori positivi fanno allontanare le particelle dal centro.

Valori diversi per l'accelerazione radiale delle particelle

Accelerazione radiale negativa (a sinistra) e positiva (a destra)

Accelerazione tangenziale

Tangenti su un cerchio

Tangenti su un cerchio

Questa proprietà aggiunge un'accelerazione alle particelle nella direzione della tangente a una circonferenza sul piano XZ del sistema di particelle, con origine al centro del sistema e raggio pari alla distanza tra la posizione attuale di ciascuna particella e il centro del sistema proiettato su tale piano.

Analizziamo in dettaglio.

Una tangente a una circonferenza è una retta che "tocca" la circonferenza ad un angolo retto rispetto al raggio della circonferenza nel punto di tocco. Una circonferenza sul piano XZ del sistema di particelle è la circonferenza che si vede guardando il sistema di particelle dall'alto verso il basso.

Accelerazione tangenziale dall'alto

Accelerazione tangenziale dall'alto

Tangential Accel è sempre limitata a quel piano e non muove mai le particelle lungo l'asse Y del sistema. La posizione di una particella è sufficiente a definire un cerchio in cui la distanza dal centro del sistema è il raggio, se si ignora la componente Y del vettore.

La proprietà Tangential Accel farà orbitare le particelle attorno al centro del sistema, ma il raggio aumenterà costantemente. Viste dall'alto, le particelle si allontaneranno dal centro formando una spirale. I valori negativi invertono la direzione.

Smorzamento

La proprietà Damping ferma gradualmente ogni movimento. Ad ogni frame, il movimento di una particella viene leggermente rallentato, a meno che l'accelerazione totale non sia maggiore dell'effetto di smorzamento. Se non lo è, la particella continuerà a rallentare fino a fermarsi completamente. Più alto è il valore, meno tempo ci vorrà per fermare completamente le particelle.

Interazione con attrattore

Se vuoi che il sistema di particelle interagisca con gli attrattori di particelle :ref:`, è necessario abilitare la proprietà Enabled. Quando è disabilitata, il sistema di particelle ignora tutti gli attrattori di particelle.

Display

Scala

Scale controlla la dimensione delle particelle come descritto sopra. È possibile impostare valori diversi per Scale Min e Scale Max per randomizzare la dimensione di ciascuna particella. I valori negativi non sono consentiti, quindi non sarà possibile capovolgere le particelle con questa proprietà. Se si emettono particelle come billboard, bisogna abilitare la proprietà Keep Size sullo Standard Material nei passaggi di disegno affinché qualsiasi ridimensionamento abbia effetto.

Colore

La proprietà Color controlla il colore iniziale di una particella. Avrà effetto solo dopo che la proprietà Use As Albedo nel gruppo Vertex Color dello Standard Material è stata abilitata. Questa proprietà viene moltiplicata per il colore proveniente dalla proprietà Color o Texture del materiale delle particelle stesse.

Rampa di colore delle particelle

Configurazione di una rampa di colori

Nel gruppo Color ci sono due proprietà Ramp. Queste consentono di definire un'intervallo di colori usati per impostare il colore della particella. La proprietà Color Ramp cambia il colore di una particella nel corso della sua vita, attraversando l'intero intervallo di colori definiti. La proprietà Color Initial Ramp seleziona il colore iniziale della particella da una posizione casuale sulla rampa dei colori.

Per configurare una rampa di colori, clicca sulla casella accanto al nome della proprietà e dal menu a discesa seleziona New GradientTexture1D. Clicca di nuovo sulla casella per aprire i dettagli della texture. Trova la proprietà Gradient, clicca sulla casella accanto ad essa e seleziona New Gradient. Clicca di nuovo su quella casella e vedrai un intervallo di colori. Clicca in un punto qualsiasi di questo intervallo per inserire un nuovo marcatore. Puoi spostare il marcatore con il mouse e cancellarlo facendo clic destro. Quando un marcatore è selezionato, puoi utilizzare il selettore colori accanto all'intervallo per cambiarne il colore.

Variazione di tonalità

Come la proprietà Color, la proprietà Hue Variation controlla il colore di una particella, ma in modo diverso. Non lo fa impostando direttamente i valori del colore, bensì variando la tonalità del colore.

La tonalità descrive il pigmento di un colore: rosso, arancione, giallo, verde e così via. Non dice niente sulla luminosità o sulla saturazione del colore. La proprietà Hue Variation controlla la gamma di tonalità disponibili, come descritto sopra.

Funziona in aggiunta al colore attuale della particella. I valori impostati per Variation Min e Variation Max controllano di quanto la tonalità può variare in entrambe le direzioni. Un valore più alto porta a una maggiore variazione di colore, mentre un valore basso limita i colori disponibili ai più vicini al colore originale.

Valori diversi per la variazione della tonalità

Valori diversi per la variazione della tonalità, in entrambi i casi con il blu come colore di base: 0.6 (a sinistra) e 0.1 (a destra)

Animazione

Il gruppo di proprietà Animation controlla il comportamento delle animazioni da spritesheet nello Standard Material della particella <doc_standard_material_3d>`. I valori Min, Max e Curve funzionano come descritto sopra.

Uno spritesheet animato è una texture che contiene diverse immagini più piccole allineate su una griglia. Le immagini vengono visualizzate una dopo l'altra così velocemente che si combinano per creare una breve animazione, come un flipbook. È possibile utilizzarli per animare particelle come fumo o fuoco. Ecco i passaggi per creare un sistema di particelle animate:

Uno spritesheet

Uno spritesheet 8x8 di fumo animato

  1. Importa una texture di spritesheet nel motore. Se non ne hai una a disposizione, puoi scaricare la versione ad alta risoluzione dell'immagine di esempio.

  2. Configura un sistema di particelle con almeno un passaggio di disegno e assegna uno Standard Material alla mesh in quel passaggio di disegno.

  3. Assegna lo spritesheet alla proprietà Texture nel gruppo Albedo

  4. Imposta la proprietà Billboard del materiale su Particle Billboard. Facendo così il gruppo Particles Anim sarà disponibile nel materiale.

  5. Imposta H Frames sul numero di colonne e V Frames sul numero di righe nello spritesheet.

  6. Seleziona Loop se vuoi che l'animazione continui a ripetersi.

Questo è tutto per lo Standard Material. Non vedrai subito alcuna animazione. È qui che entrano in gioco le proprietà in Animation. Le proprietà Speed controllano la velocità di animazione dello spritesheet. Imposta Speed Min e Speed Max su 1 e dovresti vedere l'animazione in riproduzione. Le proprietà Offset controllano il punto di partenza dell'animazione su una particella appena generata. Normalmente, sarà sempre la prima immagine della sequenza. Puoi aggiungere un po' di varietà modificando Offset Min e Offset Max per randomizzare la posizione di partenza.

Particelle animate

Tre diversi sistemi di particelle che utilizzano lo stesso spritesheet del fumo

A seconda del numero di immagini contenute nello spritesheet e per quanto tempo è viva la particella, l'animazione potrebbe non apparire fluida. La relazione tra la durata di vita della particella, la velocità di animazione e il numero di immagini nello spritesheet è la seguente:

Nota

Con una velocità di animazione di 1.0, l'animazione raggiungerà l'ultima immagine della sequenza proprio al termine della durata della particella.

\[FPS\ Animazione = \frac{Numero\ di\ immagini}{Durata di vita}\]

Se il tuo spritesheet contiene 64 immagini (8x8) e la durata di una particella è impostata su 1 secondo, l'animazione sarà molto fluida a 64 FPS (1 secondo / 64 immagini). Se la durata è impostata su 2 secondi, sarà comunque abbastanza fluida a 32 FPS. Ma se la particella dura per 8 secondi, l'animazione sarà evidentemente scattosa a 8 FPS. Per rendere di nuovo fluida l'animazione, bisogna aumentare la velocità dell'animazione a qualcosa come 3 per raggiungere un frame rate accettabile.

Durata di vita delle particelle animate

Lo stesso sistema di particelle con durate di vita diverse: 1 secondo (a sinistra), 2 secondi (al centro), 8 secondi (a destra)

Si noti che la proprietà Fixed FPS del nodo GPUParticle32D influisce anche sulla riproduzione dell'animazione. Per una riproduzione fluida, si consiglia di impostarlo su 0 in modo che la particella sia simulata a ogni frame renderizzato. Se non è possibile nel tuo caso, imposta Fixed FPS in modo che sia uguale al framerate effettivo utilizzato dall'animazione flipbook (vedi sopra per la formula).

Turbolenza

La turbolenza aggiunge noise al movimento delle particelle, creando motivi interessanti e dinamici. Seleziona la casella accanto alla proprietà Enabled per attivarla. Compariranno diverse nuove proprietà che controllano la velocità di movimento, il motivo del noise e l'influenza complessiva sul sistema di particelle. Puoi trovare una spiegazione dettagliata di queste proprietà nella sezione sulla turbolenza delle particelle.

Collisione

La proprietà Mode controlla come e se gli emettitori collidono con i nodi di collisione delle particelle. Impostala su Disabled per disabilitare qualsiasi collisione per questo sistema di particelle. Impostala su Hide On Contact se vuoi che le particelle scompaiano non appena entrano in collisione. Impostala su Constant per far collidere e rimbalzare le particelle. Vedrai apparire due nuove proprietà nell'ispettore. Queste controllano come si comportano le particelle durante gli eventi di collisione.

Un valore alto di Friction ridurrà lo scivolamento lungo le superfici. È particolarmente utile se le particelle collidono con superfici inclinate e vuoi che rimangano sul posto anziché scivolare fino in fondo, come la neve che cade da una montagna. Un valore alto di Bounce farà rimbalzare le particelle sulle superfici con cui collidono, come palline di gomma su un pavimento solido.

Se la proprietà Use Scale è abilitata, la dimensione base di collisione viene moltiplicata per la scala attuale della particella. Può servire per assicurare che la dimensione renderizzata e la dimensione di collisione corrispondano per particelle con una scala casuale o che varia nel tempo.

Puoi imparare di più sulle collisioni tra particelle nella sezione Collisioni di questo manuale.

Sotto-emettitore

Modalità di sotto-emettitore

Le modalità di sotto-emettitori disponibili

La proprietà Mode controlla come e quando vengono generati i sotto-emettitori. Impostandola su Disabled, nessun sotto-emettitore verrà mai generato. Impostandola su Constant, i sotto-emettitori verranno generati continuamente a una velocità costante. La proprietà Frequency controlla la frequenza con cui accade nell'arco di un secondo. Impostando la modalità su At End, il sotto-emettitore verrà generato alla fine del ciclo di vita della particella genitore, subito prima della sua distruzione. La proprietà Amount At End controlla quanti sotto-emettitori verranno generati. Impostando la modalità su At Collision, i sotto-emettitori verranno generati quando una particella collide con l'ambiente. La proprietà Amount At Collision controlla quanti sotto-emettitori verranno generati.

Quando la proprietà Keep Velocity è abilitata, il sotto-emettitore appena generato parte con la velocità della particella genitore al momento della creazione del sotto-emettitore.

Consulta la sezione Sotto-emettitori di questo manuale per una spiegazione dettagliata su come aggiungere un sotto-emettitore a un sistema di particelle.

Personalizzare il materiale di processo

Se hai bisogno di cambiare o implementare nuovi comportamenti nel codice dello shader, lo puoi fare convertendo l'attuale ParticleProcessMaterial in un ShaderMaterial. Le proprietà esistenti sono preservate dal processo di conversione. Le funzionalità abilitate influiranno anche sul contenuto del codice dello shader convertito.

Per farlo, fai clic destro sul materiale nel pannello Filesystem e scegli Converti in ShaderMaterial. Puoi anche fare clic destro su qualsiasi proprietà che contenga un riferimento al materiale nell'ispettore.