Skip to content

Latest commit

 

History

History
1890 lines (1075 loc) · 86.1 KB

class_cpuparticles3d.rst

File metadata and controls

1890 lines (1075 loc) · 86.1 KB
github_url:hide

CPUParticles3D

Inherits: :ref:`GeometryInstance3D<class_GeometryInstance3D>` < :ref:`VisualInstance3D<class_VisualInstance3D>` < :ref:`Node3D<class_Node3D>` < :ref:`Node<class_Node>` < :ref:`Object<class_Object>`

A CPU-based 3D particle emitter.

.. rst-class:: classref-introduction-group

Description

CPU-based 3D particle node used to create a variety of particle systems and effects.

See also :ref:`GPUParticles3D<class_GPUParticles3D>`, which provides the same functionality with hardware acceleration, but may not run on older devices.

.. rst-class:: classref-introduction-group

Tutorials

.. rst-class:: classref-reftable-group

Properties

:ref:`int<class_int>` :ref:`amount<class_CPUParticles3D_property_amount>` 8
:ref:`Curve<class_Curve>` :ref:`angle_curve<class_CPUParticles3D_property_angle_curve>`  
:ref:`float<class_float>` :ref:`angle_max<class_CPUParticles3D_property_angle_max>` 0.0
:ref:`float<class_float>` :ref:`angle_min<class_CPUParticles3D_property_angle_min>` 0.0
:ref:`Curve<class_Curve>` :ref:`angular_velocity_curve<class_CPUParticles3D_property_angular_velocity_curve>`  
:ref:`float<class_float>` :ref:`angular_velocity_max<class_CPUParticles3D_property_angular_velocity_max>` 0.0
:ref:`float<class_float>` :ref:`angular_velocity_min<class_CPUParticles3D_property_angular_velocity_min>` 0.0
:ref:`Curve<class_Curve>` :ref:`anim_offset_curve<class_CPUParticles3D_property_anim_offset_curve>`  
:ref:`float<class_float>` :ref:`anim_offset_max<class_CPUParticles3D_property_anim_offset_max>` 0.0
:ref:`float<class_float>` :ref:`anim_offset_min<class_CPUParticles3D_property_anim_offset_min>` 0.0
:ref:`Curve<class_Curve>` :ref:`anim_speed_curve<class_CPUParticles3D_property_anim_speed_curve>`  
:ref:`float<class_float>` :ref:`anim_speed_max<class_CPUParticles3D_property_anim_speed_max>` 0.0
:ref:`float<class_float>` :ref:`anim_speed_min<class_CPUParticles3D_property_anim_speed_min>` 0.0
:ref:`Color<class_Color>` :ref:`color<class_CPUParticles3D_property_color>` Color(1, 1, 1, 1)
:ref:`Gradient<class_Gradient>` :ref:`color_initial_ramp<class_CPUParticles3D_property_color_initial_ramp>`  
:ref:`Gradient<class_Gradient>` :ref:`color_ramp<class_CPUParticles3D_property_color_ramp>`  
:ref:`Curve<class_Curve>` :ref:`damping_curve<class_CPUParticles3D_property_damping_curve>`  
:ref:`float<class_float>` :ref:`damping_max<class_CPUParticles3D_property_damping_max>` 0.0
:ref:`float<class_float>` :ref:`damping_min<class_CPUParticles3D_property_damping_min>` 0.0
:ref:`Vector3<class_Vector3>` :ref:`direction<class_CPUParticles3D_property_direction>` Vector3(1, 0, 0)
:ref:`DrawOrder<enum_CPUParticles3D_DrawOrder>` :ref:`draw_order<class_CPUParticles3D_property_draw_order>` 0
:ref:`Vector3<class_Vector3>` :ref:`emission_box_extents<class_CPUParticles3D_property_emission_box_extents>`  
:ref:`PackedColorArray<class_PackedColorArray>` :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>` PackedColorArray()
:ref:`PackedVector3Array<class_PackedVector3Array>` :ref:`emission_normals<class_CPUParticles3D_property_emission_normals>`  
:ref:`PackedVector3Array<class_PackedVector3Array>` :ref:`emission_points<class_CPUParticles3D_property_emission_points>`  
:ref:`Vector3<class_Vector3>` :ref:`emission_ring_axis<class_CPUParticles3D_property_emission_ring_axis>`  
:ref:`float<class_float>` :ref:`emission_ring_height<class_CPUParticles3D_property_emission_ring_height>`  
:ref:`float<class_float>` :ref:`emission_ring_inner_radius<class_CPUParticles3D_property_emission_ring_inner_radius>`  
:ref:`float<class_float>` :ref:`emission_ring_radius<class_CPUParticles3D_property_emission_ring_radius>`  
:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` :ref:`emission_shape<class_CPUParticles3D_property_emission_shape>` 0
:ref:`float<class_float>` :ref:`emission_sphere_radius<class_CPUParticles3D_property_emission_sphere_radius>`  
:ref:`bool<class_bool>` :ref:`emitting<class_CPUParticles3D_property_emitting>` true
:ref:`float<class_float>` :ref:`explosiveness<class_CPUParticles3D_property_explosiveness>` 0.0
:ref:`int<class_int>` :ref:`fixed_fps<class_CPUParticles3D_property_fixed_fps>` 0
:ref:`float<class_float>` :ref:`flatness<class_CPUParticles3D_property_flatness>` 0.0
:ref:`bool<class_bool>` :ref:`fract_delta<class_CPUParticles3D_property_fract_delta>` true
:ref:`Vector3<class_Vector3>` :ref:`gravity<class_CPUParticles3D_property_gravity>` Vector3(0, -9.8, 0)
:ref:`Curve<class_Curve>` :ref:`hue_variation_curve<class_CPUParticles3D_property_hue_variation_curve>`  
:ref:`float<class_float>` :ref:`hue_variation_max<class_CPUParticles3D_property_hue_variation_max>` 0.0
:ref:`float<class_float>` :ref:`hue_variation_min<class_CPUParticles3D_property_hue_variation_min>` 0.0
:ref:`float<class_float>` :ref:`initial_velocity_max<class_CPUParticles3D_property_initial_velocity_max>` 0.0
:ref:`float<class_float>` :ref:`initial_velocity_min<class_CPUParticles3D_property_initial_velocity_min>` 0.0
:ref:`float<class_float>` :ref:`lifetime<class_CPUParticles3D_property_lifetime>` 1.0
:ref:`float<class_float>` :ref:`lifetime_randomness<class_CPUParticles3D_property_lifetime_randomness>` 0.0
:ref:`Curve<class_Curve>` :ref:`linear_accel_curve<class_CPUParticles3D_property_linear_accel_curve>`  
:ref:`float<class_float>` :ref:`linear_accel_max<class_CPUParticles3D_property_linear_accel_max>` 0.0
:ref:`float<class_float>` :ref:`linear_accel_min<class_CPUParticles3D_property_linear_accel_min>` 0.0
:ref:`bool<class_bool>` :ref:`local_coords<class_CPUParticles3D_property_local_coords>` false
:ref:`Mesh<class_Mesh>` :ref:`mesh<class_CPUParticles3D_property_mesh>`  
:ref:`bool<class_bool>` :ref:`one_shot<class_CPUParticles3D_property_one_shot>` false
:ref:`Curve<class_Curve>` :ref:`orbit_velocity_curve<class_CPUParticles3D_property_orbit_velocity_curve>`  
:ref:`float<class_float>` :ref:`orbit_velocity_max<class_CPUParticles3D_property_orbit_velocity_max>`  
:ref:`float<class_float>` :ref:`orbit_velocity_min<class_CPUParticles3D_property_orbit_velocity_min>`  
:ref:`bool<class_bool>` :ref:`particle_flag_align_y<class_CPUParticles3D_property_particle_flag_align_y>` false
:ref:`bool<class_bool>` :ref:`particle_flag_disable_z<class_CPUParticles3D_property_particle_flag_disable_z>` false
:ref:`bool<class_bool>` :ref:`particle_flag_rotate_y<class_CPUParticles3D_property_particle_flag_rotate_y>` false
:ref:`float<class_float>` :ref:`preprocess<class_CPUParticles3D_property_preprocess>` 0.0
:ref:`Curve<class_Curve>` :ref:`radial_accel_curve<class_CPUParticles3D_property_radial_accel_curve>`  
:ref:`float<class_float>` :ref:`radial_accel_max<class_CPUParticles3D_property_radial_accel_max>` 0.0
:ref:`float<class_float>` :ref:`radial_accel_min<class_CPUParticles3D_property_radial_accel_min>` 0.0
:ref:`float<class_float>` :ref:`randomness<class_CPUParticles3D_property_randomness>` 0.0
:ref:`Curve<class_Curve>` :ref:`scale_amount_curve<class_CPUParticles3D_property_scale_amount_curve>`  
:ref:`float<class_float>` :ref:`scale_amount_max<class_CPUParticles3D_property_scale_amount_max>` 1.0
:ref:`float<class_float>` :ref:`scale_amount_min<class_CPUParticles3D_property_scale_amount_min>` 1.0
:ref:`Curve<class_Curve>` :ref:`scale_curve_x<class_CPUParticles3D_property_scale_curve_x>`  
:ref:`Curve<class_Curve>` :ref:`scale_curve_y<class_CPUParticles3D_property_scale_curve_y>`  
:ref:`Curve<class_Curve>` :ref:`scale_curve_z<class_CPUParticles3D_property_scale_curve_z>`  
:ref:`float<class_float>` :ref:`speed_scale<class_CPUParticles3D_property_speed_scale>` 1.0
:ref:`bool<class_bool>` :ref:`split_scale<class_CPUParticles3D_property_split_scale>` false
:ref:`float<class_float>` :ref:`spread<class_CPUParticles3D_property_spread>` 45.0
:ref:`Curve<class_Curve>` :ref:`tangential_accel_curve<class_CPUParticles3D_property_tangential_accel_curve>`  
:ref:`float<class_float>` :ref:`tangential_accel_max<class_CPUParticles3D_property_tangential_accel_max>` 0.0
:ref:`float<class_float>` :ref:`tangential_accel_min<class_CPUParticles3D_property_tangential_accel_min>` 0.0
.. rst-class:: classref-reftable-group

