边界混合前篇:虚幻UE 材质-边界混合之PDO像素深度偏移量
上一篇主要讲材质相似或者不同的两个物体之间的边界混合
这一篇主要讲自建材质且相同的两个物体之间的边界混合
世界对齐纹理(WAT,World Aligned Texture)是一种特殊的纹理处理方式,用于将纹理贴图与实际物体表面对齐,使得纹理在渲染时能够正确地贴在物体表面上,实现更加真实和逼真的虚拟场景。
不依赖于物体UV坐标,直接使用世界坐标
方便做“背景”混合
其实现原理为:将贴图生成在一个统一的世界立方体之中,然后映射或者投影在物体表面。
举一个例子:
雪地里的井盖,按常理来说井盖被雪覆盖了薄薄的一层,且应该在指定位置有脚印。
通过这样描述,我们可以对井盖和地面使用同一样的材质,然后设置世界对齐纹理,这样井盖和地面的贴图生成在统一的世界立方体中,最后整体朝某个方向映射到物体表面。
最终效果简版效果:
移动井盖后:(井盖的材质没有固定,而是跟随环境的变化而变化)
首先我们指定我们需要做一个与背景地面相关的材质,所以我们创建一个材质:
材质文件创建好了,我们得对井盖进行分析,需要设置为背景雪地一样的材质,所以基础颜色需要设置为雪地纹理,且进行世界对其。
并把它赋给雪地和井盖,赋给雪地的原因是程序需要知道是哪些物体进行世界对其
但是发现贴图大小不对,调整贴图大小
这里有几个参数可以讲解一下:
输入1:
Texture Object:这里之所以使用这个节点是因为把贴图转化成一个对象传入,
相当于一个容器,输入的是一个贴图对象,
而不仅仅是Texture Sample里面的颜色,
并且世界对其贴图的节点也是希望你传一个贴图对象。
输入2:
Texture Size:这里是用一个矢量RGB来作为对应X、Y、Z轴,
默认矢量RGB为1、1、1,单位向量,这样控制起来很方便。
输出:
XY / Z / XYZ Texture:这里是说明世界对齐的轴向选择,
如果为XY Texture:
下图展示,从z轴投影就是错误的贴图。
纹理大小调整后效果:
做到这里我们还可以对其进行优化,我们现在只是对基础颜色进行了世界对齐
我们还可以对粗糙度、法线进行世界对其,这样效果更加好了
注意:法线对应的是世界对齐法线节点
由于雪地贴图没有粗糙度纹理,所以这里可以不用连接,
这里只是举例如果有粗糙度纹理的情况下的做法
最后效果: