创建火焰粒子
简介
这篇教程的主要目的是为了让你对粒子的创建产生自己的想法。本文并不打算介绍有关粒子创建的方方面面的知识,如果你需要相关的教程,点击这里 。接下来你将学到如何创建一个如下所示的粒子:
属性
新建一个粒子系统,并命名。首先需要确定这个粒子的主要属性。在粒子的属性选项卡中,点击选择 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
。
总结
粒子的创建工作到此为止已经完成了,如果你一直遵照着上述步骤进行创建,将会得到一团小火焰。希望你从中学到了粒子创建相关的知识,并且能够创建其他的粒子,例如瀑布什么的了。