Methods

void :ref:`convert_from_particles<class_CPUParticles3D_method_convert_from_particles>` ( :ref:`Node<class_Node>` particles )
:ref:`Curve<class_Curve>` :ref:`get_param_curve<class_CPUParticles3D_method_get_param_curve>` ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param ) |const|
:ref:`float<class_float>` :ref:`get_param_max<class_CPUParticles3D_method_get_param_max>` ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param ) |const|
:ref:`float<class_float>` :ref:`get_param_min<class_CPUParticles3D_method_get_param_min>` ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param ) |const|
:ref:`bool<class_bool>` :ref:`get_particle_flag<class_CPUParticles3D_method_get_particle_flag>` ( :ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` particle_flag ) |const|
void :ref:`restart<class_CPUParticles3D_method_restart>` ( )
void :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param, :ref:`Curve<class_Curve>` curve )
void :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>` ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param, :ref:`float<class_float>` value )
void :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>` ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param, :ref:`float<class_float>` value )
void :ref:`set_particle_flag<class_CPUParticles3D_method_set_particle_flag>` ( :ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` particle_flag, :ref:`bool<class_bool>` enable )
.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Signals

.. rst-class:: classref-signal

finished ( )

Emitted when all active particles have finished processing. When :ref:`one_shot<class_CPUParticles3D_property_one_shot>` is disabled, particles will process continuously, so this is never emitted.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Enumerations

