核心思想就是通过多个不同缩放尺寸的沃罗诺伊叠加,分别构成火焰的大型,中型和小型(形状),最后通过自发光纹理实现火焰加亮。
用的是ev渲染,完全可以把噪音贴图都烘焙出来,自己改改shader就可以扔到其他实时渲染引擎里用了。
制作火焰形状
外面尺寸最大的火焰形状,通过沃罗诺伊和渐变纹理的混合来做,使得火焰的下部比上部更亮,形状更多。
增加一个常值模式的颜色渐变,使得火焰形状的轮廓更清晰(卡通二分必须,注意混合模式为混合)
这里可以通过纹理坐标给渐变纹理挂一个映射,从而控制火焰的位置。
我们在前面套上纹理坐标和映射,便于后续调整。
然后添加两个不同缩放(x16,x32)的沃罗诺伊纹理。这里注意颜色混合的接入方式,要增加细节的底图部分扔进颜色混合节点的a接口。
可以看到现在已经有了比较清晰的火焰形状。然后我们需要进行透明度渲染,黑色部分需要去除。
我们直接加一个透明shader,再加一个混合shader,会发现筛选出来的部分刚好相反。
加一个颜色渐变节点,进行系数的取反即可。
再给多尺寸沃罗诺伊合并的结果加一个颜色渐变,给火焰添加两种渐变颜色,赋予自发光shader。
火焰的效果就出来了。
如果是上述效果就说明第一个混合颜色节点的混合模式不是混合,请调整。
制作动态扭曲
另外火焰效果还有个特点,越是火焰位置高的地方,扭曲就越厉害。这里通过后处理 棋盘格纹理+噪波偏移,叠加到uv上,来形成偏移uv采样,实现纹理扭曲。
赋予一个纹理坐标,分离xyz,只取x值。
y值部分,添加一个噪音纹理进行相加合并。
噪波纹理与渐变纹理混合,使得下部扭曲少,上部扭曲大。
前半部分计算矢量节点,替换至火焰材质中即可。
映射变换进行关键帧动画后的效果