ParticlesCPU¶
继承: GeometryRender < VisualRender < Item3D < Item < Object
基于CPU的3D粒子发射器。
描述¶
基于CPU的3D粒子节点用于创建各种粒子系统和效果。
另请参阅ParticlesGPU,它提供与硬件加速相同的功能,但可能无法在旧设备上运行。
属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
capture_aabb() const |
|
void |
convert_from_particles(particles: Item) |
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()来设置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枚举的大小。
属性说明¶
在一个发射循环中发射的粒子数。
每个粒子的旋转将沿着这个Curve动画。应该是一个单位Curve。
最大角度。
最小角度。
Curve angular_velocity_curve 🔗
每个粒子的角速度(旋转速度)将在其生命周期内沿此Curve变化。应该是一个单位Curve。
float angular_velocity_max = 0.0 🔗
应用于每个粒子的最大初始角速度(旋转速度),单位为每秒度。
float angular_velocity_min = 0.0 🔗
应用于每个粒子的最小初始角速度(旋转速度),单位为每秒度。
每个粒子的动画偏移量将沿此Curve变化。应该是一个单位Curve。
最大动画偏移量。
最小动画偏移。
每个粒子的动画速度将沿此Curve变化。应该是一个单位Curve。
最大粒子动画速度。
最小粒子动画速度。
Color color = Color(1, 1, 1, 1) 🔗
每个粒子的初始颜色。
注意:color将粒子网格的顶点颜色相乘。要在BaseMaterial3D上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo必须为true。对于ShaderMaterial,ALBEDO*=COLO. rgb;必须插入着色器的片段()函数中。否则,color将没有可见效果。
每个粒子的初始颜色将沿此Gradient变化(乘以color)。
注意:color_initial_ramp将粒子网格的顶点颜色相乘。要在BaseMaterial3D上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo必须为true。对于ShaderMaterial,ALBEDO*=COLO. rgb;必须插入着色器的片段()函数中。否则,color_initial_ramp将没有可见效果。
每个粒子的颜色将在其生命周期内沿着Gradient变化(乘以color)。
注意:color_ramp将粒子网格的顶点颜色相乘。要在BaseMaterial3D上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo必须为true。对于ShaderMaterial,ALBEDO*=COLO. rgb;必须插入着色器的片段()函数中。否则,color_ramp将没有可见效果。
最大阻尼。
最小阻尼。
Vector3 direction = Vector3(1, 0, 0) 🔗
指定粒子发射方向的单位向量。
粒子绘制顺序。使用DrawOrder值。
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时,设置Color来调节粒子。
注意:emission_colors将粒子网格的顶点颜色相乘。要在BaseMaterial3D上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo必须为true。对于ShaderMaterial,ALBEDO*=COLO. rgb;必须插入着色器的片段()函数中。否则,emission_colors将没有可见效果。
注意:返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedColorArray 。
PackedVector3Array emission_normals 🔗
void set_emission_normals(value: PackedVector3Array)
PackedVector3Array get_emission_normals()
设置使用EMISSION_SHAPE_DIRECTED_POINTS时粒子发射的方向。
注意:返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedVector3Array 。
PackedVector3Array emission_points 🔗
void set_emission_points(value: PackedVector3Array)
PackedVector3Array get_emission_points()
使用EMISSION_SHAPE_POINTS或EMISSION_SHAPE_DIRECTED_POINTS时设置生成粒子的初始位置。
注意:返回的数组被 复制 ,对它的任何更改都不会更新原始属性值。有关详细信息,请参见 PackedVector3Array 。
使用发射器时环的轴线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()
粒子将在此区域内发射。有关可能的值,请参阅EmissionShape。
float emission_sphere_radius 🔗
如果EmissionShape设置为EMISSION_SHAPE_SPHERE,则球体的半径。
如果true,则粒子正在发射。emitting可用于启动和停止粒子发射。但是,如果one_shot是true,则将emitting设置为true将不会重新启动发射循环,直到所有活动粒子完成处理。您可以使用finished信号在所有活动粒子完成处理后得到通知。
排放循环中粒子发射的速度。如果大于0,则在下一个循环开始之前排放会有一个间隙。
粒子系统的帧率固定为一个值。例如,将值更改为2将使粒子以每秒2帧的速度渲染。请注意,这不会减慢粒子系统本身的速度。
Y/Z平面中spread的数量。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,则粒子使用父节点的坐标空间(称为局部坐标)。这将导致粒子在移动或旋转时沿着ParticlesCPU节点(及其父节点)移动和旋转。如果false,则粒子使用全局坐标;它们不会在移动或旋转时沿着ParticlesCPU节点(及其父节点)移动或旋转。
用于每个粒子的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,则可以指定三个不同的刻度曲线,每个刻度轴一个。
每个粒子的初始方向范围从+扩展到-扩展度。适用于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可以通过代码或使用粒子→生成AABB编辑器工具生长。
方法说明¶
返回轴对齐的边界框,其中包含当前帧中所有活动的粒子。
void convert_from_particles(particles: Item) 🔗
设置此节点的属性以匹配给定的ParticlesGPU节点和分配的ParticleProcessMaterial。
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 🔗
返回给定粒子标志的启用状态(有关选项,请参阅ParticleFlags)。
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) 🔗
设置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)。