.. rst-class:: classref-enumeration

enum DrawOrder:

.. rst-class:: classref-enumeration-constant

:ref:`DrawOrder<enum_CPUParticles3D_DrawOrder>` DRAW_ORDER_INDEX = 0

Particles are drawn in the order emitted.

.. rst-class:: classref-enumeration-constant

:ref:`DrawOrder<enum_CPUParticles3D_DrawOrder>` DRAW_ORDER_LIFETIME = 1

Particles are drawn in order of remaining lifetime.

.. rst-class:: classref-enumeration-constant

:ref:`DrawOrder<enum_CPUParticles3D_DrawOrder>` DRAW_ORDER_VIEW_DEPTH = 2

Particles are drawn in order of depth.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum Parameter:

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_INITIAL_LINEAR_VELOCITY = 0

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set initial velocity properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_ANGULAR_VELOCITY = 1

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set angular velocity properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_ORBIT_VELOCITY = 2

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set orbital velocity properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_LINEAR_ACCEL = 3

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set linear acceleration properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_RADIAL_ACCEL = 4

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set radial acceleration properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_TANGENTIAL_ACCEL = 5

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set tangential acceleration properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_DAMPING = 6

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set damping properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_ANGLE = 7

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set angle properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_SCALE = 8

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set scale properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_HUE_VARIATION = 9

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set hue variation properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_ANIM_SPEED = 10

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set animation speed properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_ANIM_OFFSET = 11

