Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

ParticleProcessMaterial

继承: Material < Resource < RefCounted < Object

保存用于 GPUParticles2DGPUParticles3D 节点的粒子配置。

描述

ParticleProcessMaterial 定义了粒子的属性和行为。GPUParticles3DGPUParticles2D 节点的 process_material 会使用这种材质。这种材质的有些属性是在粒子发射时应用的,有些则会应用 CurveTextureGradientTexture1D 让数值或颜色值在粒子的生命周期中不断变化。

属性

Texture2D

alpha_curve

Texture2D

angle_curve

float

angle_max

0.0

float

angle_min

0.0

Texture2D

angular_velocity_curve

float

angular_velocity_max

0.0

float

angular_velocity_min

0.0

Texture2D

anim_offset_curve

float

anim_offset_max

0.0

float

anim_offset_min

0.0

Texture2D

anim_speed_curve

float

anim_speed_max

0.0

float

anim_speed_min

0.0

bool

attractor_interaction_enabled

true

float

collision_bounce

float

collision_friction

CollisionMode

collision_mode

0

bool

collision_use_scale

false

Color

color

Color(1, 1, 1, 1)

Texture2D

color_initial_ramp

Texture2D

color_ramp

Texture2D

damping_curve

float

damping_max

0.0

float

damping_min

0.0

Vector3

direction

Vector3(1, 0, 0)

Texture2D

directional_velocity_curve

float

directional_velocity_max

float

directional_velocity_min

Vector3

emission_box_extents

Texture2D

emission_color_texture

Texture2D

emission_curve

Texture2D

emission_normal_texture

int

emission_point_count

Texture2D

emission_point_texture

Vector3

emission_ring_axis

float

emission_ring_height

float

emission_ring_inner_radius

float

emission_ring_radius

EmissionShape

emission_shape

0

Vector3

emission_shape_offset

Vector3(0, 0, 0)

Vector3

emission_shape_scale

Vector3(1, 1, 1)

float

emission_sphere_radius

float

flatness

0.0

Vector3

gravity

Vector3(0, -9.8, 0)

Texture2D

hue_variation_curve

float

hue_variation_max

0.0

float

hue_variation_min

0.0

float

inherit_velocity_ratio

0.0

float

initial_velocity_max

0.0

float

initial_velocity_min

0.0

float

lifetime_randomness

0.0

Texture2D

linear_accel_curve

float

linear_accel_max

0.0

float

linear_accel_min

0.0

Texture2D

orbit_velocity_curve

float

orbit_velocity_max

0.0

float

orbit_velocity_min

0.0

bool

particle_flag_align_y

false

bool

particle_flag_damping_as_friction

false

bool

particle_flag_disable_z

false

bool

particle_flag_rotate_y

false

Texture2D

radial_accel_curve

float

radial_accel_max

0.0

float

radial_accel_min

0.0

Texture2D

radial_velocity_curve

float

radial_velocity_max

0.0

float

radial_velocity_min

0.0

Texture2D

scale_curve

float

scale_max

1.0

float

scale_min

1.0

Texture2D

scale_over_velocity_curve

float

scale_over_velocity_max

0.0

float

scale_over_velocity_min

0.0

float

spread

45.0

int

sub_emitter_amount_at_collision

int

sub_emitter_amount_at_end

float

sub_emitter_frequency

bool

sub_emitter_keep_velocity

false

SubEmitterMode

sub_emitter_mode

0

Texture2D

tangential_accel_curve

float

tangential_accel_max

0.0

float

tangential_accel_min

0.0

bool

turbulence_enabled

false

float

turbulence_influence_max

0.1

float

turbulence_influence_min

0.1

Texture2D

turbulence_influence_over_life

float

turbulence_initial_displacement_max

0.0

float

turbulence_initial_displacement_min

0.0

float

turbulence_noise_scale

9.0

Vector3

turbulence_noise_speed

Vector3(0, 0, 0)

float

turbulence_noise_speed_random

0.2

float

turbulence_noise_strength

1.0

Texture2D

velocity_limit_curve

Vector3

velocity_pivot

Vector3(0, 0, 0)

方法

float

get_param_max ( Parameter param ) const

float

get_param_min ( Parameter param ) const

Texture2D

get_param_texture ( Parameter param ) const

bool

get_particle_flag ( ParticleFlags particle_flag ) const

void

set_param_max ( Parameter param, float value )

void

