教程地址:https://www.bilibili.com/video/BV1fE411b7at
一套基础入门且案例非常完整的教程,能够比较快的走一遍制作流程
讲师:贾越(Epic Fornite Technical FX Artist),Asher(虚幻引擎技术支持TA),大钊(虚幻引擎社区经理)
这一章讲弹道制作
条带渲染器(Ribbon)
这里先说一下这个渲染器,前面几章我们使用过了Sprite渲染器制作火星,网个体渲染器制作枪火,光线渲染器制作枪火影响光,那弹道,会使用还没接触过的条带渲染器制作
这个渲染器有什么特点呢?可以理解成它是由多个点组成的线
发射器
- 新建发射器
- 在发射器更新模块添加Beam Emitter Setup
- 在粒子生成模块添加Spawn Beam
- 创建Spawn Burst Instantaneous 发射10个粒子
- 添加条带渲染器,可以看到粒子出生时排成一排
Beam的模式会根据设置从原点到终点对粒子进行排序
可以理解Beam是Ribbon的一种效果模块 - 把发射器添加到Niagara系统NS_Trace内,观察它
线的终点设置
把线的终点设置到枪目标的打击点
我们需要创建一个属性,并且可以在蓝图中get到
所以我们需要创建一个用户属性,类型为向量,创建后把它拖拽到Beam End属性上,这个属性控制的是粒子线的终点
回到第一人称资产蓝图
- 创建设置Niagara变量3
- 设置变量名为我们创建的用户属性
把它的值设置为中断命中结果的位置
最后把主线连接上
测试游戏,现在线的方向有点问题,这是因为世界空间和本地空间的问题,我们需要在发射器勾选决断位置
现在线的方向就对了,但是朝天空打是没有击中点的,所以没有线的产生,那又要怎么办?
我们可以做个判定选择
把击中的结果做判定,击中的话就中命中结果的位置,没击中的话就是Trace的末端
表达式
我们要让粒子的发射数量根据线的长度做调整,可以使用表达式
Debug
F8弹出检查
:Debug模式
Debug模式下按F键隐藏镜头后物体
扰乱
添加扰乱场
添加曲线控制扰乱强度变化
改变线的宽度
要改变线的宽度,需要创建Initialize Ribbon
材质
- 需要用到两个贴图资源,教程有提供,拷贝到工程
火材质
- 新建一个材质,重命名M_Ribbon,导入贴图
- 贴图更改混合模式为:半透明,着色模型为:无光照
-创建CurveAtlasRowParameter节点,把我们之前创建的Curve调入进来
发射器拾取材质
有了基础材质,继续往下刻画,看下有什么问题
现在只有火没有烟,烟的话我们要怎么制作
烟材质
我可以可以同样使用颜色曲线,对它进行颜色修改,来试试
复制颜色曲线节点,重命名
调整曲线颜色
记得在曲线图谱CurverAtlas添加新复制的曲线
在材质面板复制一个曲线属性,选择烟的灰色曲线,连接,查看效果
烟的材质就好了,可以运行测试下
烟火材质融合
目前烟和火是分开的,我们应该如何合在一起
可以使用Add叠加颜色,Alpha可以直接使用烟的
要控制火和烟的量可以在曲线输入端增加变量,像下面这样,我对火的输入值乘了一个0值,理论上火因为没有了
但结果并没有改变,这点教程上没讲,也没出现这问题,排查半天
后来发现是两个曲线变量名相同冲突了,重命名变量名称就好了
这时你会发现颜色发红,但是我们火的输入为0,应该只有烟才对
这是因为火的颜色曲线0值的时候并不是黑色的,所以即使输入为0,仍然输出了红色
为了解决这个问题,我们可以把火的颜色和Alpha相乘,Alpha为0的地方颜色就为0了
结果也就是烟的形态了
接下来,我们可以用属性来控制火的消失
添加颜色属性,我们用颜色控制火的倍增(此处有别教程,教程方法更适合入门理解),替换之前的浮点数
回到发射器修改面板,粒子更新-新增ScaleColor,给颜色添加曲线,调整曲线,让火随时间消失
测试没问题,我们来调整烟,通过Alpha通道来控制烟,方法一样,把Alpha连给烟做倍增
,回到发射器属性给Alpha曲线并调整
细节调整
调整UV
现在UV是平铺模式,会照成打远处UV拉伸过长,打近处扭曲过大,
为了解决这个问题,我们可以调整UV重复度
为了方便查看UV效果,我们可以把UV连到材质上观察
在发射器属性上有个UV平铺距离,会根据距离长度平铺UV,但需要我们对UV求余
求余方法是在材质上添加Frac节点
调整完UV后,把材质连回来,根据效果可以继续调整UV平铺距离
贴图融合
纹理有些地方太窄了,所以补了一套贴图,使用Lerp融合
切边处理
枪口处有很硬的一块切边,我们该怎么处理
这块内容不是很清楚,不明白为何对UV做除法运行再归一化得到结果和Alpha相乘会得到淡化的效果
补充:若干天后,复盘终于把这个方法理解了
其实本质是这样的,我们先不看Divide除法和Saturate归一,也不和之前的Alpha相乘
我们断掉材质的颜色和不透明度,直接把UV连接到不透明度上,思考下回得到什么结果
结果是0-1的透明渐变
现在是整段范围0-1,我们想让它在靠近枪口的那段0-1
我们可以对它乘以一个值,比如要让0.1的位置为1就乘以10
超过0.1的位置UV会大于1,所以我们把值限定在1
那为什么用除法呢,乘以10跟除以0.1结果是一样的,用除法调整值会更加直观,直接把值跟距离做关联了
烟火渐变
现在枪是一帧就击中,会有一种激光的错觉,通常的做法是给弹道做烟火的渐变,前端只有火,
这样会给人子弹打出去的错觉
这个依旧使用UV,但不能用我们之前那套UV,那套UV是处理过的不是0-1,所以比较麻烦
这里我们可以新建一套新的UV,目标索引填1
新建ComponentMask
连接到火的曲线输入端
这样弹道就只有前端有火焰,视觉像是打出去的
Ribbon连线异常
最后,是解决连续开火时,Ribbon连线异常的问题
这个问题到最后教程都提及,这是版本的问题,我用教程使用的UE4.23版本制作也是不会有这个问题的,在重新开火的时候,粒子会被杀死,重新发射,也就没有这个问题,
在新版本4.25下即时蓝图开火激活勾选了Reset,也不会杀死旧粒子,当然,如果要杀死肯定也是可以的,但我觉得不死亡是更好的,特别是弹道突然消失很奇怪,那一定也有办法让连线正常起来。
为了这个问题,费了好几天了,当然也学到了不少内容
这个部分我单独分了一篇,让有这个需求的人能更好的搜索到
文章地址:
UE4 解决Ribbon连线异常
接下来将进入击中点弹坑的制作学习咯。
如有问题请再联系我
乾杯
志伟