CPUParticles3D

Наследует: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object

3D-излучатель частиц на базе процессора.

Описание

Узел 3D-частиц на базе ЦП, используемый для создания различных систем частиц и эффектов.

См. также GPUParticles3D, который обеспечивает ту же функциональность с аппаратным ускорением, но может не работать на старых устройствах.

Обучающие материалы

Свойства

int

amount

8

Curve

angle_curve

float

angle_max

0.0

float

angle_min

0.0

Curve

angular_velocity_curve

float

angular_velocity_max

0.0

float

angular_velocity_min

0.0

Curve

anim_offset_curve

float

anim_offset_max

0.0

float

anim_offset_min

0.0

Curve

anim_speed_curve

float

anim_speed_max

0.0

float

anim_speed_min

0.0

Color

color

Color(1, 1, 1, 1)

Gradient

color_initial_ramp

Gradient

color_ramp

Curve

damping_curve

float

damping_max

0.0

float

damping_min

0.0

Vector3

direction

Vector3(1, 0, 0)

DrawOrder

draw_order

0

Vector3

emission_box_extents

PackedColorArray

emission_colors

PackedColorArray()

PackedVector3Array

emission_normals

PackedVector3Array

emission_points

Vector3

emission_ring_axis

float

emission_ring_cone_angle

float

emission_ring_height

float

emission_ring_inner_radius

float

emission_ring_radius

EmissionShape

emission_shape

0

float

emission_sphere_radius

bool

emitting

true

float

explosiveness

0.0

int

fixed_fps

0

float

flatness

0.0

bool

fract_delta

true

Vector3

gravity

Vector3(0, -9.8, 0)

Curve

hue_variation_curve

float

hue_variation_max

0.0

float

hue_variation_min

0.0

float

initial_velocity_max

0.0

float

initial_velocity_min

0.0

float

lifetime

1.0

float

lifetime_randomness

0.0

Curve

linear_accel_curve

float

linear_accel_max

0.0

float

linear_accel_min

0.0

bool

local_coords

false

Mesh

mesh

bool

one_shot

false

Curve

orbit_velocity_curve

float

orbit_velocity_max

float

orbit_velocity_min

bool

particle_flag_align_y

false

bool

particle_flag_disable_z

false

bool

particle_flag_rotate_y

false

float

preprocess

0.0

Curve

radial_accel_curve

float

radial_accel_max

0.0

float

radial_accel_min

0.0

float

randomness

0.0

Curve

scale_amount_curve

float

scale_amount_max

1.0

float

scale_amount_min

1.0

Curve

scale_curve_x

Curve

scale_curve_y

Curve

scale_curve_z

int

seed

0

float

speed_scale

1.0

bool

split_scale

false

float

spread

45.0

Curve

tangential_accel_curve

float

tangential_accel_max

0.0

float

tangential_accel_min

0.0

bool

use_fixed_seed

false

AABB

visibility_aabb

AABB(0, 0, 0, 0, 0, 0)

Методы

AABB

capture_aabb() const

void

convert_from_particles(particles: Node)

Curve

get_param_curve(param: Parameter) const

float

get_param_max(param: Parameter) const

float

get_param_min(param: Parameter) const

bool

get_particle_flag(particle_flag: ParticleFlags) const

void

request_particles_process(process_time: float)

void

restart(keep_seed: bool = false)

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)


Сигналы

finished() 🔗

Выпускается, когда все активные частицы завершили обработку. Когда one_shot отключен, частицы будут обрабатываться непрерывно, поэтому это никогда не выпускается.


Перечисления

enum DrawOrder: 🔗

DrawOrder DRAW_ORDER_INDEX = 0

Частицы рисуются в порядке испускания.

DrawOrder DRAW_ORDER_LIFETIME = 1

Частицы рисуются в порядке оставшегося времени жизни. Другими словами, частица с наибольшим временем жизни рисуется спереди.

DrawOrder DRAW_ORDER_VIEW_DEPTH = 2

Частицы рисуются в порядке глубины.


enum Parameter: 🔗

Parameter PARAM_INITIAL_LINEAR_VELOCITY = 0

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки начальных свойств скорости.

Parameter PARAM_ANGULAR_VELOCITY = 1

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств угловой скорости.

Parameter PARAM_ORBIT_VELOCITY = 2

Используйте с set_param_min(), set_param_max() и set_param_curve() для задания свойств орбитальной скорости.

