Unity VFX粒子系统入门笔记-2-制作简易火焰特效
原视频教程连接:Unity3d Visual Effect Graph Essentials - YouTubeVisual Effect Graph 是一个可用于为 Unity 项目创建大规模视觉效果的包。Visual Effect Graph 利用 GPU 模拟粒子行为,可模拟的粒子数量远远超过内置粒子系统。本帖子作为本人先前的VFX学习记录,将会逐渐整理出来。
<hr/>最终效果:
完整蓝图:
Initial阶段
Update阶段(一共使用了5个碰撞体)
Output(输出阶段)
<hr/>完整流程
新建一个VEG蓝图,我们不希望初始化的粒子拥有速度,关于速度的更新将会在Update阶段完成,因此删除Set Velocity Random组件,增加Set Position(Shape:Arc Sphere组件),该组件会将初始化的粒子位置分布在一个球的表面或者内部,Position Mode选择surface既是表面,选择volume既是内部。
(这个时钟图案看着太诡异了,在Output阶段更改一张Main Texture,我这里随意拿了一张白色图片用作演示)
在Update阶段增加一个新的模块Vector Field Force,即向量场,简单点来说就是一定范围空间中的每一个位置都能找到一个向量与之对应,在这里该向量即是施加到粒子上的力,当mode选择absolute时,力的方向以世界坐标轴为准,方mode选择relative时,力的方向以粒子当前自身速度方向为准,具体信息可参阅其官方文档,这里仅阐述以下Field Transform中的参数设置。
我们将Transform中的所有参数归零,发现初始化后的粒子没有受到任何影响,在原地产生,在原地消失(注意:每次修改参数后,有时需要在蓝图最上方点击compile编译按钮,新的参数才会生效)。我们将size参数下的y方向设为1,粒子便在世界坐标下沿着y轴正方向开始移动,并且y的值越大,粒子移动越快;我们再将size参数的x轴也设为1,发现粒子沿着x轴正方向和y轴正方向的夹角被发射出去,这时我们再对Intensity参数进行调整,发现粒子会沿着当前方向改变自己的速度。也就是说Size参数控制着力的方向和大小,而intensity参数则会对当前的力沿着自身方向进行缩放。
按照最上方的蓝图设置好VFF参数后,发现粒子数量太少,再Spawn和Initialize阶段对粒子生成速率和容量进行修改,先改个3000试试(VEG使用GPU进行计算,可放心增加粒子数量,几万不成问题)。
观察火苗的形状一般都有点中间细,两头粗的赶脚。在update阶段新建一个球形碰撞体,此碰撞体可以和粒子发生碰撞从而改变粒子的移动方向。
感觉碰撞效果ok,复制四个,分别置于粒子的前后左右,得到效果如下左图所示,感觉还是有点僵硬,我们希望中间往上部分再散开一点,再新建一个球星碰撞体,半径缩小一点,至于底部往上一点的位置,让粒子稍微散开一点。
我们甚至可以用一个随机数来控制中间这个小球在y轴上的位置,让粒子的碰撞点能有更多的随机性。
最后就是在输出部分控制粒子的颜色和形状,在Set Size Over Life中,调整粒子的大小变化曲线
设置颜色,大概拖个自己喜欢的颜色就行,需要发光的部分记得适当增加HDR颜色中的intensity参数。
后处理设置,如果想整体控制发光颜色或环境,则需要进行后处理设置,在场景中新建一个空物体,并添加volume组件,并设置配置文件,选择默认的即可。可以看到volume组件下又附属了多个组件选项,注意其中的Bloom组件,该组件可以让场景中的HDR颜色物体发出光晕,若关闭此组件,则不会产生发光的效果。
最终效果呈现:
.Vector Field Force文档链接:Vector Field Force | Visual Effect Graph | 10.5.1 (unity3d.com)
(此文章同步发布于CSDN和知乎)
页:
[1]