ShaderForge-DOTA2变体精灵
本系列开始进行ShaderForge实战案例分析,案例的参考来源自朧老师的ShaderForge教程。
附带教程链接地址:http://www.aboutcg.org/?s=shaderForge&post_type=course。
文末我会提供相关使用的素材。
效果预览
思路分析
首先模型具有贴图流动的效果,主要用UV流动的内容。还有模型顶点的偏移效果,头部的高光效果,模型身上还有菲尼尔反射效果,越到边缘效果越强。模型从上到下的透明渐变效果。
开始制作
创建默认的自定义光照模式Shader,并且删除默认的节点。
我们首先来实现贴图流动的效果。
更改预览区域的默认模型,并且旋转预览区域的物体(刚开始可能是背面,看不到东西),连接节点进行预览。
具体的步骤和之前的类似,解释一下关键地方。
我们用时间节点和一个变量进行速度控制,然后跟UV节点进行加法,去影响噪点图的流动效果。
由于噪点图一般是一个黑白渐变的贴图,我们使用它的一个通道就好了,然后构造出一个二维数据,配合另一个变量进行流动强度的控制。最后将原本的UV节点和流动贴图的流动变化相加即可。
我们优化 一下节点树,相同数据构造二维数据,如果后续 有和高维数据的运算处理,可以自动进行处理,不需要多一个Append节点,我们将多余的Append节点删掉。
现在可以在场景中先预览一下效果,我们发现角色的面部和角色的切缝处的流动效果太强了,我们需要对这些地方进行单独控制,为此我们可以采用一张遮罩图处理,将面部和接缝处都刷成黑色。
我们添加新的一个Tex2D节点,并将某个通道( 都是0或者1)的值与流动贴图进行相乘。
效果好了很多,如果我们需要控制面部的流动效果,可以将原本的黑色刷一点透明上去。
接下来我们处理头部波形效果
类似之前的原理,我们使用UV信息和一个变量WaveLength控制波长,用时间节点和另一个变量Frequency控制频率,二者相加作为Sin的输入,最后通过一个变量Amplitude来控制振幅。中间我们添加一个0.9是为了将波动的范围从 从-1到1提升上去,避免模型塌陷下去。但是现在模型的扭曲效果有点大,为了控制各个部位的效果我们还是采用和上边类似的办法。直接将上边的遮罩与下边的乘法连接。
如何沿着模型表面进行移动呢?最直接的可以想到法线信息,直接将法线信息进行乘法运算,并且调整参数设置。
接下来做透明效果,透明效果是从下到上的渐变,我们可以利用模型本身的Y轴信息输入到透明通道中。
并且开启混合模式。此处我们需要使用相对信息,避免模型移动发生变化。
但是现在的效果,我们出现了透明问题的前后遮挡这一困扰。
我们回到设置中,取消勾选自动排序,开始深度写入。关于透明问题和深度写入,请看Shader入门精要冯乐乐的书籍介绍。
这部分的效果预览我们最好直接到场景中去测试。
接下来我们做菲尼尔反射效果,反射效果都是把反射贴图添加到漫反射效果上边。
首先我们需要一个反射环境,就是一个Cubemap,我们创建一个CubeMap节点,通过一个变量来控制反射效果的强度。
接下来我们制作菲尼尔反射效果,越到边缘反射效果越弱。我们乘以一个菲尼尔节点即可。
实现高光效果,正常来说我们使用高光反射实现,但是现在我们自定义模式,采用法线转换UV实现。
法线转换UV就是把法线信息当做UV信息进行使用。
我们首先将法线信息从世界空间转换到视角空间,然后使用分量遮罩分离RG通道信息,通过小的计算使用对正贴图,然后作为高光贴图的UV信息。高光贴图是一张类似泡泡,含有高光点的贴图。然后将效果添加到主贴图上边。
现在我们的效果就做好了。
最终的效果
上完整的节点连接图。如果看不清楚可以另存为到本地,进行查看。
相关素材
链接: https://pan.baidu.com/s/1eR21uCi 密码: gikm