Parameter PARAM_LINEAR_ACCEL = 3

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств линейного ускорения.

Parameter PARAM_RADIAL_ACCEL = 4

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств радиального ускорения.

Parameter PARAM_TANGENTIAL_ACCEL = 5

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств тангенциального ускорения.

Parameter PARAM_DAMPING = 6

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств демпфирования.

Parameter PARAM_ANGLE = 7

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств угла.

Parameter PARAM_SCALE = 8

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств масштаба.

Parameter PARAM_HUE_VARIATION = 9

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств изменения оттенка.

Parameter PARAM_ANIM_SPEED = 10

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств скорости анимации.

Parameter PARAM_ANIM_OFFSET = 11

Используйте с set_param_min(), set_param_max() и set_param_curve() для установки свойств смещения анимации.

Parameter PARAM_MAX = 12

Представляет размер перечисления Parameter.


enum ParticleFlags: 🔗

ParticleFlags PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY = 0

Используйте с set_particle_flag() для установки partial_flag_align_y.

ParticleFlags PARTICLE_FLAG_ROTATE_Y = 1

Используйте с set_particle_flag() для установки partial_flag_rotate_y.

ParticleFlags PARTICLE_FLAG_DISABLE_Z = 2

Используйте с set_particle_flag() для установки particle_flag_disable_z.

ParticleFlags PARTICLE_FLAG_MAX = 3

Представляет размер перечисления ParticleFlags.


enum EmissionShape: 🔗

EmissionShape EMISSION_SHAPE_POINT = 0

Все частицы будут испускаться из одной точки.

EmissionShape EMISSION_SHAPE_SPHERE = 1

Частицы будут испускаться в объеме сферы.

EmissionShape EMISSION_SHAPE_SPHERE_SURFACE = 2

Частицы будут испускаться на поверхность сферы.

EmissionShape EMISSION_SHAPE_BOX = 3

Частицы будут испускаться в объеме коробки.

EmissionShape EMISSION_SHAPE_POINTS = 4

Частицы будут испускаться в точке, выбранной случайным образом среди emission_points. Цвет частиц будет модулироваться emission_colors.

EmissionShape EMISSION_SHAPE_DIRECTED_POINTS = 5

Частицы будут испускаться в позиции, выбранной случайным образом среди emission_points. Скорость и вращение частиц будут установлены на основе emission_normals. Цвет частиц будет модулироваться emission_colors.

EmissionShape EMISSION_SHAPE_RING = 6

Частицы будут выбрасываться в кольцо или цилиндр.

EmissionShape EMISSION_SHAPE_MAX = 7

Представляет размер перечисления EmissionShape.


Описания свойств

int amount = 8 🔗

  • void set_amount(value: int)

  • int get_amount()

Количество частиц, выбрасываемых за один цикл выброса.


Curve angle_curve 🔗

Вращение каждой частицы будет анимировано вдоль этой Curve. Должна быть единица Curve.


float angle_max = 0.0 🔗

Максимальный угол.


float angle_min = 0.0 🔗

Минимальный угол.


Curve angular_velocity_curve 🔗

Угловая скорость каждой частицы (скорость вращения) будет изменяться вдоль этой Curve в течение ее жизни. Должна быть единицей Curve.


float angular_velocity_max = 0.0 🔗

Максимальная начальная угловая скорость (ск. вращения), приложенная к каждой частице в градусах в секунду.


float angular_velocity_min = 0.0 🔗

Минимальная начальная угловая скорость (ск. вращения), приложенная к каждой частице в градусах в секунду.


Curve anim_offset_curve 🔗

Смещение анимации каждой частицы будет меняться вдоль этой Curve. Должно быть единицей Curve.


float anim_offset_max = 0.0 🔗

Максимальное смещение анимации.


float anim_offset_min = 0.0 🔗

Минимальное смещение анимации.


Curve anim_speed_curve 🔗

Скорость анимации каждой частицы будет меняться вдоль этой Кривой. Должна быть единицей Кривой.


float anim_speed_max = 0.0 🔗

Максимальная скорость анимации частиц.


float anim_speed_min = 0.0 🔗

Минимальная скорость анимации частиц.


Color color = Color(1, 1, 1, 1) 🔗

Начальный цвет каждой частицы.

