CPUParticles3D
继承: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
基于 CPU 的 3D 粒子发射器。
描述
基于 CPU 的 3D 粒子节点,可用于创建各种粒子系统、粒子效果。
另见 GPUParticles3D,利用硬件加速提供了相同的功能,但可能无法在较旧的设备上运行。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
void | convert_from_particles ( Node particles ) |
get_param_curve ( Parameter param ) const | |
get_param_max ( Parameter param ) const | |
get_param_min ( Parameter param ) const | |
get_particle_flag ( ParticleFlags particle_flag ) const | |
void | restart ( ) |
void | set_param_curve ( Parameter param, Curve curve ) |
void | set_param_max ( Parameter param, float value ) |
void | set_param_min ( Parameter param, float value ) |
void | set_particle_flag ( ParticleFlags particle_flag, bool enable ) |
信号
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
单个发射周期内发射的粒子数。
Curve angle_curve
每个粒子的旋转将沿着这条 Curve 进行动画处理。
float angle_max = 0.0
最大角度。
float angle_min = 0.0
最小角度。
Curve angular_velocity_curve
每个粒子的角速度(旋转速度)将在其生命周期内沿着这条 Curve 变化。
float angular_velocity_max = 0.0
应用于每个粒子的最大初始角速度(旋转速度),单位:度每秒。
float angular_velocity_min = 0.0
应用于每个粒子的最小初始角速度(旋转速度),单位:度每秒 。
Curve anim_offset_curve
每个粒子的动画偏移将沿着这条 Curve 变化。
float anim_offset_max = 0.0
最大动画偏移。
float anim_offset_min = 0.0
最小动画偏移。
Curve anim_speed_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
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color 将没有可见效果。
Gradient color_initial_ramp
每个粒子的初始颜色将沿着该 GradientTexture1D(乘以 color)而变化。
注意:color_initial_ramp 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color_initial_ramp 将没有可见效果。
Gradient color_ramp
每个粒子的颜色将在其生命周期内沿该 GradientTexture1D 变化(乘以 color)。
注意:color_ramp 乘以粒子网格的顶点颜色。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则,color_ramp 将没有可见效果。
Curve damping_curve
阻尼将沿着这条 Gradient 变化。
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
emission_shape 被设置为 EMISSION_SHAPE_BOX 时,该矩形的范围。
PackedColorArray emission_colors = PackedColorArray()
void set_emission_colors ( PackedColorArray value )
PackedColorArray get_emission_colors ( )
设置使用 EMISSION_SHAPE_POINTS 或 EMISSION_SHAPE_DIRECTED_POINTS 时对粒子进行调制的 Color。
注意:emission_colors 会与粒子网格的顶点颜色相乘。要在 BaseMaterial3D 上产生可见效果,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须在着色器的 fragment()
函数中插入 ALBEDO *= COLOR.rgb;
。否则 emission_colors 不会产生可见效果。
PackedVector3Array emission_normals
void set_emission_normals ( PackedVector3Array value )
PackedVector3Array get_emission_normals ( )
设置使用 EMISSION_SHAPE_DIRECTED_POINTS 时粒子发射的方向。
PackedVector3Array emission_points
void set_emission_points ( PackedVector3Array value )
PackedVector3Array get_emission_points ( )
设置使用 EMISSION_SHAPE_POINTS 或 EMISSION_SHAPE_DIRECTED_POINTS 时出生粒子的初始位置。
Vector3 emission_ring_axis
使用形为 EMISSION_SHAPE_RING 的发射器时环的轴。
float emission_ring_height
使用形为 EMISSION_SHAPE_RING 的发射器时环的高度。
float emission_ring_inner_radius
使用形为 EMISSION_SHAPE_RING 的发射器时环的内半径。
float emission_ring_radius
使用形为 EMISSION_SHAPE_RING 的发射器时环的半径。
EmissionShape emission_shape = 0
void set_emission_shape ( EmissionShape value )
EmissionShape get_emission_shape ( )
粒子将在此区域内发射。可能的取值见 EmissionShape。
float emission_sphere_radius
EmissionShape 被设置为 EMISSION_SHAPE_SPHERE时,该球体的半径。
bool emitting = true
如果为 true
,则正在发射粒子。emitting 可用于启动和停止粒子发射。但是,如果 one_shot 为 true
,则将 emitting 设置为 true
将不会重新启动该发射循环,直到所有活动粒子完成处理为止。一旦所有活动粒子完成处理,你可以使用 finished 信号来收取通知。
float explosiveness = 0.0
粒子在单个发射周期中的发射有多急。如果大于 0
,则在下一个发射周期开始之前,发射会出现一个间隔。
int fixed_fps = 0
粒子系统的帧速率被固定为一个值。例如,将值更改为 2 会使粒子以每秒 2 帧的速度渲染。请注意,这并不会降低粒子系统本身的速度。
float flatness = 0.0
Y/Z 平面中的 spread 数量。值 1
将粒子限制在 X/Z 平面上。
bool fract_delta = true
如果为 为true
,则使用分数增量 delta 计算,将具有更平滑的粒子显示效果。
Vector3 gravity = Vector3(0, -9.8, 0)
应用于每个粒子的重力。
Curve hue_variation_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
每个粒子存在的时间。
float lifetime_randomness = 0.0
粒子寿命随机率。
Curve linear_accel_curve
每个粒子的线性加速度将沿这条 Curve 变化。
float linear_accel_max = 0.0
最大线性加速度。
float linear_accel_min = 0.0
最小线性加速度。
bool local_coords = false
如果为 true
,粒子使用父节点的坐标空间(称为局部坐标)。这将导致粒子在移动或旋转时,沿着 CPUParticles3D 节点(及其父节点)移动和旋转。如果为 false
,则粒子使用全局坐标;当移动或旋转时,它们不会沿着 CPUParticles3D 节点(及其父节点)移动或旋转。
Mesh mesh
每个粒子使用的 Mesh。如果为 null
,则粒子将为球形。
bool one_shot = false
如果为 true
,则只发生一个发射周期。如果在某个周期内设置为 true
,则发射将在该周期结束时停止。
Curve orbit_velocity_curve
每个粒子的轨道速度将沿着这条 Curve 变化。
float orbit_velocity_max
最大轨道速度。
float orbit_velocity_min
最小轨道速度。
bool particle_flag_align_y = false
void set_particle_flag ( ParticleFlags particle_flag, bool enable )
bool get_particle_flag ( ParticleFlags particle_flag ) const
将粒子的 Y 轴与其速度方向对齐。
bool particle_flag_disable_z = false
void set_particle_flag ( ParticleFlags particle_flag, bool enable )
bool get_particle_flag ( ParticleFlags particle_flag ) const
如果为 true
,则粒子将不会在 Z 轴上移动。
bool particle_flag_rotate_y = false
void set_particle_flag ( ParticleFlags particle_flag, bool enable )
bool get_particle_flag ( ParticleFlags particle_flag ) const
如果为 true
,则粒子绕 Y 轴旋转 angle_min。
float preprocess = 0.0
粒子系统启动时就好像已经运行了这么多秒一样。
Curve radial_accel_curve
每个粒子的径向加速度将沿着这条 Curve 变化。
float radial_accel_max = 0.0
最大径向加速度。
float radial_accel_min = 0.0
最小径向加速度。
float randomness = 0.0
发射寿命随机率。
Curve scale_amount_curve
每个粒子的缩放将沿着这条 Curve 变化。
float scale_amount_max = 1.0
最大缩放。
float scale_amount_min = 1.0
最小缩放。
Curve scale_curve_x
生命周期内,沿 X 轴的缩放曲线。
Curve scale_curve_y
生命周期内,沿 Y 轴的缩放曲线。
Curve scale_curve_z
生命周期内,沿 Z 轴的缩放曲线。
float speed_scale = 1.0
粒子系统的运行速度的缩放率。0
值可用于暂停粒子。
bool split_scale = false
如果设置为 true
,则可以指定三条不同的缩放曲线,每个缩放轴一条。
float spread = 45.0
每个粒子的初始方向范围为 +spread
至 -spread
度。适用于 X/Z 平面和 Y/Z 平面。
Curve tangential_accel_curve
每个粒子的切向加速度将沿着这条 Curve 变化。
float tangential_accel_max = 0.0
最大切向加速度。
float tangential_accel_min = 0.0
最小切向加速度。
方法说明
void convert_from_particles ( Node particles )
设置该节点的属性以匹配给定的 GPUParticles3D 节点,该给定节点已分配了一个 ParticleProcessMaterial。
Curve get_param_curve ( Parameter param ) const
float get_param_max ( Parameter param ) const
返回给定参数的最大值范围。
float get_param_min ( Parameter param ) const
返回给定参数的最小值范围。
bool get_particle_flag ( ParticleFlags particle_flag ) const
返回给定粒子标志的启用状态(选项见 ParticleFlags)。
void restart ( )
重新启动粒子发射器。
void set_param_curve ( Parameter param, Curve curve )
void set_param_max ( Parameter param, float value )
设置给定参数的最大值。
void set_param_min ( Parameter param, float value )
设置给定参数的最小值。
void set_particle_flag ( ParticleFlags particle_flag, bool enable )
启用或禁用给定的粒子标志(选项见 ParticleFlags)。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.