在UE4中创建VFX爆炸
介绍
大家好,我是 Gasper Znoj,我是来自斯洛文尼亚卢布尔雅那的 VFX 艺术家。我毕业于多媒体学院 (IAM),主修 3D 动画。在学习期间,我开始在 Unity 中制作小游戏原型,这让我对游戏产生了兴趣。因为当时斯洛文尼亚没有电子游戏文凭/课程,我决定搬到温哥华在 VanArts 学习游戏艺术与设计。完成学位后,我参与了植物大战僵尸:邻里之战 (EA)、帝国时代 IV (Relic Entertainment) 和 Dauntless (Phoenix Labs)。
灵感
我对这种效果的灵感来自 Runeterra 电影预告片的@quentincordonn1爆炸。当我看到这条推文时,我想尝试使用网格来实现类似的目标。不久前,我正在制作一个益智/冒险游戏原型,并且正在探索 cel-shaded 材料。这些材料让我知道如何创造这种效果。
如果您还没有,请跟随 Quentin,他的作品令人难以置信!
工作流程
我为这次爆炸制作了两种形状——球体和烟雾轨迹(制作更多的自定义网格会使爆炸看起来更好)。球体非常简单。我在 Maya 中创建了一个简单的球体,并使用软选择拉出一些顶点以使其更有趣。
我本可以对烟迹做同样的事情,但在 ZBrush 中制作有机形状要快得多。我从一个 DynaMesh 球体开始,并使用移动和标准画笔来制作烟雾轨迹。之后,我对它进行了重新网格化以使其成为低多边形。我不需要高多边形,因为我没有为网格使用任何法线贴图。我在 Maya 中导入了烟雾轨迹网格并添加了一点曲线变形 > 非线性 > 弯曲。
我将这个着色器分解为基本元素以展示它是如何工作的:
我真的很喜欢它的工作原理,因为您可以添加、乘以、遮罩您的纹理(在 2D 空间中),然后将其投影到网格上。我使用的纹理是 1px x 512px。因此,如果您向上或向下平移纹理,它将朝向或远离网格上的光方向平移。通过这种方式,您可以添加亮点或任何您想要的东西。只要您还在添加的任何其他纹理中连接点积的相同结果。它类似于 Substance Designer,您可以将笛卡尔图形连接到极坐标,您可以根据需要调整纹理,并实时查看极坐标中的结果。
在左上角,您可以看到我在手动设置的自定义矢量(光方向)和网格的顶点法线方向之间得到了点积。这允许我在我想要的任何方向旋转烟雾的高光。通常,您会将其替换为具有主光(太阳)位置的自定义参数的材质参数集合,如下所示:
这将调整使用此着色器的所有爆炸的高光以面向您的主光(太阳)位置。虽然这可能是您想要的东西,因为它更逼真并且更有意义(在第三人称游戏中),但我认为使用相机的位置(带有偏移)作为光线方向看起来更好。这将使爆炸从任何角度看起来都一样(我还没有设置,但我将来会设置)。2D 动画翻书也是如此,因为它们绘制了高光和阴影。
失真评论部分非常简单。它使用法线贴图来扭曲我正在使用的纹理。我还添加了一个法线贴图蒙版,所以我不会在球体的顶部和底部得到奇怪的结果。
最后一个是我用于绿色烟雾爆炸效果的最终着色器:
挑战
以这种方式产生效果时会遇到一些挑战。第一个是将烟雾网格混合在一起。你可能会得到一些强硬的线条或奇怪的结果。这可以通过基于距离掩码混合多个重叠网格的顶点法线来解决。我之前没有尝试过这个,因为我还没有找到一个好的方法。另一个挑战是性能。让游戏中的所有烟雾都成为网状粒子并不是最好的选择。
我认为让这种效果吸引人的是动漫爆炸的外观。它还提供真实、准确的阴影和最重要的东西——体积。这种效果对于第三人称游戏非常有效,在这种游戏中,效果必须用烟雾覆盖大面积(或玩家)较长时间。尽管这种效果仍然可以改进,但我已经看到了这个工作流程的巨大潜力。