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调的过大,就会出现类似双螺旋的情况,就很假了
    在这里插入图片描述
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值