在进行地编工作时,纹理的重复往往是非常让人头痛的问题

直接缩放UV结果
在传统工作流程中,往往采用的是分层堆叠的方式,这种叠叠乐的方式需要大量的节点操作,并且LOD调节也是非常烦人的工作,最近在做一些轻量级的项目也是遇到这种问题,在这将搜集到比较好的解决方法分享出来。

话不多说,直接贴上写好的材质函数

处理前

处理前

处理后

处理后
原理拆解
这种方法就是通过自带的Vector noise噪波表达式来影响的贴图位置

给一个世界位置参数

得到效果
这样我们得到一个拥有不同通道的噪波参数,我们现在有了这个基础的参数之后,就是在这个参数上面进行计算。在Vector noise表达式中有不同的噪波函数,在这里使用voronoi函数,因为这个噪波预设会提供不同区块中的交界部分并输出到A通道里面,这可以解决我们的最终结果中的“接缝问题”,并且区块形状也是比较理想的情况。

稍加优化的节点图

得到结果

单独的A通道
这样准备的噪波参数就完成了,有了这个基础的参数,接下来就是在这个参数上面做运算(草地贴图太不明显,换了个箭头贴图)

把噪波中的一个通道应用到UV旋转上

得到结果
这样就得到一个紊乱的贴图结果,但是我们看到中间的接缝太过生硬,还记得我们前面说过留出的A通道可以给到我们一个接缝位置的羽化mask,接下来我们来通过给到的MASK上再叠上一个贴图,就能够缓解接缝生硬的问题。

叠加A通道

结果
然后我们再去做一下叠加贴图的UV,当然也可以用其他贴图或者材质参数,其实通过这种方法去延申做一些砖墙或者碎石瓷砖也是不错的选择。

直接叠上一层

处理前,可以看到接缝

处理后 基本没有破绽
接下来,我们把如上算法打包成函数,暴露出关键参数,就可以在写shader时随意调用
对节点中基础算法表达式有问题,可以参考官方手册
https://docs.unrealengine.com/5.1/zh-CN/math-material-expressions-in-unreal-engine/#fmod
本文介绍了一种使用Vectornoise表达式,特别是Voronoi函数在UnrealEngine中处理纹理重复问题的方法。通过生成不同通道的噪波参数,调整UV旋转和接缝羽化,从而实现自然的纹理过渡。作者还提供了节点图示例和关键参数的封装,适用于多种场景如砖墙和碎石瓷砖效果。

404

被折叠的 条评论
为什么被折叠?