Use with :ref:`set_param_min<class_CPUParticles3D_method_set_param_min>`, :ref:`set_param_max<class_CPUParticles3D_method_set_param_max>`, and :ref:`set_param_curve<class_CPUParticles3D_method_set_param_curve>` to set animation offset properties.

.. rst-class:: classref-enumeration-constant

:ref:`Parameter<enum_CPUParticles3D_Parameter>` PARAM_MAX = 12

Represents the size of the :ref:`Parameter<enum_CPUParticles3D_Parameter>` enum.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum ParticleFlags:

.. rst-class:: classref-enumeration-constant

:ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY = 0

Use with :ref:`set_particle_flag<class_CPUParticles3D_method_set_particle_flag>` to set :ref:`particle_flag_align_y<class_CPUParticles3D_property_particle_flag_align_y>`.

.. rst-class:: classref-enumeration-constant

:ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` PARTICLE_FLAG_ROTATE_Y = 1

Use with :ref:`set_particle_flag<class_CPUParticles3D_method_set_particle_flag>` to set :ref:`particle_flag_rotate_y<class_CPUParticles3D_property_particle_flag_rotate_y>`.

.. rst-class:: classref-enumeration-constant

:ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` PARTICLE_FLAG_DISABLE_Z = 2

Use with :ref:`set_particle_flag<class_CPUParticles3D_method_set_particle_flag>` to set :ref:`particle_flag_disable_z<class_CPUParticles3D_property_particle_flag_disable_z>`.

.. rst-class:: classref-enumeration-constant

:ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` PARTICLE_FLAG_MAX = 3

Represents the size of the :ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` enum.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum EmissionShape:

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_POINT = 0

All particles will be emitted from a single point.

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_SPHERE = 1

Particles will be emitted in the volume of a sphere.

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_SPHERE_SURFACE = 2

Particles will be emitted on the surface of a sphere.

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_BOX = 3

Particles will be emitted in the volume of a box.

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_POINTS = 4

Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles3D_property_emission_points>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>`.

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_DIRECTED_POINTS = 5

Particles will be emitted at a position chosen randomly among :ref:`emission_points<class_CPUParticles3D_property_emission_points>`. Particle velocity and rotation will be set based on :ref:`emission_normals<class_CPUParticles3D_property_emission_normals>`. Particle color will be modulated by :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>`.

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_RING = 6

Particles will be emitted in a ring or cylinder.

.. rst-class:: classref-enumeration-constant

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` EMISSION_SHAPE_MAX = 7

Represents the size of the :ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` enum.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Property Descriptions

.. rst-class:: classref-property

:ref:`int<class_int>` amount = 8

.. rst-class:: classref-property-setget

Number of particles emitted in one emission cycle.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` angle_curve

.. rst-class:: classref-property-setget

Each particle's rotation will be animated along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` angle_max = 0.0

.. rst-class:: classref-property-setget

Maximum angle.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` angle_min = 0.0

.. rst-class:: classref-property-setget

Minimum angle.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` angular_velocity_curve

.. rst-class:: classref-property-setget

Each particle's angular velocity (rotation speed) will vary along this :ref:`Curve<class_Curve>` over its lifetime.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` angular_velocity_max = 0.0

.. rst-class:: classref-property-setget

Maximum initial angular velocity (rotation speed) applied to each particle in degrees per second.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` angular_velocity_min = 0.0

.. rst-class:: classref-property-setget

Minimum initial angular velocity (rotation speed) applied to each particle in degrees per second.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` anim_offset_curve

.. rst-class:: classref-property-setget

