现象
自己随便制作了一个地面,随便制作了一个材质,给地面上上刚刚制作好的材质,就发现材质被拉伸到整个地面的平面模型上了。
可以清楚的看到,材质是没有被平铺的,而是被粗暴的拉伸的整个模型上。
分析
其实这个问题在其它的建模软件上也会出现,以我们的Blender举例。在Blender中创建了一个普通的平面,我们想要将其算作为地面,所以附上了一个地面的材质。但是我们又没有对地面的这个材质进行任何的处理,也没有对地面的平面模型的UV做任何处理,所以直接将材质作用于模型之上,会导致材质的贴图被直接拉伸铺满整个地面的平面模型。
而通常情况下,我们会对材质进行UV的平铺处理。
例如纹理坐标-矢量-各个贴图,在矢量节点中更改贴图的缩放,以达到将贴图平铺至整个模型上,且适配于模型至上,不会出现拉升。
解决方案
在UE引擎中,对于模型的材质贴图拉伸问题,我们也是通过类似于其它建模软件的解决方法来解决这个问题的。
所以,在材质球的修改中,我们需要引入一个名为texturecoordinate的材质节点,后续我们将以TexCoord作为它的简称来称呼它。
这个材质节点简单的翻译一下就能知道它的作用,它叫纹理坐标,是不是很熟悉?对,在Blender中就是通过它来实现整个材质的拉伸问题,而在UE引擎中我们也是通过这个节点来解决问题。只不过在UE5中,它的节点并没有被翻译成中文,因此可能会对其感到陌生。
使用方法也是十分地简单,将坐标索引连接到各个材质贴图的UVs上,修改U平铺和V平铺就可以实现材质贴图的平铺效果了。
哦,对了,记得保存材质球的修改!
参考
Coordinates Material Expressions in Unreal Engine | Unreal Engine 5.4 Documentation | Epic Developer Community https://dev.epicgames.com/documentation/en-us/unreal-engine/coordinates-material-expressions-in-unreal-engine#texturecoordinate