Примечание: color умножает цвета вершин сетки частиц. Чтобы иметь видимый эффект на BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo должен быть true. Для ShaderMaterial ALBEDO *= COLOR.rgb; должен быть вставлен в функцию шейдера fragment(). В противном случае color не будет иметь видимого эффекта.


Gradient color_initial_ramp 🔗

  • void set_color_initial_ramp(value: Gradient)

  • Gradient get_color_initial_ramp()

Начальный цвет каждой частицы будет меняться вдоль этого Gradient (умноженного на color).

Примечание: color_initial_ramp умножает цвета вершин сетки частиц. Чтобы иметь видимый эффект на BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo должен быть true. Для ShaderMaterial ALBEDO *= COLOR.rgb; должен быть вставлен в функцию шейдера fragment(). В противном случае color_initial_ramp не будет иметь видимого эффекта.


Gradient color_ramp 🔗

Цвет каждой частицы будет меняться по этому Gradient в течение ее жизни (умножается на color).

Примечание: color_ramp умножает цвета вершин сетки частицы. Чтобы иметь видимый эффект на BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo должен быть true. Для ShaderMaterial ALBEDO *= COLOR.rgb; должен быть вставлен в функцию шейдера fragment(). В противном случае color_ramp не будет иметь видимого эффекта.


Curve damping_curve 🔗

Затухание будет меняться вдоль этой Curve. Должно быть единицей Curve.


float damping_max = 0.0 🔗

Максимальное демпфирование.


float damping_min = 0.0 🔗

Минимальное затухание.


Vector3 direction = Vector3(1, 0, 0) 🔗

Единичный вектор, задающий направление испускания частиц.


DrawOrder draw_order = 0 🔗

Порядок отрисовки частиц.


Vector3 emission_box_extents 🔗

  • void set_emission_box_extents(value: Vector3)

  • Vector3 get_emission_box_extents()

Размеры прямоугольника, если emission_shape установлен в EMISSION_SHAPE_BOX.


PackedColorArray emission_colors = PackedColorArray() 🔗

Устанавливает Цвет-а для модуляции частиц при использовании EMISSION_SHAPE_POINTS или EMISSION_SHAPE_DIRECTED_POINTS.

Примечание: emission_colors умножает цвета вершин сетки частиц. Чтобы иметь видимый эффект на BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo должен быть true. Для ShaderMaterial ALBEDO *= COLOR.rgb; должен быть вставлен в функцию шейдера fragment(). В противном случае emission_colors не будет иметь видимого эффекта.

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 🔗

Задает направление, в котором будут испускаться частицы при использовании 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 🔗

Устанавливает начальные позиции для создания частиц при использовании EMISSION_SHAPE_POINTS или 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.


Vector3 emission_ring_axis 🔗

  • void set_emission_ring_axis(value: Vector3)

  • Vector3 get_emission_ring_axis()

Ось кольца при использовании излучателя EMISSION_SHAPE_RING.


float emission_ring_cone_angle 🔗

  • void set_emission_ring_cone_angle(value: float)

  • float get_emission_ring_cone_angle()

Угол конуса при использовании эмиттера EMISSION_SHAPE_RING. Угол по умолчанию 90 градусов приводит к кольцу, а угол 0 градусов приводит к конусу. Промежуточные значения приведут к кольцу, где один конец больше другого.

Примечание: В зависимости от emission_ring_height угол может быть зафиксирован, если конец кольца достигнут, чтобы сформировать идеальный конус.


float emission_ring_height 🔗

  • void set_emission_ring_height(value: float)

  • float get_emission_ring_height()

Высота кольца при использовании излучателя EMISSION_SHAPE_RING.


float emission_ring_inner_radius 🔗

  • void set_emission_ring_inner_radius(value: float)

  • float get_emission_ring_inner_radius()

Внутренний радиус кольца при использовании излучателя EMISSION_SHAPE_RING.


float emission_ring_radius 🔗

  • void set_emission_ring_radius(value: float)

  • float get_emission_ring_radius()

Радиус кольца при использовании излучателя EMISSION_SHAPE_RING.


EmissionShape emission_shape = 0 🔗

Внутри этой области будут испускаться частицы.


float emission_sphere_radius 🔗

  • void set_emission_sphere_radius(value: float)

  • float get_emission_sphere_radius()

Радиус сферы, если EmissionShape установлен на EMISSION_SHAPE_SPHERE.


bool emitting = true 🔗

  • void set_emitting(value: bool)

  • bool is_emitting()

