UE4_地编_降低地形材质中贴图重复度的方法

学习笔记,不喜勿喷!侵权立删!祝愿生活越来越好!

制作思路:

方法一:

通过对材质勾选使用材质属性,用2个MakeMaterialAttributes进行BlendMaterialAttributes,混合的alpha蒙版来自于heightlerp,heightlerp可以再由heightlerpwithtwoheightmaps得到,这样就完成了降低贴图重复度的方法。实际上就是通过混合高度图的方式来打破贴图的重复度,并且确保两种地形材质符合从低洼的地方向比较高的位置变化,主要用到有通过高度混合的HeightLerp、HeightLerpwithtwoheightmaps。核心节点主要有三个,分别是heightlerp、heightlerpwithtwoheightmaps(通过混合2张高度图来输出)、BlendMaterialAttributes;

蓝图连接大体如下:

heighlerp来自于两张高度图的混合:

方法二:

贴图的重复度,不仅可以通过上面高度图作为alpha贴图去破坏它,我们也可以通过距离的变化去破坏它。主要是通过PixelDepth像素深度蓝图节点来获得摄像机到像素点的距离,让这个变化的距离除以一个值,来获得一个0到1之间的值,为了这个0-1的值变化不是太过明显,可以加上一个随着距离而变化的噪点贴图,这样得到的选区也是可以调节对比度的。实际上有一个相似的蓝图节点能够实现这个功能叫Distance_Blend。

两种方法的融合:

第一种方法是一个混合的高度图,第二种方法是一个随距离而变化的高度图,我们现在想把它们融合在一起,就是我离远了实际上我不想看得细节更清晰,离近了我想看清楚细节,也就是我希望贴图uv平铺的次数随着距离进行增加。当近的时候贴图平铺次数比较少方便观察细节,当远的时候不需要看得太清楚,可以改变平铺次数变多一些。由于我们需要重复用到相似的功能,所以我们可以把它们制作成材质函数来进行使用。

方法一、知识点:

1、HeightLerp

来自于官方帮助文档设计视觉、渲染和图形效果—材质—材质函数——材质函数参考—纹理处理

HeightLerp(高度插值)函数允许您根据高度贴图和过渡阶段值,在 2 个纹理之间执行线性插值。这允许您沿着发生插值的高度贴图来调整值。

输入

A(矢量 3)(A (Vector3))

用于插值计算的第一个纹理

B(矢量 3)(B (Vector3))

用于插值计算的第二个纹理。

过渡阶段(标量)(Transition Phase (Scalar))

此值定义发生过渡的高度贴图范围。保留此值为 0.5 表示执行标准插值,而将值调整为接近 0 和 1 将分别朝向高度贴图底部或顶部发生偏移。

高度贴图(标量)(Height Texture (Scalar))

用于插值操作的高度贴图。

对比度(标量)(Contrast (Scalar))

使用 CheapContrast(低成本对比度)函数对高度贴图应用对比度提升。

输出

结果(Results)

HeightLerp(高度插值)函数的混合结果。

阿尔法(Alpha)

在插值中使用的阿尔法值(已提升对比度)。

无对比度插值阿尔法(Lerp Alpha No Contrast)

在插值中使用的阿尔法值(未提升对比度)。

双击此材质函数,进入内部观察节点:

可以像lerp一样理解它,高度的线性插值。

我们都知道纹理就是颜色的图片,所以这里我们让它特殊点,来看看2个颜色发生的变化;

示例1:

我把对比度设为0,你就会发现和线性插值一样了。

通过这里大体能够看出,利用高度图来混合A和B,高度图中减去1加上0.5乘以2正好又等于1,而这个值又作为alpha来线性插值A和B,所以白色基本上应该是B的颜色。我把对比度设为0,你就会发现和线性插值一样了。

CheapContrast函数内部结构为:

示例2:

我们来看看2个贴图应用情况:

放大看:

我们来调整过渡阶段(标量)(Transition Phase (Scalar))的值观察效果,当值为0时,

当值为1时:

有此可见过渡阶段(标量)(Transition Phase (Scalar))控制的是A和B的多少。

2、HeightLerpWithTwoHeightMaps

通过线性插值来混合两张高度贴图,

材质函数内部构造:

示例1:

示例2:

用它来混合高度贴图,只需要用到alpha输出,相当于在原来高度贴图的基础上生成了一张新的不规则的高度贴图。

效果图放大如下:

我们还可以处理下uv,如下处理:

处理后效果图:

对比下上面的效果更好了。调节参数可以得到更好的效果。

3、BlendMaterialAttributes

这个节点可以把原来用basecolor、normal、roughness等材质属性混合完再连接到材质节点上的方法改成下面这种:

方法二、知识点:

1、PixelDepth

PixelDepth(像素深度) 表达式输出当前所渲染像素的深度,即该像素与摄像机之间的距离。虚幻引擎默认的单位为厘米。

示例1:

效果如下:

在此示例中,已将材质网络应用于地板。请注意当地板后退 2048 个以上单位时(虚幻引擎默认的单位为厘米),线性插值在两种颜色之间是如何进行混合的。使用了 Power(幂)表达式来加强这两种颜色之间的对比,并产生更有意义的视觉效果。

示例2:

随着距离的变化产生一个蒙版变化的alpha选区。因为通过PixelDepth得到的是一个以厘米为单位的值比较大的值,所以我们需要重新定义一个值distance 作为过渡范围的1值,这样从0cm到distance就能得到一个从0到1的变化范围。由于大于这个值的相除得到的结果都是大于1的,所以我们就clamp一下范围在0-1,为了让变化的更加不规则,我们可以加上个噪点贴图,由于噪点贴图的变化范围比较大,我们可以通过它乘以一个divide后的结果,这样距离越近受到的干扰越小,距离越远受到的影像越大,让它们相加的选区加个限定在0-1去影像材质的混合效果。为了能够得到不同的混合效果我们还可以让噪点贴图产生变化,让它uv乘以一个值,当这个值大于1,相当于uv产生重叠,当乘以一个小数,相当于只显示原来uv图的一小部分,相当于放大贴图。最后得到的选区还可以进行调节对比度。选区就是一张灰度图,灰度图在ps中是可以调整对比度的,让过渡更加柔和还是生硬。

2、Distance_Blend

材质函数内部构成:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Growthofnotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值