GPUParticles3D

Inherits: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object

3D particle emitter.

Description

3D particle node used to create a variety of particle systems and effects. GPUParticles3D features an emitter that generates some number of particles at a given rate.

Use the process_material property to add a ParticlesMaterial to configure particle appearance and behavior. Alternatively, you can add a ShaderMaterial which will be applied to all particles.

Methods

AABB

capture_aabb ( ) const

void

emit_particle ( Transform3D xform, Vector3 velocity, Color color, Color custom, int flags )

Mesh

get_draw_pass_mesh ( int pass ) const

void

restart ( )

void

set_draw_pass_mesh ( int pass, Mesh mesh )

Enumerations

enum DrawOrder:

  • DRAW_ORDER_INDEX = 0 --- Particles are drawn in the order emitted.

  • DRAW_ORDER_LIFETIME = 1 --- Particles are drawn in order of remaining lifetime.

  • DRAW_ORDER_REVERSE_LIFETIME = 2

  • DRAW_ORDER_VIEW_DEPTH = 3 --- Particles are drawn in order of depth.


enum EmitFlags:

  • EMIT_FLAG_POSITION = 1

  • EMIT_FLAG_ROTATION_SCALE = 2

  • EMIT_FLAG_VELOCITY = 4

  • EMIT_FLAG_COLOR = 8

  • EMIT_FLAG_CUSTOM = 16


enum TransformAlign:

  • TRANSFORM_ALIGN_DISABLED = 0

  • TRANSFORM_ALIGN_Z_BILLBOARD = 1

  • TRANSFORM_ALIGN_Y_TO_VELOCITY = 2

  • TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY = 3

Constants

  • MAX_DRAW_PASSES = 4 --- Maximum number of draw passes supported.

Property Descriptions

Default

8

Setter

set_amount(value)

Getter

get_amount()

Number of particles to emit.


  • float collision_base_size

Default

0.01

Setter

set_collision_base_size(value)

Getter

get_collision_base_size()


Default

0

Setter

set_draw_order(value)

Getter

get_draw_order()

Particle draw order. Uses DrawOrder values.


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

Mesh that is drawn for the first draw pass.


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

Mesh that is drawn for the second draw pass.


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

Mesh that is drawn for the third draw pass.


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

Mesh that is drawn for the fourth draw pass.


  • int draw_passes

Default

1

Setter

set_draw_passes(value)

Getter

get_draw_passes()

The number of draw passes when rendering particles.


Setter

set_skin(value)

Getter

get_skin()


Default

true

Setter

set_emitting(value)

Getter

is_emitting()

If true, particles are being emitted.


Default

0.0

Setter

set_explosiveness_ratio(value)

Getter

get_explosiveness_ratio()

Time ratio between each emission. If 0, particles are emitted continuously. If 1, all particles are emitted simultaneously.


  • int fixed_fps

Default

30

Setter

set_fixed_fps(value)

Getter

get_fixed_fps()

The particle system's frame rate is fixed to a value. For instance, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself.


Default

true

Setter

set_fractional_delta(value)

Getter

get_fractional_delta()

If true, results in fractional delta calculation which has a smoother particles display effect.


Default

true

Setter

set_interpolate(value)

Getter

get_interpolate()


Default

1.0

Setter

set_lifetime(value)

Getter

get_lifetime()

Amount of time each particle will exist.


Default

true

Setter

set_use_local_coordinates(value)

Getter

get_use_local_coordinates()

If true, particles use the parent node's coordinate space. If false, they use global coordinates.


Default

false

Setter

set_one_shot(value)

Getter

get_one_shot()

If true, only amount particles will be emitted.


Default

0.0

Setter

set_pre_process_time(value)

Getter

get_pre_process_time()

Amount of time to preprocess the particles before animation starts. Lets you start the animation some time after particles have started emitting.


Setter

set_process_material(value)

Getter

get_process_material()

Material for processing particles. Can be a ParticlesMaterial or a ShaderMaterial.


Default

0.0

Setter

set_randomness_ratio(value)

Getter

get_randomness_ratio()

Emission randomness ratio.


Default

1.0

Setter

set_speed_scale(value)

Getter

get_speed_scale()

Speed scaling ratio. A value of 0 can be used to pause the particles.


Default

NodePath("")

Setter

set_sub_emitter(value)

Getter

get_sub_emitter()


  • bool trail_enabled

Default

false

Setter

set_trail_enabled(value)

Getter

is_trail_enabled()


  • float trail_length_secs

Default

0.3

Setter

set_trail_length(value)

Getter

get_trail_length()


Default

0

Setter

set_transform_align(value)

Getter

get_transform_align()


  • AABB visibility_aabb

Default

AABB(-4, -4, -4, 8, 8, 8)

Setter

set_visibility_aabb(value)

Getter

get_visibility_aabb()

The AABB that determines the node's region which needs to be visible on screen for the particle system to be active.

Grow the box if particles suddenly appear/disappear when the node enters/exits the screen. The AABB can be grown via code or with the Particles → Generate AABB editor tool.

Method Descriptions

  • AABB capture_aabb ( ) const

Returns the axis-aligned bounding box that contains all the particles that are active in the current frame.



  • Mesh get_draw_pass_mesh ( int pass ) const

Returns the Mesh that is drawn at index pass.


  • void restart ( )

Restarts the particle emission, clearing existing particles.


  • void set_draw_pass_mesh ( int pass, Mesh mesh )

Sets the Mesh that is drawn at index pass.