Если true, частицы испускаются. emitting можно использовать для запуска и остановки испускания частиц. Однако, если one_shot равно true, установка emitting в true не перезапустит цикл испускания, пока все активные частицы не закончат обработку. Вы можете использовать сигнал signalfinished, чтобы получать уведомления, как только все активные частицы закончат обработку.


float explosiveness = 0.0 🔗

  • void set_explosiveness_ratio(value: float)

  • float get_explosiveness_ratio()

Насколько быстро выбрасываются частицы в цикле эмиссии. Если больше 0, то будет разрыв в эмиссии до начала следующего цикла.


int fixed_fps = 0 🔗

  • void set_fixed_fps(value: int)

  • int get_fixed_fps()

Частота кадров системы частиц зафиксирована на значении. Например, изменение значения на 2 заставит частицы рендериться со скоростью 2 кадра в секунду. Обратите внимание, что это не замедляет саму систему частиц.


float flatness = 0.0 🔗

  • void set_flatness(value: float)

  • float get_flatness()

Величина spread в плоскости Y/Z. Значение 1 ограничивает частицы плоскостью X/Z.


bool fract_delta = true 🔗

  • void set_fractional_delta(value: bool)

  • bool get_fractional_delta()

Если true, то выполняется дробный расчет дельты, который обеспечивает более плавный эффект отображения частиц.


Vector3 gravity = Vector3(0, -9.8, 0) 🔗

Гравитация действует на каждую частицу.


Curve hue_variation_curve 🔗

Оттенок каждой частицы будет меняться вдоль этой Curve. Должна быть единица Curve.


float hue_variation_max = 0.0 🔗

Макс. вариативность оттенков.


float hue_variation_min = 0.0 🔗

Мин. вариативность оттенков.


float initial_velocity_max = 0.0 🔗

Максимальное значение начальной скорости.


float initial_velocity_min = 0.0 🔗

Минимальное значение начальной скорости.


float lifetime = 1.0 🔗

  • void set_lifetime(value: float)

  • float get_lifetime()

Количество времени, в течение которого каждая частица будет существовать.


float lifetime_randomness = 0.0 🔗

  • void set_lifetime_randomness(value: float)

  • float get_lifetime_randomness()

Коэффициент случайности времени жизни частицы.


Curve linear_accel_curve 🔗

Линейное ускорение каждой частицы будет изменяться вдоль этой Curve. Должно быть единицей Curve.


float linear_accel_max = 0.0 🔗

Макс. линейное ускорение.


float linear_accel_min = 0.0 🔗

Мин. линейное ускорение.


bool local_coords = false 🔗

  • void set_use_local_coordinates(value: bool)

  • bool get_use_local_coordinates()

Если true, частицы используют координатное пространство родительского узла (известное как локальные координаты). Это заставит частицы двигаться и вращаться вдоль узла CPUParticles3D (и его родителей) при его перемещении или повороте. Если false, частицы используют глобальные координаты; они не будут двигаться или вращаться вдоль узла CPUParticles3D (и его родителей) при его перемещении или повороте.


Mesh mesh 🔗

  • void set_mesh(value: Mesh)

  • Mesh get_mesh()

Mesh используется для каждой частицы. Если null, частицы будут сферами.


bool one_shot = false 🔗

  • void set_one_shot(value: bool)

  • bool get_one_shot()

Если true, происходит только один цикл эмиссии. Если установить true во время цикла, эмиссия прекратится в конце цикла.


Curve orbit_velocity_curve 🔗

Орбитальная скорость каждой частицы будет меняться вдоль этой Curve. Должна быть единицей Curve.


float orbit_velocity_max 🔗

Макс. орбитальная скорость.


float orbit_velocity_min 🔗

Мин. орбитальная скорость.


bool particle_flag_align_y = false 🔗

Совместите ось Y частицы с направлением ее скорости.


bool particle_flag_disable_z = false 🔗

Если true, частицы не будут двигаться по оси Z.


bool particle_flag_rotate_y = false 🔗

Если true, частицы вращаются вокруг оси Y на angle_min.


float preprocess = 0.0 🔗

  • void set_pre_process_time(value: float)

  • float get_pre_process_time()

Система частиц запускается так, как будто она уже проработала указанное количество секунд.


Curve radial_accel_curve 🔗

Радиальное ускорение каждой частицы будет изменяться вдоль этой Curve. Должно быть единицей Curve.


float radial_accel_max = 0.0 🔗

