
导览、效果预览

卡通材质预览
想传GIF图的,可惜太大了,算了
零、使用的材质

材质设置
一、阴影情况的获取
一开始是在这个大佬的视频里学的卡通材质的写法 视频传送门:https://youtu.be/xf21CBx8rYs
这个大佬是使用环境光方向与顶点法线方向进行点乘获得阴影信息,而且效果很好。

获取阴影情况的蓝图与预览
不过这位大佬使用的是If节点对颜色进行一个硬边缘的阴影计算,这个方法没法进行硬软边缘的调整,所以我继续去寻找别的教程去改进我的材质。
二、硬软边缘调整实现
我无意间,刷到了这个大佬的视频:卡通材质教程
这个大佬使用的是一条Color曲线

虚幻引擎中Color曲线编辑器界面
我们可以通过对Color曲线的RGB关键点进行调整实现边缘硬软程度的变换
然后我们结合之前获得的阴影信息,给他加上一些偏移,恒定偏差标度一下,然后拉给颜色曲线使用,这样我们就得到了一个非常卡通的阴影效果啦!

计算后的阴影信息
看上图,球球白色部分的值为1,黑色的为0,所以我们可以通过Add节点给整体加上一定的数值,实现阴影Alpha的调整(不要忘了加上Saturate哦!)。然后我又想到了MMD里面,有Toon贴图这种东西,他硬软边缘可以调整,颜色也可以调整,那我们在虚幻也是可以实现的,于是,我们可以通过原阴影作为蒙版,进行一系列数学变换(有点不好解释呢),把阴影颜色给他安上去。

加上了颜色的阴影
阴影搞定咯,然后我们就可以把基础色贴图与计算好的阴影相乘,得到阴影计算后的基础色贴图啦!(下图为详细的蓝图节点以及效果预览)

预览与蓝图节点
三、高光计算
轮到高光,普通的高光计算呢,我是做成了和阴影计算相反的样子,大概长这样

普通高光计算
而特殊高光我还是按照上面那位大佬的方法进行制作:卡通材质教程
不过我使用了和他不一样的计算方法

特殊高光计算
我使用环境光方向与镜头方向相加,Normalize之后与法线点乘(你与像素法线点乘和顶点法线点乘都彳亍,差别不大)之后的运算就是调整高光的偏移以及高光的软硬程度了,然后搞上高光颜色和高光强度,Saturate一下之后给Lerp判断(Lerp的Alpha连接着阴影计算中的颜色曲线)这样我们就得到了一个看起来很二刺螈的高光效果了!

特殊高光
如果你想在材质实例中对高光的模式进行调整的话,可以使用bool变量和Switch节点去控制材质节点的走向,例如

Switch节点使用
四、头发高光
我对高光的探索之旅其实还没有结束,我去研究了一下各向异性制作头发高光,发现好复杂,晦涩难懂,我的能力确实不足,如果有大佬非常会,请教教我o(╥﹏╥)o,我呢是采用了一下两位大佬的方法去制作头发高光
(1)伪各向异性
(2)https://www.youtube.com/watch?v=r5jReu4xsAs
第二个视频不是英语,所以我是真的看不懂,如果有懂的好哥们儿好姐们儿能帮帮小弟我
然后我也用了Switch去调节头发高光模式(这里我就不放蓝图节点了,和视频中一样)
(油管大佬的方法适用范围不太广,b站大佬的高光方法可以完美适配mmd模型与贴图)
五、边缘光
终于来到了边缘光的计算了,边缘光一般是使用菲涅尔节点去制作的,原理很简单,基本不需要解释了,直接上蓝图节点

边缘光计算蓝图节点
Power的base连的是阴影计算后的结果,然后加上一些调整硬软偏移和Alpha值之类的参数,最终得到类似于这种边缘光效果

边缘光预览
六、最后的处理
所有的东西都计算完毕之后,把阴影计算后的结果、高光计算后的结果、边缘光计算后的结果加起来,就能得到我们的卡通材质啦,不过还没完,为了让我们的材质能与光照颜色产生交互,我们要给他加上这个

环境光影响
环境光颜色变化影响材质整体的颜色,这样子就非常的NICE!
这样子我们就得到了一个非常好看的卡通材质啦!

卡通材质最终效果
七、边缘线
跟着这个教程,讲的十分详细
https://www.raywenderlich.com/92-unreal-engine-4-toon-outlines-tutorial
不过,如果你跟着这个教程做出了边缘线的后期处理材质,并将其应用在后期处理体积中,你会发现,全部的东西都变成了带边缘线的,而且边缘线在不停地抖动,这是为什么呢
问题一:局部边缘线实现方法:
在教程中的他教你写的材质函数应该改成这样子

材质函数节点
即,将场景深度变成自定义深度
然后在你需要边缘线的网格体渲染层设置中打开渲染自定义深度通道

自定义深度通道
这样子,我们就只有我们想要的网格体有边缘线啦
问题二:边缘线抖动修复:
打开我们的后期处理材质,找到这个材质设置

色调映射前
这样子就会在抗锯齿之前实现postprocess,然后交给抗锯齿老兄去消掉我们抖动的狗牙
问题三:边缘线透视问题(紧急修复)

加入图示蓝图节点
相乘后得到的结果连接到Lerp的Alpha中修复边缘线透视问题
这样,我们的卡通材质和边缘线材质都全部制作完成了,享受你在虚幻5引擎中的学习乐趣吧!如果你还是有地方不懂,欢迎私信与评论讨论!