Building Worlds In Unreal 学习笔记——番外1:自制交互水面
Posted 清清!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Building Worlds In Unreal 学习笔记——番外1:自制交互水面相关的知识,希望对你有一定的参考价值。
Building Worlds In Unreal 学习笔记——番外1:动态的水
上网冲浪过程中,发现了戴老师写的关于动态液体的材质,于是也学习一手,添加到Ben佬的这个水的材质中来
做这个的思路和原理在戴老师的文章里写的很好了
我就在这里记录下我对于自己这个工程做的小调整
1 距离场设置与测试
首先打开计算距离场(打开后需要重启)
建立一个材质测试下
把材质给一个平面,显示DistanceToNearestSurface这个距离场节点的效果
还会用到一个显示相交位置法线的节点
2 原理:根据距离场扭曲UV采样
这里借用戴老师的图
原本水流是正常朝着一个方向流的
如果产生交互那么水流就会绕着物体表面流
这个绕是怎么个绕法呢,大致流向可以推测是沿着法线方向外扩
随着离开球的距离越来越远,水流流向的改变效果越来越弱。足够远之后,原本的流向完全不再改变。
3 实现
根据原理和戴老师的文章,连了这么一个材质函数
大意就是,得到物体周围某个限定范围内的一圈,带法线方向的,根据1→0渐变的,一个mask
为了让这个mask在什么方位都可以用,记得回到切线空间投影
然后原始的UV减去这层mask,得到UV坐标向外扩的效果,然后加上方向向量,就可以得到拖尾效果
把这个函数放到在小场景的练习里用的水材质上
- 这里回去修改了一下flowmap的函数,因为发现调整方向的时候u,扰动拖尾方向和水流方向不一样(原本没有这个乘以-1)
如果没有乘以-1的话,得到的效果和自己输入的flowmap想要的方向是相反的
举例来说,原本没有乘以-1,U是正数,采样坐标往U方向增加,显示来看是整个图向着-U方向在运动
所以乘了-1以后,变成采样坐标往-U方向增加,显示来看是整个图向着U方向在运动,就和做扰动里的拖尾方向一致了
调调参数得到效果
拿一块平面来测试
放到场景里试试
可以看到大致实现了扭曲的效果
4 一些应用反馈
以下是一些应用这个方法后的碎碎念
- 距离场距离场,终究是在算距离来模拟
在我们这个小场景中,几何体太多了,距离场的数据会起伏比较小,因而在场景里的扭曲效果很不明显
我们的场景是个浅浅的河,河底有很多小石头也会被纳入河面距离场的计算,从而音响效果
我们其实主要是希望河上的木头和大石块发生水流扰动拖尾
这个方法感觉方便用于那种 水面上东西不多 以及 有较深较平的水底 的水面 - 以及对于从水面外移动到水面的物体来说,因为距离场的计算,会出现还没接触水面,水面就开始扭曲的效果
这个方法对于不离开水面,一直在水面上的物体,还是不会看出bug的 - 以及对于往外推法线的那个参数,还是不要调的太大,对扭曲UV调的过大,就会出现类似双螺旋的情况,就很假了
以上是关于Building Worlds In Unreal 学习笔记——番外1:自制交互水面的主要内容,如果未能解决你的问题,请参考以下文章
Building Worlds In Unreal 学习笔记——29-30 水坑与涟漪
Building Worlds In Unreal 学习笔记——01-02 概览与引入
Building Worlds In Unreal 学习笔记——12-14 瀑布/雾与光/总结与展望
Building Worlds In Unreal 学习笔记——03-06 地形贴图/地形材质/修正重复/近景位移