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...
CPUParticles3D
Eredita: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Un emettitore di particelle 3D basato su CPU.
Descrizione
Nodo di particelle 3D basato su CPU utilizzato per creare una varietà di sistemi ed effetti di particelle.
Vedi anche GPUParticles3D, che fornisce la stessa funzionalità con accelerazione hardware, ma potrebbe non funzionare su dispositivi più vecchi.
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Metodi
capture_aabb() const |
|
void |
convert_from_particles(particles: Node) |
get_param_curve(param: Parameter) const |
|
get_param_max(param: Parameter) const |
|
get_param_min(param: Parameter) const |
|
get_particle_flag(particle_flag: ParticleFlags) const |
|
void |
request_particles_process(process_time: float, process_time_residual: float = 0.0) |
void |
|
void |
set_param_curve(param: Parameter, curve: Curve) |
void |
set_param_max(param: Parameter, value: float) |
void |
set_param_min(param: Parameter, value: float) |
void |
set_particle_flag(particle_flag: ParticleFlags, enable: bool) |
Segnali
finished() 🔗
Emesso quando tutte le particelle attive hanno terminato l'elaborazione. Quando one_shot è disabilitato, le particelle saranno elaborate in modo continuo, quindi non verrà mai emesso.
Enumerazioni
enum DrawOrder: 🔗
DrawOrder DRAW_ORDER_INDEX = 0
Le particelle sono disegnate nell'ordine in cui sono emesse.
DrawOrder DRAW_ORDER_LIFETIME = 1
Le particelle sono disegnate nell'ordine di tempo di vita residuo. In altre parole, la particella con il tempo di vita più alto è disegnata davanti.
DrawOrder DRAW_ORDER_VIEW_DEPTH = 2
Le particelle sono disegnate in ordine di profondità.
enum Parameter: 🔗
Parameter PARAM_INITIAL_LINEAR_VELOCITY = 0
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà della velocità iniziale.
Parameter PARAM_ANGULAR_VELOCITY = 1
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà della velocità angolare.
Parameter PARAM_ORBIT_VELOCITY = 2
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà della velocità orbitale.
Parameter PARAM_LINEAR_ACCEL = 3
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà dell'accelerazione lineare.
Parameter PARAM_RADIAL_ACCEL = 4
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà dell'accelerazione radiale.
Parameter PARAM_TANGENTIAL_ACCEL = 5
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà dell'accelerazione tangenziale.
Parameter PARAM_DAMPING = 6
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà dello smorzamento.
Parameter PARAM_ANGLE = 7
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà dell'angolo.
Parameter PARAM_SCALE = 8
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà della scala.
Parameter PARAM_HUE_VARIATION = 9
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà della variazione di tonalità.
Parameter PARAM_ANIM_SPEED = 10
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà della velocità di animazione.
Parameter PARAM_ANIM_OFFSET = 11
Da utilizzare con set_param_min(), set_param_max(), e set_param_curve() per impostare le proprietà dell'offset di animazione.
Parameter PARAM_MAX = 12
Rappresenta la dimensione dell'enumerazione Parameter.
enum ParticleFlags: 🔗
ParticleFlags PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY = 0
Da utilizzare con set_particle_flag() per impostare particle_flag_align_y.
ParticleFlags PARTICLE_FLAG_ROTATE_Y = 1
Da utilizzare con set_particle_flag() per impostare particle_flag_rotate_y.
ParticleFlags PARTICLE_FLAG_DISABLE_Z = 2
Da utilizzare con set_particle_flag() per impostare particle_flag_disable_z.
ParticleFlags PARTICLE_FLAG_MAX = 3
Rappresenta la dimensione dell'enumerazione ParticleFlags.
enum EmissionShape: 🔗
EmissionShape EMISSION_SHAPE_POINT = 0
Tutte le particelle saranno emesse da un unico punto.
EmissionShape EMISSION_SHAPE_SPHERE = 1
Le particelle saranno emesse nel volume di una sfera.
EmissionShape EMISSION_SHAPE_SPHERE_SURFACE = 2
Le particelle saranno emesse sulla superfice di una sfera.
EmissionShape EMISSION_SHAPE_BOX = 3
Le particelle saranno emesse nel volume di una scatola.
EmissionShape EMISSION_SHAPE_POINTS = 4
Le particelle saranno emesse in una posizione scelta a caso tra i punti emission_points. Il colore delle particelle sarà modulato per emission_colors.
EmissionShape EMISSION_SHAPE_DIRECTED_POINTS = 5
Le particelle saranno emesse in una posizione scelta a caso tra i punti emission_points. La velocità e la rotazione delle particelle saranno impostate in base a emission_normals. Il colore delle particelle sarà modulato per emission_colors.
EmissionShape EMISSION_SHAPE_RING = 6
Le particelle saranno emesse dentro un anello o un cilindro.
EmissionShape EMISSION_SHAPE_MAX = 7
Rappresenta la dimensione dell'enumerazione EmissionShape.
Descrizioni delle proprietà
Numero di particelle emesse in un singolo ciclo di emissione.
La rotazione di ogni particella sarà animata lungo questa Curve. Dovrebbe essere una Curve unitaria.
Angolo massimo.
Angolo minimo.
Curve angular_velocity_curve 🔗
La velocità angolare di ogni particella (velocità di rotazione) varierà lungo questa Curve per tutta la sua durata. Dovrebbe essere una Curve unitaria.
float angular_velocity_max = 0.0 🔗
Velocità angolare iniziale massima (velocità di rotazione) applicata a ciascuna particella in gradi al secondo.
float angular_velocity_min = 0.0 🔗
Velocità angolare iniziale minima (velocità di rotazione) applicata a ciascuna particella in gradi al secondo.
L'offset dell'animazione di ogni particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
Offset massimo dell'animazione.
Offset minimo dell'animazione.
La velocità dell'animazione di ogni particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
Velocità di animazione delle particelle massima.
Velocità di animazione delle particelle minima.
Color color = Color(1, 1, 1, 1) 🔗
Colore iniziale di ogni particella.
Nota: color moltiplica i colori dei vertici della mesh di particelle. Per avere un effetto visibile su un BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo deve essere true. Per uno ShaderMaterial, ALBEDO *= COLOR.rgb; deve essere inserito nella funzione fragment() dello shader. Altrimenti, color non avrà alcun effetto visibile.
Il colore iniziale di ogni particella varierà lungo questo Gradient (moltiplicato per color).
Nota: color_initial_ramp moltiplica i colori dei vertici della mesh di particelle. Per avere un effetto visibile su un BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo deve essere true. Per uno ShaderMaterial, ALBEDO *= COLOR.rgb; deve essere inserito nella funzione fragment() dello shader. Altrimenti, color_initial_ramp non avrà alcun effetto visibile.
Il colore di ogni particella varierà lungo questo Gradient per tutta la sua durata (moltiplicato per color).
Nota: color_ramp moltiplica i colori dei vertici della mesh di particelle. Per avere un effetto visibile su un BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo deve essere true. Per uno ShaderMaterial, ALBEDO *= COLOR.rgb; deve essere inserito nella funzione fragment() dello shader. Altrimenti, color_ramp non avrà alcun effetto visibile.
Lo smorzamento varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
Smorzamento massimo.
Smorzamento minimo.
Vector3 direction = Vector3(1, 0, 0) 🔗
Vettore unitario che specifica la direzione di emissione delle particelle.
Ordine di disegno delle particelle.
Vector3 emission_box_extents 🔗
Estensioni del rettangolo se emission_shape è impostato su EMISSION_SHAPE_BOX.
PackedColorArray emission_colors = PackedColorArray() 🔗
void set_emission_colors(value: PackedColorArray)
PackedColorArray get_emission_colors()
Imposta i Color con cui modulare le particelle quando si utilizza EMISSION_SHAPE_POINTS o EMISSION_SHAPE_DIRECTED_POINTS.
Nota: color moltiplica i colori dei vertici della mesh di particelle. Per avere un effetto visibile su un BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo deve essere true. Per uno ShaderMaterial, ALBEDO *= COLOR.rgb; deve essere inserito nella funzione fragment() dello shader. Altrimenti, color non avrà alcun effetto visibile.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedColorArray for more details.
PackedVector3Array emission_normals 🔗
void set_emission_normals(value: PackedVector3Array)
PackedVector3Array get_emission_normals()
Imposta la direzione in cui saranno emesse le particelle quando si utilizza EMISSION_SHAPE_DIRECTED_POINTS.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector3Array for more details.
PackedVector3Array emission_points 🔗
void set_emission_points(value: PackedVector3Array)
PackedVector3Array get_emission_points()
Imposta le posizioni iniziali per generare le particelle quando si utilizza EMISSION_SHAPE_POINTS o EMISSION_SHAPE_DIRECTED_POINTS.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector3Array for more details.
L'asse dell'anello per l'emettitore EMISSION_SHAPE_RING.
float emission_ring_cone_angle 🔗
L'angolo del cono quando si usa l'emettitore EMISSION_SHAPE_RING. L'angolo predefinito di 90 gradi produce un anello, mentre un angolo di 0 gradi produce un cono. I valori intermedi produrranno un anello in cui un'estremità è più grande dell'altra.
Nota: A seconda di emission_ring_height, l'angolo potrebbe essere limitato se si raggiunge l'estremità dell'anello per formare un cono perfetto.
L'altezza dell'anello per l'emettitore EMISSION_SHAPE_RING.
float emission_ring_inner_radius 🔗
Il raggio interno dell'anello per l'emettitore EMISSION_SHAPE_RING.
Il raggio dell'anello per l'emettitore EMISSION_SHAPE_RING.
EmissionShape emission_shape = 0 🔗
void set_emission_shape(value: EmissionShape)
EmissionShape get_emission_shape()
Le particelle saranno emesse dentro questa regione.
float emission_sphere_radius 🔗
Il raggio della sfera se EmissionShape è impostato su EMISSION_SHAPE_SPHERE.
Se true, le particelle sono emesse. emitting può essere utilizzato per avviare e interrompere l'emissione di particelle. Tuttavia, se one_shot è true, l'impostazione di emitting su true non riavvierà il ciclo di emissione finché tutte le particelle attive non avranno completato l'elaborazione. Puoi utilizzare il segnale finished per essere avvisato una volta che tutte le particelle attive avranno completato l'elaborazione.
Quanto rapidamente sono emesse le particelle in un ciclo di emissione. Se maggiore di 0, ci sarà un distacco nelle emissioni prima che inizi il ciclo successivo.
La frequenza dei fotogrammi del sistema di particelle è fissato a un valore. Ad esempio, cambiando il valore a 2, le particelle saranno renderizzate a 2 fotogrammi al secondo. Nota che questo non rallenta la simulazione del sistema di particelle stesso.
Quantità di propagazione (spread) nel piano Y/Z. Un valore di 1 limita le particelle al piano X/Z.
Se true, utilizza un calcolo di delta frazionario che consente una visualizzazione più fluida delle particelle.
Vector3 gravity = Vector3(0, -9.8, 0) 🔗
Gravità applicata a ogni particella.
La tonalità di ogni particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
float hue_variation_max = 0.0 🔗
Variazione di tonalità massima.
float hue_variation_min = 0.0 🔗
Variazione di tonalità minima.
float initial_velocity_max = 0.0 🔗
Valore della velocità iniziale massimo.
float initial_velocity_min = 0.0 🔗
Valore della velocità iniziale minimo.
Quantità di tempo in cui ogni particella esisterà.
float lifetime_randomness = 0.0 🔗
Rapporto di casualità della durata di vita delle particelle.
L'accelerazione lineare di ogni particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
float linear_accel_max = 0.0 🔗
Accelerazione lineare massima.
float linear_accel_min = 0.0 🔗
Accelerazione lineare minima.
Se true, le particelle usano lo spazio di coordinate del nodo genitore (noto come coordinate locali). Ciò farà sì che le particelle si muovano e ruotino lungo il nodo CPUParticles3D (e i suoi genitori) quando viene spostato o ruotato. Se false, le particelle usano coordinate globali; non si muoveranno o ruoteranno lungo il nodo CPUParticles3D (e i suoi genitori) quando viene spostato o ruotato.
La Mesh utilizzata per ogni particella. Se null, le particelle saranno sfere.
Se true, un solo ciclo di emissione sarà prodotto. Se impostato su true durante un ciclo, l'emissione si interromperà alla fine del ciclo.
La velocità orbitale di ciascuna particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
Velocità orbitale massima.
Velocità orbitale minima.
bool particle_flag_align_y = false 🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
Allinea l'asse Y della particella con la direzione della sua velocità.
bool particle_flag_disable_z = false 🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
Se true, le particelle non si muoveranno sull'asse Z.
bool particle_flag_rotate_y = false 🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
Se true, le particelle ruotano attorno all'asse Y di angle_min.
Il sistema di particelle si avvia come se avesse già cominciato questo numero di secondi fa.
L'accelerazione radiale di ogni particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
float radial_accel_max = 0.0 🔗
Accelerazione radiale massima.
float radial_accel_min = 0.0 🔗
Accelerazione radiale minima.
Rapporto di casualità del tempo di vita dell'emissione.
La scala di ciascuna particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
float scale_amount_max = 1.0 🔗
Scala massima.
float scale_amount_min = 1.0 🔗
Scala minima.
Curva della scala sul tempo di vita, lungo l'asse x.
Curva della scala sul tempo di vita, lungo l'asse y.
Curva della scala sul tempo di vita, lungo l'asse z.
Imposta il seed casuale utilizzato dal sistema di particelle. Efficace solo se use_fixed_seed è true.
Rapporto della velocità di esecuzione del sistema di particelle. Un valore di 0 può essere utilizzato per mettere in pausa le particelle.
Se impostato su true, è possibile specificare tre diverse curve di scala, una per ogni asse di scala.
La direzione iniziale di ciascuna particella varia da +spread a -spread (in gradi). Applicato al piano X/Z e ai piani Y/Z.
Curve tangential_accel_curve 🔗
L'accelerazione tangenziale di ogni particella varierà lungo questa Curve. Dovrebbe essere una Curve unitaria.
float tangential_accel_max = 0.0 🔗
Accelerazione tangenziale massima.
float tangential_accel_min = 0.0 🔗
Accelerazione tangenziale minima.
Se true, le particelle utilizzeranno lo stesso seed per ogni simulazione, utilizzando il seed definito in seed. Ciò è utile per le situazioni in cui il risultato visivo deve essere coerente tra i replay, ad esempio quando si utilizza la modalità Movie Maker.
AABB visibility_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
L'AABB che determina la regione del nodo che deve essere visibile sullo schermo affinché il sistema di particelle sia attivo.
Ingrandisci il box se le particelle appaiono o scompaiono all'improvviso quando il nodo entra o esce dallo schermo. L'AABB può essere ingrandito tramite codice o con lo strumento dell'editor Particelle → Genera AABB.
Descrizioni dei metodi
Restituisce la bounding box allineato all'asse che contiene tutte le particelle attive nel frame attuale.
void convert_from_particles(particles: Node) 🔗
Imposta le proprietà di questo nodo in modo che corrispondano a un dato nodo GPUParticles3D con un ParticleProcessMaterial assegnato.
Curve get_param_curve(param: Parameter) const 🔗
Restituisce la risorsa Curve del parametro specificato da Parameter.
float get_param_max(param: Parameter) const 🔗
Restituisce il valore massimo dell'intervallo per il parametro specificato.
float get_param_min(param: Parameter) const 🔗
Restituisce il valore minimo dell'intervallo per il parametro specificato.
bool get_particle_flag(particle_flag: ParticleFlags) const 🔗
Restituisce lo stato abilitato del flag di particella specificato.
void request_particles_process(process_time: float, process_time_residual: float = 0.0) 🔗
Requests the particles to process for extra process time during a single frame.
process_time defines the time that the particles will process while emitting is on. process_time_residual defines the time that particles will process with emitting turned off for the simulation. When combined with speed_scale set to 0.0, this is useful to be able to seek a particle system timeline.
void restart(keep_seed: bool = false) 🔗
Riavvia l'emettitore di particelle.
Se keep_seed è true, il seed casuale attuale verrà conservato. Utile per la ricerca e la riproduzione.
void set_param_curve(param: Parameter, curve: Curve) 🔗
Imposta la risorsa Curve del parametro specificato da Parameter. Dovrebbe essere una Curve unitaria.
void set_param_max(param: Parameter, value: float) 🔗
Imposta il valore massimo per il parametro specificato.
void set_param_min(param: Parameter, value: float) 🔗
Imposta il valore minimo per il parametro specificato.
void set_particle_flag(particle_flag: ParticleFlags, enable: bool) 🔗
Abilita o disabilita il flag specificato.