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

Posted 清清!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 天空与雾气/体积云参数与材质分析