创建火焰粒子
简介
这篇教程的主要目的是为了让你对粒子的创建产生自己的想法。本文并不打算介绍有关粒子创建的方方面面的知识,如果你需要相关的教程,点击这里。接下来你将学到如何创建一个如下所示的粒子:
属性
新建一个粒子系统,并命名。首先需要确定这个粒子的主要属性。在粒子的属性选项卡中,点击选择 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_rate 为 0.9,设置动画是否匹配粒子寿命属性 animation_fit_lifetime 为 1,这样一来渲染器就设置好了。下一步点击 operator 项。
操作器(Operators)
使用操作器我们可以控制粒子的运动类型、alpha淡入/淡出、寿命等等。操作器的作用是控制粒子初始化之后的行为,而不是设置粒子的初始状态。
在 operator 项中,右键添加一个操作器 Movement Basic 基础运动操作器。在 Movement Basic 中,我们要做的事情只有一件:在重力属性 gravity 这一栏,将其设置为 0 0 50。重力决定了火焰的发射方向,参数 0 0 50 能让火焰像现实中一样向上生长,如果设置为 0 0 -50,则会让它朝下发射。
接下来,添加一个操作器 Oscillate Vector 震荡操作器。它的作用是创造火焰摇曳的效果,这样的火焰更为逼真,看起来不会像固定的贴图。它的实现函数类似下图:
在操作器 Oscillate Vector 中,设置最小震荡速率属性 oscillation rate min 为 -0.4 -0.4 0,设置最大震荡速率属性 oscillation rate max 为 0.4 0.4 0。最小震荡频率属性 oscillation frequency min 为 0.5 0.5 1,最大震荡频率属性 oscillation frequency max 为 1 1 1。
现在这个操作器就设置完成了。
接下来添加一个操作器 Lifespane Decay 寿命控制操作器。它的作用是在某个粒子的寿命结束时删除该粒子,为了让之后会讲到的 alpha 淡入/淡出生效,我们也必须添加这个操作器。无需修改它的属性,只需要添加到粒子系统中它就能实现它的功能。
接下来添加淡入/淡出操作器。添加操作器 Alpha Fade In Random 随机淡入操作器,修改它的最小淡入时间属性 fade in time min 为 0.3,最大淡入时间属性 fade in time max 为 0.4。然后添加 Alpha Fade Out Random 随机淡出操作器,修改其最小淡出时间属性 fade out time min 为 0.35,最大淡出时间属性 fade out time max 为 0.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_min 为 3,最大半径属性 radius_max 为 10。粒子的半径将会限制在这个范围。如果你需要更大的火焰,可以调整半径值,例如将最大值设为 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。
总结
粒子的创建工作到此为止已经完成了,如果你一直遵照着上述步骤进行创建,将会得到一团小火焰。希望你从中学到了粒子创建相关的知识,并且能够创建其他的粒子,例如瀑布什么的了。