Each particle's animation offset will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` anim_offset_max = 0.0

.. rst-class:: classref-property-setget

Maximum animation offset.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` anim_offset_min = 0.0

.. rst-class:: classref-property-setget

Minimum animation offset.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` anim_speed_curve

.. rst-class:: classref-property-setget

Each particle's animation speed will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` anim_speed_max = 0.0

.. rst-class:: classref-property-setget

Maximum particle animation speed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` anim_speed_min = 0.0

.. rst-class:: classref-property-setget

Minimum particle animation speed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Color<class_Color>` color = Color(1, 1, 1, 1)

.. rst-class:: classref-property-setget

Each particle's initial color.

Note: :ref:`color<class_CPUParticles3D_property_color>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` must be true. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ALBEDO *= COLOR.rgb; must be inserted in the shader's fragment() function. Otherwise, :ref:`color<class_CPUParticles3D_property_color>` will have no visible effect.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Gradient<class_Gradient>` color_initial_ramp

.. rst-class:: classref-property-setget

Each particle's initial color will vary along this :ref:`GradientTexture1D<class_GradientTexture1D>` (multiplied with :ref:`color<class_CPUParticles3D_property_color>`).

Note: :ref:`color_initial_ramp<class_CPUParticles3D_property_color_initial_ramp>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` must be true. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ALBEDO *= COLOR.rgb; must be inserted in the shader's fragment() function. Otherwise, :ref:`color_initial_ramp<class_CPUParticles3D_property_color_initial_ramp>` will have no visible effect.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Gradient<class_Gradient>` color_ramp

.. rst-class:: classref-property-setget

Each particle's color will vary along this :ref:`GradientTexture1D<class_GradientTexture1D>` over its lifetime (multiplied with :ref:`color<class_CPUParticles3D_property_color>`).

Note: :ref:`color_ramp<class_CPUParticles3D_property_color_ramp>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` must be true. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ALBEDO *= COLOR.rgb; must be inserted in the shader's fragment() function. Otherwise, :ref:`color_ramp<class_CPUParticles3D_property_color_ramp>` will have no visible effect.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` damping_curve

.. rst-class:: classref-property-setget

Damping will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` damping_max = 0.0

.. rst-class:: classref-property-setget

Maximum damping.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` damping_min = 0.0

.. rst-class:: classref-property-setget

Minimum damping.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Vector3<class_Vector3>` direction = Vector3(1, 0, 0)

.. rst-class:: classref-property-setget

Unit vector specifying the particles' emission direction.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`DrawOrder<enum_CPUParticles3D_DrawOrder>` draw_order = 0

.. rst-class:: classref-property-setget

Particle draw order. Uses :ref:`DrawOrder<enum_CPUParticles3D_DrawOrder>` values.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Vector3<class_Vector3>` emission_box_extents

.. rst-class:: classref-property-setget

The rectangle's extents if :ref:`emission_shape<class_CPUParticles3D_property_emission_shape>` is set to :ref:`EMISSION_SHAPE_BOX<class_CPUParticles3D_constant_EMISSION_SHAPE_BOX>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`PackedColorArray<class_PackedColorArray>` emission_colors = PackedColorArray()

.. rst-class:: classref-property-setget

Sets the :ref:`Color<class_Color>`s to modulate particles by when using :ref:`EMISSION_SHAPE_POINTS<class_CPUParticles3D_constant_EMISSION_SHAPE_POINTS>` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles3D_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.

Note: :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>` multiplies the particle mesh's vertex colors. To have a visible effect on a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` must be true. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ALBEDO *= COLOR.rgb; must be inserted in the shader's fragment() function. Otherwise, :ref:`emission_colors<class_CPUParticles3D_property_emission_colors>` will have no visible effect.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`PackedVector3Array<class_PackedVector3Array>` emission_normals

.. rst-class:: classref-property-setget

Sets the direction the particles will be emitted in when using :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles3D_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`PackedVector3Array<class_PackedVector3Array>` emission_points

.. rst-class:: classref-property-setget

