Building Worlds In Unreal 学习笔记——29-30 水坑与涟漪

Posted 清清!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Building Worlds In Unreal 学习笔记——29-30 水坑与涟漪相关的知识,希望对你有一定的参考价值。

Building Worlds In Unreal 学习笔记——29-30 水坑与涟漪

本系列学习资料来源,Ben Cloward的油管空间,B站的搬运翻译

Lec29 地面水坑 Landscape Puddles

本节主要是创建水坑,下节会创建涟漪

我们先新建一个用于水坑显示的mask材质函数

1 水坑mask——世界坐标纹理叠加

最开始的版本,我们用世界坐标的XY当做UV采样依据,分别乘以倍数(其中一个换了下X和Y,增加随机性)
然后采样distortion纹理(这个纹理在Lec04和Lec17都用过,也就是用PS渲染一些云的图案)

我们直接连到base color看看情况

2 水坑mask——lerp参数插值

但是这明显不像水坑该有的样子,我们做一下调整

  • 我们用一个input参数来控制水坑大小
  • 插值一个二维向量(这个数值可以根据自己需要调整)
    R通道代表除数(除的越小,相当于乘的越大,也就是白色变大,黑色变小,1-x之后,给水坑的白色mask越小)
    G通道代表减去(减得越多,黑的越多,1-x之后反转,白色越多,给水坑的白色mask越大)


看看效果

3 水坑mask——范围确定

现在我们的水坑mask到处都有,肯定是不对的

我们取顶点法线的Z,然后各种调调对比度啥的,和原本的输出乘起来,得到mask

山坡上就没有水坑了

4 混合地形和水坑

我们编写一个材质函数

  • 获取输入的地形材质属性,和水进行插值得到
  • 关于BaseColor,使用指定颜色和地形原本颜色进行混合作为基色,按照开放的‘透明度’参数和地形原本颜色进行插值
  • 剩下三个属性,按照遮罩进行固定值插值

把这个材质函数放进来

看看效果,还行

5 高度图校正

如果开启了细分的话,会发现我们的水坑也被细分了,也就是此时水坑的高度图还是用的草地的高度图

所以为了函数的健壮性,我们做一些调整

  • 第一个lerp,把水坑的高度调到0.5,其他的调低;第二个lerp,水坑使用0.5的height,其他地方用正常地图原本的height
    (其实思想就是让水坑的高度维持在0.5左右,当高度是0.5左右时,细分高度变化的非常少,Ben佬做了这两个lerp,是让水坑以外的height小于0.5,产生细分下移,水坑则不变)

连到材质上

这是效果

这是直接赋值常量的效果,差别就是边缘没有下落


不过细分似乎耗性能,我也就不会开,节点先这么连着

6 草与河底水坑去除

现在我们的草会长在水坑上,河底也会有


这很没有必要,我们可以去除它们

加上一个mask参数乘一下,也输出一个mask

然后在我们的主材质中去减掉它(sample river代表有河流的地方是白的,其他是黑的,所以反转)

原视频的这种做法似乎河底依然有点东西

看了下mask似乎河底并没有处理干净,只是颜色淡了点

于是我又给sample river做了些调整

现在河底就没有了


对于草长水坑的情况,这是改进前

这是改进后的,有些还是会长在水坑上,可能是模型大小问题,不过整体上是不长了

Lec30 水坑涟漪 Landscape Puddle Ripples

这节主要就是加上涟漪和雨波纹(大部分在雨shader的时候就做过,只要拿过来用就好了)

简单写一个材质函数(关于中间这个函数可以去看雨材质那几节)

加入到主材质中(如果需要渲染RVT,最好不要在它之前加入动画效果,我们一般在最后加入动画)


我们也可以加入雨水的效果,后面那个1是伪造法线,用意说是节省性能,个人理解可能是用了add以后,本来就不是归一化的法线
然后就取前俩法线的XY,加个Z=1,来糊弄一下当做法线



不过好像看不太出来,可能涟漪函数内部实现的参数可以大一点

之后看Ben佬要更新啥再跟了

以上是关于Building Worlds In Unreal 学习笔记——29-30 水坑与涟漪的主要内容,如果未能解决你的问题,请参考以下文章

Building Worlds In Unreal 学习笔记——29-30 水坑与涟漪

Building Worlds In Unreal 学习笔记——01-02 概览与引入

Building Worlds In Unreal 学习笔记——12-14 瀑布/雾与光/总结与展望

Building Worlds In Unreal 学习笔记——03-06 地形贴图/地形材质/修正重复/近景位移

Building Worlds In Unreal 学习笔记——31-33 天空与雾气/体积云参数与材质分析

Building Worlds In Unreal 学习笔记——31-33 天空与雾气/体积云参数与材质分析