ParticlesCPU

继承: GeometryRender < VisualRender < Item3D < Item < Object

基于CPU的3D粒子发射器。

描述

基于CPU的3D粒子节点用于创建各种粒子系统和效果。

另请参阅ParticlesGPU,它提供与硬件加速相同的功能,但可能无法在旧设备上运行。

属性

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: Item)

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()来设置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 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 🔗

每个粒子的动画速度将沿此Curve变化。应该是一个单位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。对于ShaderMaterialALBEDO*=COLO. 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。对于ShaderMaterialALBEDO*=COLO. rgb;必须插入着色器的片段()函数中。否则,color_initial_ramp将没有可见效果。


Gradient color_ramp 🔗

每个粒子的颜色将在其生命周期内沿着Gradient变化(乘以color)。

注意:color_ramp将粒子网格的顶点颜色相乘。要在BaseMaterial3D上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo必须true。对于ShaderMaterialALBEDO*=COLO. rgb;必须插入着色器的片段()函数中。否则,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 🔗

粒子绘制顺序。使用DrawOrder值。


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_POINTSEMISSION_SHAPE_DIRECTED_POINTS时,设置Color来调节粒子。

注意:emission_colors将粒子网格的顶点颜色相乘。要在BaseMaterial3D上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo必须true。对于ShaderMaterialALBEDO*=COLO. rgb;必须插入着色器的片段()函数中。否则,emission_colors将没有可见效果。

注意:返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedColorArray


PackedVector3Array emission_normals 🔗

设置使用EMISSION_SHAPE_DIRECTED_POINTS时粒子发射的方向。

注意:返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedVector3Array


PackedVector3Array emission_points 🔗

使用EMISSION_SHAPE_POINTSEMISSION_SHAPE_DIRECTED_POINTS时设置生成粒子的初始位置。

注意:返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedVector3Array


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 🔗

粒子将在此区域内发射。有关可能的值,请参阅EmissionShape


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_shottrue,则将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平面中spread的数量。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,则粒子使用父节点的坐标空间(称为局部坐标)。这将导致粒子在移动或旋转时沿着ParticlesCPU节点(及其父节点)移动和旋转。如果false,则粒子使用全局坐标;它们不会在移动或旋转时沿着ParticlesCPU节点(及其父节点)移动或旋转。


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_seedtrue时有效。


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可以通过代码或使用粒子→生成AABB编辑器工具生长。


方法说明

AABB capture_aabb() const 🔗

返回轴对齐的边界框,其中包含当前帧中所有活动的粒子。


void convert_from_particles(particles: Item) 🔗

设置此节点的属性以匹配给定的ParticlesGPU节点和分配的ParticleProcessMaterial


Curve get_param_curve(param: Parameter) const 🔗

返回Parameter指定的参数的Curve


float get_param_max(param: Parameter) const 🔗

返回给定参数的最大值范围。


float get_param_min(param: Parameter) const 🔗

返回给定参数的最小值范围。


bool get_particle_flag(particle_flag: ParticleFlags) const 🔗

返回给定粒子标志的启用状态(有关选项,请参阅ParticleFlags)。


void request_particles_process(process_time: float) 🔗

请求粒子在单个帧内处理额外的处理时间。

对于粒子回放很有用,如果与use_fixed_seed结合使用,或者通过调用restart()并将参数keep_seed设置为true


void restart(keep_seed: bool = false) 🔗

重新启动粒子发射器。

如果keep_seedtrue,则保留当前的随机种子。用于查找和回放。


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

设置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) 🔗

启用或禁用给定的粒子标志(有关选项,请参阅ParticleFlags)。