今天分享的是莫斯科自学成才的一个艺术家的动画雨滴材质,虚幻引擎非常适合创建简单且美观的动画着色器和效果,因为它不需要强大的编程技能,只需要基本的数学知识。你需要两个参数来调整动画材质:根据时间来改变贴图的UV坐标以及时间。
然后,我制作了两个包含所有必要信息和逻辑的函数。它们分为两组:随时间出现/消失的静态水滴和流过表面的动态水滴。
2、工作流程
首先,需要获取纹理的坐标并开始向必要的方向移动它们。稍后,将使用这些坐标对Distortion的法线贴图进行采样,并为水滴的纹理坐标添加轻微的扭曲。借助有关扭曲和纹理坐标位移的信息,可以对法线和Mask进行采样。
然而,为了呈现不仅仅是简单的水滴流动的效果,我使用了Mask的红色通道,并使其强度随时间变化。另外,我还通过添加一些简单的数学函数使水滴随时间出现和消失。
第二个函数也是如此。它包含置换纹理坐标和扭曲,但略有不同。当我制作流动水滴的纹理时,我只为它制作了一滴水和一组Masks。为了填充水滴,我必须添加一个循环,在该循环中水滴被复制、移位、具有不同的速度(每个水滴都是唯一的),并最终相互混合。
为了使扭曲更有趣,我使用了两次扭曲贴图:用于比较大的扭曲和不太密集的扭曲。然后,它们沿轴以不同的强度混合在一起。假设,可以在一张地图中使用多个水滴或一张地图用于所有水滴,在这种情况下,所有水滴将以相同的速度相互平行移动,因为你无法影响单滴的速度和时间。
我还有一个自定义节点,其中包含有关最大滴数的信息,并使用当前位置和滴速设置了一个静态数组。它可以手动完成,也可以在 Unreal 中完成,我这里使用的是3D Max的脚本。
该脚本获取有关编辑器中所选对象的位置和大小的信息,并将其返回到定义的数组中。在我的例子中,我只使用了 XY 坐标和一个下降速度的指数。同样,可以创建一个包含有关液滴大小信息的数组并将其添加到材质中。
过滤器准备好后,我调整了它们的输出参数。我还创建了一些可以在材质中更改的输入参数,例如动画速度、平铺、水滴失真强度、法线贴图强度和使用过滤器的纹理。
之后,这些过滤器可以用于任何材料,无论其类型如何。材料的参数可以在其掩码的帮助下进行调整。
作为示例,我制作的第一个基础材料是哑光不透明表面,这是混合必要蒙版和设置颜色、粗糙度和水滴法线等参数的起点。
如果将材质类型更改为透明并同样添加透明度和扭曲,将得到一个简单的玻璃材质。
为了使物体更加有趣和复杂,可以通过模糊玻璃后面的背景来添加冷凝效果。此技巧仅适用于透明材料和后期处理。同时,必须降低透明度,仍然保持材质类型透明。之后,是时候为材质添加模糊效果了。
然后,可以添加Mask以避免在平行于地面的表面上移动水滴。
以同样的方式,可以将其与现有纹理混合,例如水滴从屋顶掉落的纹理或任何其他材质。
这是在后处理中使用函数的示例:
3、最后
不幸的是,所有这些效果都非常苛刻,因为它们更适合在屏幕上不占用太多空间的小表面,比如房间里的窗户。
使用的纹理、混合和复杂的数学越多,渲染材质的难度就越大。
为了优化,可以选择简化纹理,例如,如果不想要这样或那样的效果,可以减小它们的大小或去掉一些数学运算。在这个函数的情况下,我并没有针对某些特定的结果,而是尝试制作一些可以在必要时简化的多用途的东西。