创建火焰粒子

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)Русский (ru)中文 (zh)Translate (Translate)

简介

这篇教程的主要目的是为了让你对粒子的创建产生自己的想法。本文并不打算介绍有关粒子创建的方方面面的知识,如果你需要相关的教程,点击这里(en)。接下来你将学到如何创建一个如下所示的粒子:

Fire particle.jpg

属性

新建一个粒子系统,并命名。首先需要确定这个粒子的主要属性。在粒子的属性选项卡中,点击选择 System Properties 项。

将最大粒子数量属性 max_particles 设置为 40。点击材质 material 这一行,点击 ... 按钮来选择合适的火焰材质。 例如这里我们选择的是 particle\fire_particle_4\fire_particle_4.vmt

将包围盒最小点属性 bounding_box_min 设置为 -512 -512 -512,包围盒最大点属性 bounding_box_max 设置为 512 512 512。 将颜色属性 color 设置为橙色。现在;粒子系统整体属性的设置就完成了。在粒子属性选项卡中选择 Renderer 项,右键,点击 add... 按钮新增。

渲染器(Renderer)

任何粒子都需要渲染器来渲染到屏幕上显示。我们来添加一个渲染器 render_animated_sprites 动态精灵渲染器。点击该渲染器,修改它的动画播放速度属性 animation_rate0.9,设置动画是否匹配粒子寿命属性 animation_fit_lifetime1,这样一来渲染器就设置好了。下一步点击 operator 项。

操作器(Operators)

使用操作器我们可以控制粒子的运动类型、alpha淡入/淡出、寿命等等。操作器的作用是控制粒子初始化之后的行为,而不是设置粒子的初始状态。

operator 项中,右键添加一个操作器 Movement Basic 基础运动操作器。在 Movement Basic 中,我们要做的事情只有一件:在重力属性 gravity 这一栏,将其设置为 0 0 50。重力决定了火焰的发射方向,参数 0 0 50 能让火焰像现实中一样向上生长,如果设置为 0 0 -50,则会让它朝下发射。

接下来,添加一个操作器 Oscillate Vector 震荡操作器。它的作用是创造火焰摇曳的效果,这样的火焰更为逼真,看起来不会像固定的贴图。它的实现函数类似下图:

Sin wave.jpg

在操作器 Oscillate Vector 中,设置最小震荡速率属性 oscillation rate min-0.4 -0.4 0,设置最大震荡速率属性 oscillation rate max0.4 0.4 0。最小震荡频率属性 oscillation frequency min0.5 0.5 1,最大震荡频率属性 oscillation frequency max1 1 1

现在这个操作器就设置完成了。

接下来添加一个操作器 Lifespane Decay 寿命控制操作器。它的作用是在某个粒子的寿命结束时删除该粒子,为了让之后会讲到的 alpha 淡入/淡出生效,我们也必须添加这个操作器。无需修改它的属性,只需要添加到粒子系统中它就能实现它的功能。

接下来添加淡入/淡出操作器。添加操作器 Alpha Fade In Random 随机淡入操作器,修改它的最小淡入时间属性 fade in time min0.3,最大淡入时间属性 fade in time max0.4。然后添加 Alpha Fade Out Random 随机淡出操作器,修改其最小淡出时间属性 fade out time min0.35,最大淡出时间属性 fade out time max0.5

目前为止所有的操作器都添加并设置完毕了。

初始化器(Initializers)

现在还需要添加初始化器。它们的作用是设置粒子的初始状态。

Add a Radius Random, set the radius_min to 3, and the radius_max to 10. This emits the particle within this radius, if you wanted a much larger fire, then for instance you would set the max to 50. 添加初始化器 Radius Random 随机半径初始化器,设置最小半径属性 radius_min3,最大半径属性 radius_max10。粒子的半径将会限制在这个范围。如果你需要更大的火焰,可以调整半径值,例如将最大值设为 50

接下来添加初始化器 Alpha Random 随机Alpha值初始化器。将最小Alpha属性 alpha_min 设为 120,最大Alpha属性 alpha_max 设为 200。

然后是初始化器 Rotation Random 随机旋转初始化器。无需进行额外设置。

然后添加初始化器 Position Within Sphere Random 球形区域内位置初始化器。将位置偏移量属性 distance_bias 设置为 1 1 0,最大速度属性 speed_max 设置为 10。将局部坐标表示的最小速度属性 speed_in_local_coordinate_system_min 和局部坐标表示的最大速度属性 speed_in_local_coordinate_system_max 均设置为 0 0 5。它的作用是让粒子以一个固定速度在球形区域内生成。

添加初始化器 Lifetime Random 随机寿命初始化器,将最大寿命属性 lifetime_max 设置为 1.25,最小寿命属性 lifetime_min 设置为 1。作用是让每个火焰粒子的寿命在 1~1.25 秒不等。

添加初始化器 Sequence Random 序列随机初始化器,将最大、最小序列帧属性 sequence_max/min 均设为 2

然后添加初始化器 Position Modify Offset Random,设置 offset in local space 0/1 属性为 1

初始化也全部完成了。

发射器(Emitters)

最后我们要添加为粒子带来生命的功能组件,也就是发射器。

添加发射器 Emit Continuousely 持续发射器,就能在预览窗口看到火焰粒子了。将发射速率 emission_rate 属性设置为 50

总结

粒子的创建工作到此为止已经完成了,如果你一直遵照着上述步骤进行创建,将会得到一团小火焰。希望你从中学到了粒子创建相关的知识,并且能够创建其他的粒子,例如瀑布什么的了。