Sets the initial positions to spawn particles when using :ref:`EMISSION_SHAPE_POINTS<class_CPUParticles3D_constant_EMISSION_SHAPE_POINTS>` or :ref:`EMISSION_SHAPE_DIRECTED_POINTS<class_CPUParticles3D_constant_EMISSION_SHAPE_DIRECTED_POINTS>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Vector3<class_Vector3>` emission_ring_axis

.. rst-class:: classref-property-setget

The axis of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_CPUParticles3D_constant_EMISSION_SHAPE_RING>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` emission_ring_height

.. rst-class:: classref-property-setget

The height of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_CPUParticles3D_constant_EMISSION_SHAPE_RING>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` emission_ring_inner_radius

.. rst-class:: classref-property-setget

The inner radius of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_CPUParticles3D_constant_EMISSION_SHAPE_RING>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` emission_ring_radius

.. rst-class:: classref-property-setget

The radius of the ring when using the emitter :ref:`EMISSION_SHAPE_RING<class_CPUParticles3D_constant_EMISSION_SHAPE_RING>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` emission_shape = 0

.. rst-class:: classref-property-setget

Particles will be emitted inside this region. See :ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` for possible values.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` emission_sphere_radius

.. rst-class:: classref-property-setget

The sphere's radius if :ref:`EmissionShape<enum_CPUParticles3D_EmissionShape>` is set to :ref:`EMISSION_SHAPE_SPHERE<class_CPUParticles3D_constant_EMISSION_SHAPE_SPHERE>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` emitting = true

.. rst-class:: classref-property-setget

If true, particles are being emitted. :ref:`emitting<class_CPUParticles3D_property_emitting>` can be used to start and stop particles from emitting. However, if :ref:`one_shot<class_CPUParticles3D_property_one_shot>` is true setting :ref:`emitting<class_CPUParticles3D_property_emitting>` to true will not restart the emission cycle until after all active particles finish processing. You can use the :ref:`finished<class_CPUParticles3D_signal_finished>` signal to be notified once all active particles finish processing.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` explosiveness = 0.0

.. rst-class:: classref-property-setget

How rapidly particles in an emission cycle are emitted. If greater than 0, there will be a gap in emissions before the next cycle begins.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`int<class_int>` fixed_fps = 0

.. rst-class:: classref-property-setget

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

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` flatness = 0.0

.. rst-class:: classref-property-setget

Amount of :ref:`spread<class_CPUParticles3D_property_spread>` in Y/Z plane. A value of 1 restricts particles to X/Z plane.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` fract_delta = true

.. rst-class:: classref-property-setget

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

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Vector3<class_Vector3>` gravity = Vector3(0, -9.8, 0)

.. rst-class:: classref-property-setget

Gravity applied to every particle.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` hue_variation_curve

.. rst-class:: classref-property-setget

Each particle's hue will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` hue_variation_max = 0.0

.. rst-class:: classref-property-setget

Maximum hue variation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` hue_variation_min = 0.0

.. rst-class:: classref-property-setget

Minimum hue variation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` initial_velocity_max = 0.0

.. rst-class:: classref-property-setget

Maximum value of the initial velocity.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` initial_velocity_min = 0.0

.. rst-class:: classref-property-setget

Minimum value of the initial velocity.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` lifetime = 1.0

.. rst-class:: classref-property-setget

Amount of time each particle will exist.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` lifetime_randomness = 0.0

.. rst-class:: classref-property-setget

Particle lifetime randomness ratio.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` linear_accel_curve

.. rst-class:: classref-property-setget

Each particle's linear acceleration will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` linear_accel_max = 0.0

.. rst-class:: classref-property-setget

Maximum linear acceleration.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` linear_accel_min = 0.0

.. rst-class:: classref-property-setget

Minimum linear acceleration.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` local_coords = false

.. rst-class:: classref-property-setget

If true, particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the CPUParticles3D node (and its parents) when it is moved or rotated. If false, particles use global coordinates; they will not move or rotate along the CPUParticles3D node (and its parents) when it is moved or rotated.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Mesh<class_Mesh>` mesh

.. rst-class:: classref-property-setget

The :ref:`Mesh<class_Mesh>` used for each particle. If null, particles will be spheres.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` one_shot = false

.. rst-class:: classref-property-setget

If true, only one emission cycle occurs. If set true during a cycle, emission will stop at the cycle's end.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` orbit_velocity_curve

