CPUParticles3D
Наследует: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
3D-излучатель частиц на базе процессора.
Описание
Узел 3D-частиц на базе ЦП, используемый для создания различных систем частиц и эффектов.
См. также GPUParticles3D, который обеспечивает ту же функциональность с аппаратным ускорением, но может не работать на старых устройствах.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
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) |
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) |
Сигналы
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.
Описания свойств
Количество частиц, выбрасываемых за один цикл выброса.
Вращение каждой частицы будет анимировано вдоль этой Curve. Должна быть единица Curve.
Максимальный угол.
Минимальный угол.
Curve angular_velocity_curve 🔗
Угловая скорость каждой частицы (скорость вращения) будет изменяться вдоль этой Curve в течение ее жизни. Должна быть единицей Curve.
float angular_velocity_max = 0.0 🔗
Максимальная начальная угловая скорость (ск. вращения), приложенная к каждой частице в градусах в секунду.
float angular_velocity_min = 0.0 🔗
Минимальная начальная угловая скорость (ск. вращения), приложенная к каждой частице в градусах в секунду.
Смещение анимации каждой частицы будет меняться вдоль этой Curve. Должно быть единицей Curve.
Максимальное смещение анимации.
Минимальное смещение анимации.
Скорость анимации каждой частицы будет меняться вдоль этой Кривой. Должна быть единицей Кривой.
Максимальная скорость анимации частиц.
Минимальная скорость анимации частиц.
Color color = Color(1, 1, 1, 1) 🔗
Начальный цвет каждой частицы.
Примечание: color умножает цвета вершин сетки частиц. Чтобы иметь видимый эффект на BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo должен быть true. Для ShaderMaterial ALBEDO *= COLOR.rgb; должен быть вставлен в функцию шейдера fragment(). В противном случае color не будет иметь видимого эффекта.
Начальный цвет каждой частицы будет меняться вдоль этого Gradient (умноженного на color).
Примечание: color_initial_ramp умножает цвета вершин сетки частиц. Чтобы иметь видимый эффект на BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo должен быть true. Для ShaderMaterial ALBEDO *= COLOR.rgb; должен быть вставлен в функцию шейдера fragment(). В противном случае color_initial_ramp не будет иметь видимого эффекта.
Цвет каждой частицы будет меняться по этому Gradient в течение ее жизни (умножается на color).
Примечание: color_ramp умножает цвета вершин сетки частицы. Чтобы иметь видимый эффект на BaseMaterial3D, BaseMaterial3D.vertex_color_use_as_albedo должен быть true. Для ShaderMaterial ALBEDO *= COLOR.rgb; должен быть вставлен в функцию шейдера fragment(). В противном случае color_ramp не будет иметь видимого эффекта.
Затухание будет меняться вдоль этой Curve. Должно быть единицей Curve.
Максимальное демпфирование.
Минимальное затухание.
Vector3 direction = Vector3(1, 0, 0) 🔗
Единичный вектор, задающий направление испускания частиц.
Порядок отрисовки частиц.
Vector3 emission_box_extents 🔗
Размеры прямоугольника, если emission_shape установлен в EMISSION_SHAPE_BOX.
PackedColorArray emission_colors = PackedColorArray() 🔗
void set_emission_colors(value: PackedColorArray)
PackedColorArray get_emission_colors()
Устанавливает Цвет-а для модуляции частиц при использовании 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 🔗
void set_emission_normals(value: PackedVector3Array)
PackedVector3Array get_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 🔗
void set_emission_points(value: PackedVector3Array)
PackedVector3Array get_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.
Ось кольца при использовании излучателя EMISSION_SHAPE_RING.
float emission_ring_cone_angle 🔗
Угол конуса при использовании эмиттера EMISSION_SHAPE_RING. Угол по умолчанию 90 градусов приводит к кольцу, а угол 0 градусов приводит к конусу. Промежуточные значения приведут к кольцу, где один конец больше другого.
Примечание: В зависимости от emission_ring_height угол может быть зафиксирован, если конец кольца достигнут, чтобы сформировать идеальный конус.
Высота кольца при использовании излучателя EMISSION_SHAPE_RING.
float emission_ring_inner_radius 🔗
Внутренний радиус кольца при использовании излучателя EMISSION_SHAPE_RING.
Радиус кольца при использовании излучателя EMISSION_SHAPE_RING.
EmissionShape emission_shape = 0 🔗
void set_emission_shape(value: EmissionShape)
EmissionShape get_emission_shape()
Внутри этой области будут испускаться частицы.
float emission_sphere_radius 🔗
Радиус сферы, если EmissionShape установлен на EMISSION_SHAPE_SPHERE.
Если true, частицы испускаются. emitting можно использовать для запуска и остановки испускания частиц. Однако, если one_shot равно true, установка emitting в true не перезапустит цикл испускания, пока все активные частицы не закончат обработку. Вы можете использовать сигнал signalfinished, чтобы получать уведомления, как только все активные частицы закончат обработку.
Насколько быстро выбрасываются частицы в цикле эмиссии. Если больше 0, то будет разрыв в эмиссии до начала следующего цикла.
Частота кадров системы частиц зафиксирована на значении. Например, изменение значения на 2 заставит частицы рендериться со скоростью 2 кадра в секунду. Обратите внимание, что это не замедляет саму систему частиц.
Величина spread в плоскости Y/Z. Значение 1 ограничивает частицы плоскостью X/Z.
Если true, то выполняется дробный расчет дельты, который обеспечивает более плавный эффект отображения частиц.
Vector3 gravity = Vector3(0, -9.8, 0) 🔗
Гравитация действует на каждую частицу.
Оттенок каждой частицы будет меняться вдоль этой 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_randomness = 0.0 🔗
Коэффициент случайности времени жизни частицы.
Линейное ускорение каждой частицы будет изменяться вдоль этой Curve. Должно быть единицей Curve.
float linear_accel_max = 0.0 🔗
Макс. линейное ускорение.
float linear_accel_min = 0.0 🔗
Мин. линейное ускорение.
Если true, частицы используют координатное пространство родительского узла (известное как локальные координаты). Это заставит частицы двигаться и вращаться вдоль узла CPUParticles3D (и его родителей) при его перемещении или повороте. Если false, частицы используют глобальные координаты; они не будут двигаться или вращаться вдоль узла CPUParticles3D (и его родителей) при его перемещении или повороте.
Mesh используется для каждой частицы. Если null, частицы будут сферами.
Если true, происходит только один цикл эмиссии. Если установить true во время цикла, эмиссия прекратится в конце цикла.
Орбитальная скорость каждой частицы будет меняться вдоль этой Curve. Должна быть единицей Curve.
Макс. орбитальная скорость.
Мин. орбитальная скорость.
bool particle_flag_align_y = false 🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
Совместите ось Y частицы с направлением ее скорости.
bool particle_flag_disable_z = false 🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
Если true, частицы не будут двигаться по оси Z.
bool particle_flag_rotate_y = false 🔗
void set_particle_flag(particle_flag: ParticleFlags, enable: bool)
bool get_particle_flag(particle_flag: ParticleFlags) const
Если true, частицы вращаются вокруг оси Y на angle_min.
Система частиц запускается так, как будто она уже проработала указанное количество секунд.
Радиальное ускорение каждой частицы будет изменяться вдоль этой Curve. Должно быть единицей Curve.
float radial_accel_max = 0.0 🔗
Макс. радиальное ускорение.
float radial_accel_min = 0.0 🔗
Мин. радиальное ускорение.
Коэффициент случайности времени жизни излучения.
Масштаб каждой частицы будет меняться вдоль этой Curve. Должен быть единицей Curve.
float scale_amount_max = 1.0 🔗
Макс. масштаб.
float scale_amount_min = 1.0 🔗
Миним. масштаб.
Кривая шкалы на протяжении жизни по оси x.
Кривая шкалы на протяжении жизни по оси y.
Кривая шкалы на протяжении жизни по оси z.
Устанавливает случайное семя, используемое системой частиц. Действует только если use_fixed_seed равен true.
Коэффициент масштабирования скорости работы системы частиц. Значение 0 может использоваться для остановки частиц.
Если задано значение true, можно указать три различные кривые шкалы, по одной на каждую ось шкалы.
Начальный диапазон направления каждой частицы составляет от +spread до -spread градусов. Применяется к плоскостям X/Z и Y/Z.
Curve tangential_accel_curve 🔗
Тангенциальное ускорение каждой частицы будет меняться вдоль этой Curve. Должно быть единицей Curve.
float tangential_accel_max = 0.0 🔗
Макс. касательное ускорение.
float tangential_accel_min = 0.0 🔗
Мин. касательное ускорение.
Если true, частицы будут использовать одно и то же семя для каждой симуляции, используя семя, определенное в seed. Это полезно в ситуациях, когда визуальный результат должен быть согласованным между повторами, например, при использовании режима Movie Maker.
AABB visibility_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
AABB, который определяет область узла, которая должна быть видна на экране, чтобы система частиц была активной.
Увеличьте поле, если частицы внезапно появляются/исчезают, когда узел входит/выходит из экрана. AABB можно увеличить с помощью кода или с помощью инструмента редактора **Particles → Generate AABB[/b.
Описания метода
Возвращает выровненный по осям ограничивающий прямоугольник, содержащий все частицы, активные в текущем кадре.
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) 🔗
Включает или отключает указанный флаг частицы.