set_param_min ( Parameter param, float value )

void

set_param_texture ( Parameter param, Texture2D texture )

void

set_particle_flag ( ParticleFlags particle_flag, bool enable )


枚举

enum Parameter:

Parameter PARAM_INITIAL_LINEAR_VELOCITY = 0

set_param_minset_param_maxset_param_texture 一起使用,设置初始速度属性。

Parameter PARAM_ANGULAR_VELOCITY = 1

set_param_minset_param_maxset_param_texture 一起使用,设置角速度属性。

Parameter PARAM_ORBIT_VELOCITY = 2

set_param_minset_param_maxset_param_texture 一起使用,设置轨道速度属性。

Parameter PARAM_LINEAR_ACCEL = 3

set_param_minset_param_maxset_param_texture 一起使用,设置线速度属性。

Parameter PARAM_RADIAL_ACCEL = 4

set_param_minset_param_maxset_param_texture 一起使用,设置径向加速度属性。

Parameter PARAM_TANGENTIAL_ACCEL = 5

set_param_minset_param_maxset_param_texture 一起使用,设置切向加速度属性。

Parameter PARAM_DAMPING = 6

set_param_minset_param_maxset_param_texture 一起使用,设置阻尼属性。

Parameter PARAM_ANGLE = 7

set_param_minset_param_maxset_param_texture 一起使用,设置角度属性。

Parameter PARAM_SCALE = 8

set_param_minset_param_maxset_param_texture 一起使用,设置缩放属性。

Parameter PARAM_HUE_VARIATION = 9

set_param_minset_param_maxset_param_texture 一起使用,设置色相变化属性。

Parameter PARAM_ANIM_SPEED = 10

set_param_minset_param_maxset_param_texture 一起使用,设置动画速度属性。

Parameter PARAM_ANIM_OFFSET = 11

set_param_minset_param_maxset_param_texture 一起使用,设置动画偏移属性。

Parameter PARAM_RADIAL_VELOCITY = 15

set_param_minset_param_maxset_param_texture 一起使用来设置径向速度属性。

Parameter PARAM_DIRECTIONAL_VELOCITY = 16

set_param_minset_param_maxset_param_texture 一起使用来设置定向速度属性。

Parameter PARAM_SCALE_OVER_VELOCITY = 17

set_param_minset_param_maxset_param_texture 一起使用来设置速度属性的缩放。

Parameter PARAM_MAX = 18

代表 Parameter 枚举的大小。

Parameter PARAM_TURB_VEL_INFLUENCE = 13

set_param_minset_param_max 一起使用,以设置湍流对每个粒子速度的最小和最大影响。

Parameter PARAM_TURB_INIT_DISPLACEMENT = 14

set_param_minset_param_max 一起使用,以设置粒子出生位置的湍流最小和最大位移。

Parameter PARAM_TURB_INFLUENCE_OVER_LIFE = 12

set_param_texture 一起使用,以设置湍流对粒子寿命的影响。


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_DAMPING_AS_FRICTION = 3

ParticleFlags PARTICLE_FLAG_MAX = 4

代表 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_point_texture 上随机采样点所决定的位置发射。粒子颜色将由 emission_color_texture 调节。

EmissionShape EMISSION_SHAPE_DIRECTED_POINTS = 5

粒子将在 emission_point_texture 上随机采样点所决定的位置发射。粒子速度和旋转将基于 emission_normal_texture 进行设置。粒子颜色将由 emission_color_texture 调节。

EmissionShape EMISSION_SHAPE_RING = 6

粒子将以环形或圆柱的形式发射出来。

EmissionShape EMISSION_SHAPE_MAX = 7

代表 EmissionShape 枚举的大小。


enum SubEmitterMode:

SubEmitterMode SUB_EMITTER_DISABLED = 0

SubEmitterMode SUB_EMITTER_CONSTANT = 1

SubEmitterMode SUB_EMITTER_AT_END = 2

SubEmitterMode SUB_EMITTER_AT_COLLISION = 3

SubEmitterMode SUB_EMITTER_MAX = 4

代表 SubEmitterMode 枚举的大小。


enum CollisionMode:

CollisionMode COLLISION_DISABLED = 0

粒子没有碰撞。粒子会穿过 GPUParticlesCollision3D 节点。

CollisionMode COLLISION_RIGID = 1

为使用 GPUParticlesCollision3D 节点的粒子设置 RigidBody3D 风格的碰撞。