.. rst-class:: classref-property-setget

Each particle's orbital velocity will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` orbit_velocity_max

.. rst-class:: classref-property-setget

Maximum orbit velocity.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` orbit_velocity_min

.. rst-class:: classref-property-setget

Minimum orbit velocity.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` particle_flag_align_y = false

.. rst-class:: classref-property-setget

Align Y axis of particle with the direction of its velocity.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` particle_flag_disable_z = false

.. rst-class:: classref-property-setget

If true, particles will not move on the Z axis.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` particle_flag_rotate_y = false

.. rst-class:: classref-property-setget

If true, particles rotate around Y axis by :ref:`angle_min<class_CPUParticles3D_property_angle_min>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` preprocess = 0.0

.. rst-class:: classref-property-setget

Particle system starts as if it had already run for this many seconds.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` radial_accel_curve

.. rst-class:: classref-property-setget

Each particle's radial acceleration will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` radial_accel_max = 0.0

.. rst-class:: classref-property-setget

Maximum radial acceleration.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` radial_accel_min = 0.0

.. rst-class:: classref-property-setget

Minimum radial acceleration.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` randomness = 0.0

.. rst-class:: classref-property-setget

Emission lifetime randomness ratio.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` scale_amount_curve

.. rst-class:: classref-property-setget

Each particle's scale will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` scale_amount_max = 1.0

.. rst-class:: classref-property-setget

Maximum scale.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` scale_amount_min = 1.0

.. rst-class:: classref-property-setget

Minimum scale.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` scale_curve_x

.. rst-class:: classref-property-setget

Curve for the scale over life, along the x axis.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` scale_curve_y

.. rst-class:: classref-property-setget

Curve for the scale over life, along the y axis.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` scale_curve_z

.. rst-class:: classref-property-setget

Curve for the scale over life, along the z axis.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` speed_scale = 1.0

.. rst-class:: classref-property-setget

Particle system's running speed scaling ratio. A value of 0 can be used to pause the particles.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` split_scale = false

.. rst-class:: classref-property-setget

If set to true, three different scale curves can be specified, one per scale axis.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` spread = 45.0

.. rst-class:: classref-property-setget

Each particle's initial direction range from +spread to -spread degrees. Applied to X/Z plane and Y/Z planes.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Curve<class_Curve>` tangential_accel_curve

.. rst-class:: classref-property-setget

Each particle's tangential acceleration will vary along this :ref:`Curve<class_Curve>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` tangential_accel_max = 0.0

.. rst-class:: classref-property-setget

Maximum tangent acceleration.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` tangential_accel_min = 0.0

.. rst-class:: classref-property-setget

Minimum tangent acceleration.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Method Descriptions

.. rst-class:: classref-method

void convert_from_particles ( :ref:`Node<class_Node>` particles )

Sets this node's properties to match a given :ref:`GPUParticles3D<class_GPUParticles3D>` node with an assigned :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Curve<class_Curve>` get_param_curve ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param ) |const|

Returns the :ref:`Curve<class_Curve>` of the parameter specified by :ref:`Parameter<enum_CPUParticles3D_Parameter>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`float<class_float>` get_param_max ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param ) |const|

Returns the maximum value range for the given parameter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`float<class_float>` get_param_min ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param ) |const|

Returns the minimum value range for the given parameter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` get_particle_flag ( :ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` particle_flag ) |const|

Returns the enabled state of the given particle flag (see :ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` for options).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

void restart ( )

Restarts the particle emitter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

void set_param_curve ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param, :ref:`Curve<class_Curve>` curve )

Sets the :ref:`Curve<class_Curve>` of the parameter specified by :ref:`Parameter<enum_CPUParticles3D_Parameter>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

void set_param_max ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param, :ref:`float<class_float>` value )

Sets the maximum value for the given parameter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

void set_param_min ( :ref:`Parameter<enum_CPUParticles3D_Parameter>` param, :ref:`float<class_float>` value )

Sets the minimum value for the given parameter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

void set_particle_flag ( :ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` particle_flag, :ref:`bool<class_bool>` enable )

Enables or disables the given particle flag (see :ref:`ParticleFlags<enum_CPUParticles3D_ParticleFlags>` for options).