Notifications
Article
在Unity中创作龙卷风特效
Published 2 months ago
87
0
今天我们将由法国的开发者Maxime Catel介绍如何在Unity中创作龙卷风特效。

龙卷风项目

这个龙卷风场景项目是为VFX Sketch挑战而创作,此次挑战的主题为龙卷风。二个月前我曾制作一个FPS游戏项目,里面就包含这类旋风效果,所以制作前我已经具备创作特效的灵感和技巧,此次我打算创作风格化龙卷风特效。
我的目标是使该特效让人印象深刻,它会是个庞然大物,当你看着它时,会感觉它会摧毁行进路径上的所有障碍。所以我决定制作一个旋转场景,使用轻型低角度摄像机来突出龙卷风的强大,它将成为游戏关卡中给玩家造成最大的威胁。

制作流程

首先我决定使用简单的网格。这些网格是经过修改的圆柱体,它们拥有普通龙卷风的形状以及合适的网格密度,能够产生良好的扭曲效果和顶点偏移。制作时比较困难的主要是着色器部分,因为动作、扭曲、颜色和形状都是由纹理和着色器控制。
在对龙卷风行为进行研究之后,我使用Shader Forge 开始制作着色器。首先,我使用一个非常模糊的平移噪声创建了网格的扭曲效果,它能够修改顶点偏移。该效果非常简单:纹理的颜色越白,网格中就有越多顶点互相碰撞。这一步给龙卷风整体动作带来了混乱无序的效果。
接下来,我要制作主纹理。我在尝试过程中发现:该龙卷风规模较大,必须为它加入细节,因为我不想让龙卷风看起来像过于简单。因此,我使用云噪声作为纹理的基础,通过加入抖动并调整等级给纹理添加密度。
使用这种方法,我的纹理开始看起来像尘土、沙粒或其它不稳定粒子的混合体,尤其是网格底部。该纹理让人感觉大量小型元素都被吸入龙卷风之中。

核心部分

我想为龙卷风制作特别的核心部分,为此我必须观察到核心效果。所以我为除了核心部分外的所有网格制作了溶解遮罩。然后添加更大的网格,例如:图层,为整个龙卷风增加体积。
核心部分由二个圆柱体网格组成:里面部分不受到溶解着色器影响,它拥有完全平坦的发射性浅蓝色,另一部分是相同的圆柱体,但是更大一些,带有溶解着色器和纯白色。它的目的是增强蓝色核心的效果,为其添加电磁和魔法特效,因为这不是一个简单的龙卷风,它是一个神秘的龙卷风。
我选择了亮青色处理核心部分,因为场景整体颜色比较暗,带有较多蓝色,所以我必须实现反差效果来吸引注意。发光部分由摄像机上的后期处理功能制作,它会影响整个场景。该效果在场景中非常重要,因为它突出了风格化和魔幻效果。

形成龙卷风外部的云由不同网格制作。它具有更夸张的龙卷风外形,顶部较大,底部较薄。我使用溶解着色器创建出透明效果,并在网格底部用黑色绘制顶点Alpha,从而使纹理在淡化时避免出现奇怪的轮廓。
为了避免在溶解时出现重复平铺,我混合了二个不同的高密度噪声,其中一个噪声移动速度较快。该方法很不错,能实现很多特效,不仅用于自定义网格,还可以用于尾迹和火焰。通过该方法,这样云的形状就不会千篇一律了。
旋转效果是通过简单的UV技巧实现的。我的纹理会向一个方向不断平移,因为网格本身是扭曲的,所以纹理会跟随边缘的流动。

龙卷风结构

龙卷风由不同图层组成,这些图层使用不同数值来调整。例如:图层中纹理的平移速度不同,外部网格拥有较慢的平移速度,内部网格拥有较快平移速度。它使整个龙卷风具有动态效果,避免让人感觉单调,这是各图层运动之间的协同效果。
另一个例子是着色器中的色调纹理。我使用了另一种密度较小且模糊的的云噪声,该噪声与颜色相乘,从而在纹理上实现不同的颜色区域。该噪声主要用来实现浅紫色的着色,有助于混合不同纹理和网格。
我们可以将所有网格图层和渐变效果进行对比,该渐变开始时带有发光核心,结束时带有逐渐淡化的深色云。
我必须多次调整每个图层上的平移数值,从而得到合适的全局动作。如果龙卷风旋转速度过快,会失去巨型龙卷风的感觉,如果它旋转速度过慢,会让人感觉没那么危险。
最后加入场景的元素是天空盒。天空盒由简单的云立方体贴图制作,在特定部分带有遮罩。我为遮罩的强度设置了动画,使其看起来就像闪电。

组合

最后,龙卷风终于完成了。龙卷风各部分的结合是一步步实现的,所以我可以轻松考虑每个新步骤并了解项目进展。
现在,我需要拍摄出漂亮的龙卷风镜头。该场景是为龙卷风所作,但我也可以在游戏中使用该资源。整体上说该龙卷风的优化还不错。纹理效果挺好,虽然网格密度较高,但该对象也很大,所以该资源有足够的预算。
唯一的问题在于,后期处理效果是为龙卷风而设计的,它不适合在整个游戏中使用。所以之后需要对龙卷风颜色和着色器进行调整。

小结

创作龙卷风特效是一个有趣的过程,希望你能喜欢该项目和文章中介绍的内容,并且从而了解和创作出漂亮的龙卷风特效。更多Unity技术文章分享尽在Unity官方中文论坛(UnityChina.cn)!

Unity China
380
Comments