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.

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, process_time_residual: float = 0.0)

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() для встановлення particle_flag_align_y.

ParticleFlags PARTICLE_FLAG_ROTATE_Y = 1

Використовуйте разом з set_particle_flag() для встановлення particle_flag_rotate_y.

ParticleFlags PARTICLE_FLAG_DISABLE_Z = 2

Використовуйте разом з методом set_particle_flag() для встановлення particle_flag_disable_z.

ParticleFlags PARTICLE_FLAG_MAX = 3

Представляємо розмір ParticleFlags enum.


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 enum.


Описи властивостей

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 🔗

Швидкість анімації кожної частинки змінюватиметься вздовж цієї Curve. Має бути одиницею Curve.


float anim_speed_max = 0.0 🔗

Максимальна швидкість анімації частинок.


float anim_speed_min = 0.0 🔗

Мінімальна швидкість анімації частинок.


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

Кожен початковий колір частинки.

Примітка: color мультиплікації кольорів вершини частинок. Щоб мати видимий ефект на BaseMaterial3D, пам'ятний базиMaterial3D.vertex_color_use_as_albedo must true. Для ShaderMaterial ALBEDO *= COLOR.rgb; необхідно вставляти в шейдер `` фрагмент()``. В іншому випадку 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) 🔗

  • void set_direction(value: Vector3)

  • Vector3 get_direction()

Блок векторний, що визначає напрямок викидів частинок.


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() 🔗

  • void set_emission_colors(value: PackedColorArray)

  • PackedColorArray get_emission_colors()

Налаштовує Color для модуляції частинок при використанні EMISSION_SHAPE_POINTS або EMISSION_SHAPE_DIRECTED_POINTS.

Примітка: emission_colors мультиплікації колірних гамок з сітки вершин. Щоб мати видимий ефект на BaseMaterial3D, базиMaterial3D.vertex_color_use_as_albedo must true. Для ShaderMaterial ALBEDO *= COLOR.rgb; необхідно вставляти в фрагменті шейра `` ()``. В іншому випадку, 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.


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 не перезапустити цикл випромінювання до після обробки всіх активних частинок. Ви можете використовувати сигнал finished, який буде повідомлено один раз, коли всі активні частинки закінчуються обробкою.


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()

Кількість пам'яті поширення в літаку 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) 🔗

  • void set_gravity(value: Vector3)

  • Vector3 get_gravity()

Гравітність наноситься на кожну частинку.


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()

Викривлення для масштабу над життям, вздовж осі я.


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()

Діапазон початкового напрямку частинок від `` +спред`` до -спред. градусів. Застосовується до площин 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 може бути вирощений за допомогою коду або з Пачастини → Generate AABB редактор інструментом.


Описи методів

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, 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) 🔗

Перезапускає емітер частинок.

Якщо keep_seed має значення true, поточне випадкове початкове число буде збережено. Корисно для пошуку та відтворення.


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

Встановлює Curve параметра, заданого eunm 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) 🔗

Вмикає або вимикає заданий прапор частинки.