Макс. радиальное ускорение.


float radial_accel_min = 0.0 🔗

Мин. радиальное ускорение.


float randomness = 0.0 🔗

  • void set_randomness_ratio(value: float)

  • float get_randomness_ratio()

Коэффициент случайности времени жизни излучения.


Curve scale_amount_curve 🔗

Масштаб каждой частицы будет меняться вдоль этой Curve. Должен быть единицей Curve.


float scale_amount_max = 1.0 🔗

Макс. масштаб.


float scale_amount_min = 1.0 🔗

Миним. масштаб.


Curve scale_curve_x 🔗

  • void set_scale_curve_x(value: Curve)

  • Curve get_scale_curve_x()

Кривая шкалы на протяжении жизни по оси x.


Curve scale_curve_y 🔗

  • void set_scale_curve_y(value: Curve)

  • Curve get_scale_curve_y()

Кривая шкалы на протяжении жизни по оси y.


Curve scale_curve_z 🔗

  • void set_scale_curve_z(value: Curve)

  • Curve get_scale_curve_z()

Кривая шкалы на протяжении жизни по оси z.


int seed = 0 🔗

  • void set_seed(value: int)

  • int get_seed()

Устанавливает случайное семя, используемое системой частиц. Действует только если use_fixed_seed равен true.


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

Коэффициент масштабирования скорости работы системы частиц. Значение 0 может использоваться для остановки частиц.


bool split_scale = false 🔗

  • void set_split_scale(value: bool)

  • bool get_split_scale()

Если задано значение true, можно указать три различные кривые шкалы, по одной на каждую ось шкалы.


float spread = 45.0 🔗

  • void set_spread(value: float)

  • float get_spread()

Начальный диапазон направления каждой частицы составляет от +spread до -spread градусов. Применяется к плоскостям X/Z и Y/Z.


Curve tangential_accel_curve 🔗

Тангенциальное ускорение каждой частицы будет меняться вдоль этой Curve. Должно быть единицей Curve.


float tangential_accel_max = 0.0 🔗

Макс. касательное ускорение.


float tangential_accel_min = 0.0 🔗

Мин. касательное ускорение.


bool use_fixed_seed = false 🔗

  • void set_use_fixed_seed(value: bool)

  • bool get_use_fixed_seed()

Если true, частицы будут использовать одно и то же семя для каждой симуляции, используя семя, определенное в seed. Это полезно в ситуациях, когда визуальный результат должен быть согласованным между повторами, например, при использовании режима Movie Maker.


AABB visibility_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗

  • void set_visibility_aabb(value: AABB)

  • AABB get_visibility_aabb()

AABB, который определяет область узла, которая должна быть видна на экране, чтобы система частиц была активной.

Увеличьте поле, если частицы внезапно появляются/исчезают, когда узел входит/выходит из экрана. AABB можно увеличить с помощью кода или с помощью инструмента редактора **Particles → Generate AABB[/b.


Описания метода

AABB capture_aabb() const 🔗

Возвращает выровненный по осям ограничивающий прямоугольник, содержащий все частицы, активные в текущем кадре.


void convert_from_particles(particles: Node) 🔗

Устанавливает свойства этого узла для соответствия заданному узлу GPUParticles3D с назначенным ParticleProcessMaterial.


Curve get_param_curve(param: Parameter) const 🔗

Возвращает Curve параметра, указанного в Parameter.


float get_param_max(param: Parameter) const 🔗

Возвращает максимальный диапазон значений для заданного параметра.


float get_param_min(param: Parameter) const 🔗

Возвращает минимальный диапазон значений для заданного параметра.


bool get_particle_flag(particle_flag: ParticleFlags) const 🔗

Возвращает включенное состояние заданного флага частицы.


void request_particles_process(process_time: float) 🔗

Запрашивает обработку частиц для дополнительного времени процесса в течение одного кадра.

Полезно для воспроизведения частиц, если используется в сочетании с use_fixed_seed или путем вызова restart() с параметром keep_seed, установленным на true.


void restart(keep_seed: bool = false) 🔗

Перезапускает излучатель частиц.

Если keep_seed равен true, текущее случайное семя будет сохранено. Полезно для поиска и воспроизведения.


void set_param_curve(param: Parameter, curve: Curve) 🔗

Устанавливает Curve параметра, указанного в Parameter. Должен быть единицей 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) 🔗

Включает или отключает указанный флаг частицы.