CollisionMode COLLISION_HIDE_ON_CONTACT = 2

GPUParticlesCollision3D 节点碰撞时立即隐藏粒子。可以和使用 COLLISION_RIGID 碰撞模式的子发射器组合,在撞击时将父粒子“替换”为子发射器。

CollisionMode COLLISION_MAX = 3

代表 CollisionMode 枚举的大小。


属性说明

Texture2D alpha_curve

每个粒子颜色的 alpha 值将在其生命周期内乘以该 CurveTexture


Texture2D angle_curve

每个粒子的旋转将沿着这个 CurveTexture 动画。


float angle_max = 0.0

应用于每个粒子的最大初始旋转,以度为单位。

仅在 particle_flag_disable_zparticle_flag_rotate_ytrue,或 BaseMaterial3D 使用 BaseMaterial3D.BILLBOARD_PARTICLES 绘制粒子时应用。


float angle_min = 0.0

angle_max 的对应最小值。


Texture2D angular_velocity_curve

在每个粒子生命周期内,其角速度(旋转速度)将沿着此 CurveTexture 变化。


float angular_velocity_max = 0.0

应用于每个粒子的最大初始角速度(旋转速度),以每秒为单位。

仅在 particle_flag_disable_zparticle_flag_rotate_ytrue,或 BaseMaterial3D 使用 BaseMaterial3D.BILLBOARD_PARTICLES 绘制粒子时应用。


float angular_velocity_min = 0.0

angular_velocity_max 的对应最小值。


Texture2D anim_offset_curve

每个粒子的动画偏移将沿着这个 CurveTexture 变化。


float anim_offset_max = 0.0

与纹理中的帧索引相对应的最大动画偏移量。0 是第一帧,1 是最后一帧。参见 CanvasItemMaterial.particles_animation


float anim_offset_min = 0.0

anim_offset_max 的对应最小值。


Texture2D anim_speed_curve

每个粒子的动画速度将沿着这个 CurveTexture 变化。


float anim_speed_max = 0.0

最大粒子动画速度。1 的动画速度是指粒子在生命周期内会做完整的 01 的偏移循环,2 则表示 2 个循环,如此等等。

当动画速度大于 1 时,如果希望动画重复,请记住启用 CanvasItemMaterial.particles_anim_loop 属性。


float anim_speed_min = 0.0

anim_speed_max 的对应最小值。


bool attractor_interaction_enabled = true

  • void set_attractor_interaction_enabled ( bool value )

  • bool is_attractor_interaction_enabled ( )

如果为 true,则启用与粒子吸引器的交互。在 3D 中,吸引力仅发生在 GPUParticles3D 节点的 GPUParticles3D.visibility_aabb 定义的区域内。


float collision_bounce

  • void set_collision_bounce ( float value )

  • float get_collision_bounce ( )

粒子的弹性。值范围从 0(无弹跳)到 1(完全弹跳)。仅当 collision_modeCOLLISION_RIGID 时有效。


float collision_friction

  • void set_collision_friction ( float value )

  • float get_collision_friction ( )

粒子的摩擦。值范围从 0(无摩擦)到 1(最大摩擦)。


CollisionMode collision_mode = 0

粒子的碰撞模式。

注意:3D 粒子只能与 GPUParticlesCollision3D 节点碰撞,无法与 PhysicsBody3D 节点碰撞。要使粒子与不同的物体碰撞,可以将 GPUParticlesCollision3D 节点添加为 PhysicsBody3D 节点的子节点。在 3D 中,碰撞仅发生在 GPUParticles3D 节点的 GPUParticles3D.visibility_aabb 定义的区域内。

注意:2D 粒子只能与 LightOccluder2D 节点碰撞,无法与 PhysicsBody2D 节点碰撞。


bool collision_use_scale = false

  • void set_collision_use_scale ( bool value )

  • bool is_collision_using_scale ( )

如果为 trueGPUParticles3D.collision_base_size 乘以粒子的有效缩放(请参阅 scale_minscale_maxscale_curve、和 scale_over_velocity_curve)。


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

  • void set_color ( Color value )

  • Color get_color ( )

每个粒子的初始颜色。如果定义了 GPUParticles2Dtexture,它将乘以该颜色。

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


Texture2D color_initial_ramp

每个粒子的初始颜色将沿着该 GradientTexture1D(乘以 color)而变化。

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


Texture2D color_ramp

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

注意: