薛山
在很多灾难电影里,龙卷风都是常客,而电影拍摄的龙卷风绝大多数都是视觉特效团队精心制作而来,虽然我们不一定能达到那么高的真实性,但利用Blender的材质着色器,也还是可以实现以假乱真的龙卷风特效,而且并不需要借助物理系统就能搞定,是不是很神奇?接下来就跟着我一步步操作吧!
因为这次我们使用的是材质着色器来制作,所以基本上属于零建模教学,因此只需要一个默认的立方体就能搞定。接下来我们需要进入着色器编辑器,删掉材质默认的原理化BSDF,用原理化体积来连接材质输出的“体积”,然后再把场景中的灯光调整为“日光”并适当设置强度,就能得到如图1的基本效果了。
“体积”从视觉上来看其实就是雾化效果,我们需要做的就是调整这个雾的形状,大家试想一下,龙卷风的形状其实就是一个下小上大的圆柱体,所以我们首先要让雾呈现为圆柱状,第一是利用纹理坐标和矢量计算的“长度”,连接颜色渐变来制作出一个球型雾。
接下来在“长度”的前方,利用矢量计算的“正片叠底”来做乘法,设X、Y为1,Z为0,这就相当于让球体在Z轴方向的长度为无限大,也就把球体拉成了圆柱体,具体设置可以参考图2。
完成龙卷风的圆柱体雏形后,我们需要把龙卷风设计为上端大而下端小,逻辑上来说就是添加一个矢量乘数,让这个乘数由下往上线性增大,因为是矢量计算,所以这一步需要先分离XYZ,我们只涉及到Z轴方向,所以用Z连接一个“映射范围”,而映射范围的“从最小”和“从最大”就是立方体上下两面的位置,对于默认立方体来说就是-1和1,然后把映射范围和“长度”进行矢量计算“正片叠底”,这时候再调整映射范围的“到最小”和“到最大”,就能得到上端大、下端小的龙卷风形状了,这时候如果觉得在EEVEE模式下看得不是很清楚,可以在颜色渐变之后再接一个乘法,乘以10左右就差不多了,具体设置可以参考图3。
显然,这时候的龙卷风只是形似,缺乏很多细节,比如螺旋向上的不规则风路设计,这时候需要在纹理坐标和正片叠底之间,添加一个噪波纹理,并用线性光进行混合,这时候调整噪波纹理的缩放、细节和糙度就能得到如图4的效果。
最后一步就是为它添加一个螺旋旋转效果,在噪波纹理前方加入一个“映射”,这时候调整旋转Z的数值就能看到龙卷风转了起来,但我们要的是旋转向上的效果,而不是这种整体规则的旋转,所以这时候我们需要从数学角度为Z轴旋转值添加特定属性,首先是分离XYZ,然后再把Z连接到合并XYZ,这一步相当于什么也没做,接下来就在两者之间加入一个“乘后再加”,乘是让龙卷风的顶部有更大的旋转值,底部则趋近于不动,这样就获得了螺旋形态,而加则是让它整体旋转,这样我们就只需要给加法做一个“-frame/10”驱动器,就能让它自动旋转起来了,具体可参考图4。
本文所用著色器节点一览
与此同时,为了让龙卷风的形态也随时间变化而变化,我们也可以把噪波纹理的类型设置为4D,然后为W值添加“frame/10”驱动器,这时候切换到Cycles渲染器再播放动画,就能看到一个如图5那样不断变化形状、螺旋向上的龙卷风效果了。
其实不难发现,Blender的材质着色器也好,几何节点也罢,制作过程类似于编程,有一个严谨的逻辑推导过程,从立方体变成球体,再变成圆柱体,接着让圆柱体上大下小,再添加噪波纹理并按乘法加法对Z轴方向进行旋转,就得到了一个龙卷风效果。这样的玩法在Blender里可以说是相当常见,因此强烈建议大家多多学习,融会贯通。