欢迎光临散文网 会员登陆 & 注册

地形材质表面添加水坑效果

2021-01-25 18:17 作者:zhou-shan  | 我要投稿

第一步,将所需要的材质做成材质函数,makematerialAtributes输出材质属性如图

材质函数

第二步,在地形材质中添加Layer Blend节点使各材质混合起来。

这里layer blend添加了5层,“zhuan”和“Rock”都是用来测试用的,因为之前layer blend添加4层材质后,就不能再添加材质层了,提示纹理采集超过16。(解决方法:将材质函数中的texture Sample节点的采样器源从“自纹理资产”改为“共享:包裹)。

解决

解释一下layer blend的混合类型。

这里layer blend混合类型有“LB透明度”、“LB权重混合”、“LB高度混合”三种。

(另外这个老铁专栏比较详细的讲解了layer blend混合类型的区别https://www.bilibili.com/read/cv9179134)大致就是权重是可绘制的,透明度是不可像权重一样被遮盖的,高度混合和权重的区别就是高度混合会在材质的边缘衔接的更nice,当选择了高度混合,blend节点就会多出一个Hightxxxx的input节点。

第三步,重点来了,如何添加水坑材质效果。(B站视频地址https://www.bilibili.com/video/BV1zy4y1i7C9?p=3

当当当当,就是这个了

进入这个材质函数,一步步重来一遍好了。

①、制作水坑大遮罩

这里就用到Displacement Map了。

用这个纹理做例子,最下面那个就是displacement map
displacement map的R通道

R通道不明显,做遮罩效果不明显。用if节点来加强遮罩。

if节点加强遮罩

黑色部分是凹处水坑,白色是凸处泥土,修改Puddle Size值可以改变黑白部分的大小。到这里基本上这个函数节点就OVER了。

②制作水坑边缘遮罩。

③Normal部分。水坑的边缘Normal应该是削弱的map,水面应该是无Normal的,用lerp节点。

然后削弱法线,再用一个lerp节点编辑水坑边缘部分。

④颜色部分,水坑颜色应该和土的颜色差不多,但是水坑中间是浑浊的 渐渐的边缘清晰可见,结合lerp节点这个效果需要重新编辑一个遮罩(同样的用displacement map)。

multiply节点来调节水坑颜色的整体尺寸,Power来调节水坑的深度不透明度。测试出来puddle depth2.3,opacity1.1比较合适。

这个clamp节点min节点连接水坑遮罩,水坑遮罩的白色部分与power节点输出相对应的位置不受影响,clamp后该部分输出1。(解释的不太通畅,不知道过后自己能看懂不)

⑤粗糙度编辑,另外也需要调整水坑边缘的泥土湿度,不然干湿太过分离看着很假。干湿分离遮罩需要重新制作。

这里用了个lerp节点,混合度Wetness shift为0.75,这个值设置边缘湿度。

最终大致效果出来了。(最后添加各种input节点就能实现最开始的函数样子)

我们想实现的目的其实是能使用各层的Highmap及其他属性,不局限于刚才的泥巴贴图。因此,最终这个材质函数应该输入材质属性,输出材质属性。再将hight map转化为scale输入。另外需要一个Alpha值作为“绘制权重”,结合一个landscapeSample节点连接这个Alpha值控制绘制。

另外需要输出Hightmap,这里用一个lerp节点作为限制,说实话不是很懂。↓↓↓↓↓

总结一下

有点乱

再进行下一步!!!!我们回到地形材质节点中。

用两个lerp,再结合sample权重值将不同层材质的高度图值混合起来。最终将输出连接到材质函数的hight节点。再将layer blend的输出节点连接到材质函数的材质属性输入节点。

接下来将材质属性设置为细分,再结合camera Position和absolute world position两节点做插值再取模的操作作为遮罩,最终近处值为0 离摄像机越远的像素点值越大,再结合lerp节点节约“资源”。

这个遮罩用于细分设置和世界场景位移节点设置,以达到节约资源的目的。

最后提一句,layer blend第一个输入节点可以用作地形材质的高低自动材质!!!!!!


地形材质表面添加水坑效果的评论 (共 条)

分享到微博请遵守国家法律