Particles

Inherits: GeometryInstance < VisualInstance < CullInstance < Spatial < Node < Object

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

描述

用于创建各种粒子系统和效果的 3D 粒子节点。Particles 实现了是发射器以给定的速率产生一定数量的粒子。

使用 process_material 属性添加 ParticlesMaterial 来配置粒子外观和行为。或者,您可以添加一个将应用于所有粒子的 ShaderMaterial

注意:Particles 仅在使用 GLES3 渲染器时有效。如果使用 GLES2 渲染器,请改用CPUParticles。您可以通过选择节点,单击 3D 编辑器视窗顶部的粒子菜单,然后选择转换为 CPUParticles,将 Particles 转换为 CPUParticles

注意:在处理粒子节点后,记得通过选择它来更新其visibility_aabb,单击 3D 编辑器视窗顶部的粒子菜单,然后选择生成可见 AABB。否则,粒子可能会由于相机位置和角度的改变突然消失。

教程

属性

int

amount

8

DrawOrder

draw_order

0

Mesh

draw_pass_1

Mesh

draw_pass_2

Mesh

draw_pass_3

Mesh

draw_pass_4

int

draw_passes

1

bool

emitting

true

float

explosiveness

0.0

int

fixed_fps

0

bool

fract_delta

true

float

lifetime

1.0

bool

local_coords

true

bool

one_shot

false

float

preprocess

0.0

Material

process_material

float

randomness

0.0

float

speed_scale

1.0

AABB

visibility_aabb

AABB( -4, -4, -4, 8, 8, 8 )

方法

AABB

capture_aabb ( ) const

Mesh

get_draw_pass_mesh ( int pass ) const

void

restart ( )

void

set_draw_pass_mesh ( int pass, Mesh mesh )

枚举

enum DrawOrder:

  • DRAW_ORDER_INDEX = 0 —- 粒子按发射顺序绘制。

  • DRAW_ORDER_LIFETIME = 1 —- 按照剩余寿命的顺序绘制粒子。

  • DRAW_ORDER_VIEW_DEPTH = 2 —- 粒子按深度顺序绘制。

常量

  • MAX_DRAW_PASSES = 4 —- 支持的最大抽取次数。

属性说明

Default

8

Setter

set_amount(value)

Getter

get_amount()

在一个发射周期内排放的粒子数(对应于lifetime)。

注意:改变amount将重置粒子发射,因此,在改变amount之前已经排放的所有粒子将被移除。


Default

0

Setter

set_draw_order(value)

Getter

get_draw_order()

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


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

第一次抽取的Mesh


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

Mesh在第二次抽取时被抽出的。


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

Mesh这是为第三次抽取所抽出的。


Setter

set_draw_pass_mesh(value)

Getter

get_draw_pass_mesh()

Mesh这是为第四次抽取所抽出的。


  • int draw_passes

Default

1

Setter

set_draw_passes(value)

Getter

get_draw_passes()

渲染粒子时的绘制次数。


Default

true

Setter

set_emitting(value)

Getter

is_emitting()

如果true,则正在发射粒子。


Default

0.0

Setter

set_explosiveness_ratio(value)

Getter

get_explosiveness_ratio()

每次发射之间的时间比。如果0,粒子是连续发射的。如果1,所有的粒子都同时发射。


Default

0

Setter

set_fixed_fps(value)

Getter

get_fixed_fps()

粒子系统的帧速率固定为一个值。例如,将值更改为2将使粒子以每秒2帧的速度渲染。注意,这不会减慢粒子系统本身的仿真速度。


Default

true

Setter

set_fractional_delta(value)

Getter

get_fractional_delta()

如果true,将导致分数增量计算,该显示具有更平滑的粒子显示效果。


Default

1.0

Setter

set_lifetime(value)

Getter

get_lifetime()

每个粒子存在的时间,以秒为单位。


Default

true

Setter

set_use_local_coordinates(value)

Getter

get_use_local_coordinates()

如果true,则粒子将使用父节点的坐标空间。如果false,则使用全局坐标。


Default

false

Setter

set_one_shot(value)

Getter

get_one_shot()

如果true,将只发出amount粒子。


Default

0.0

Setter

set_pre_process_time(value)

Getter

get_pre_process_time()

动画开始前对粒子进行预处理的时间。让你在粒子开始发射后的一段时间内开始动画。


Setter

set_process_material(value)

Getter

get_process_material()

用于处理粒子的 Material 。可以是一个 ParticlesMaterial 或一个 ShaderMaterial


Default

0.0

Setter

set_randomness_ratio(value)

Getter

get_randomness_ratio()

发出随机率。


Default

1.0

Setter

set_speed_scale(value)

Getter

get_speed_scale()

速度缩放比。一个0的值可以用来暂停粒子。


  • AABB visibility_aabb

Default

AABB( -4, -4, -4, 8, 8, 8 )

Setter

set_visibility_aabb(value)

Getter

get_visibility_aabb()

AABB 确定节点的区域,该区域需要在屏幕上可见才能使粒子系统处于活动状态。

如果在节点进入/退出屏幕时粒子突然出现/消失,则增大框。 AABB 可以通过代码或使用 Particles → Generate AABB 编辑器工具生成。

注意: 如果使用中的 ParticlesMaterial 配置为投射阴影,您可能需要放大此 AABB 以确保在粒子离屏时更新阴影。

方法说明

  • AABB capture_aabb ( ) const

返回包含当前帧中所有活动粒子的轴对齐包围盒。


  • Mesh get_draw_pass_mesh ( int pass ) const

返回在索引 pass 处绘制的 Mesh


  • void restart ( )

重新发射粒子,清除现有的粒子。


  • void set_draw_pass_mesh ( int pass, Mesh mesh )

设置在索引 pass 处绘制的 Mesh