Unity海面效果——5、水沫和海平线

Unity引擎制作海面效果


  大家好,我是阿赵。
  继续做海面效果,上次做完了漫反射颜色和水波动画,还有法线和高光效果。
在这里插入图片描述

  原则上来说,这个海面已经基本能看了,从性能的考虑,到这里差不多可以停止了。不过有些细节还是可以补充一下。

一、 岸边泡沫

  之前介绍过怎样做跟随着水面升降的泡沫效果,这里可以加一下。
主要用到的是深度,在ASE里面有专门获取深度的节点
在这里插入图片描述

  这个节点为我们做了很多事情,获取非线性渐变的摄像机深度图,再转换成LinearEyeDepth的线性深度。
在这里插入图片描述

  去掉漫反射和高光颜色,单独看这个深度计算的结果,可以看到了,在这个泛白的范围,就是我们想显示泡沫的区域。
在这里插入图片描述

  接下来,找一张泡沫的图,然后在这个区域里面做一个显示就行。我是拿了水波的高度图增加了平铺次数来当做泡沫显示了
在这里插入图片描述

  这时候,可以看到刚才泛白的地方,显示出了和普通水波纹不一样的一些泡沫的纹理
在这里插入图片描述

  加上之前做的漫反射和高光,会是这样的效果:
在这里插入图片描述

  但又一个问题,一般这种泡沫是会随着波浪拍打而变化的,如果我现在这样就静止不动,看起来会很怪。所以需要让它动起来。
这里有多种方案,我分享2种:

1、 制作水面的顶点动画

  由于这个水泡沫的范围是通过深度计算出来的,如果水面变化,那么深度范围也会跟着变化。
  所以,可以给海的面片做一个顶点动画。不过由于这个是一个面数不多的面片,做顶点动画会由于顶点不足而不好看,还要做一个根据距离变化的曲面细分,让岸边的部分网格顶点数增加。
  由于这样做比较麻烦, 而且性能也不怎么好,所以我就没这么做了。

2、 动态变化深度范围。

  由于刚才泛白的范围,其实也是通过深度计算出来的,所以我们也可以通过给计算深度的距离增加一个参数,乘以一个sin时间,让它做一个来回往返的变化范围动画。
在这里插入图片描述

  大概是这一个部分了,增加了一些参数,让它能调节往返的幅度,还有强度。
在这里插入图片描述

  结合着之前计算的菲涅尔范围做透明度,得到了一个范围。这时候,泡沫看起来就动起来了。
在这里插入图片描述

  泡沫会沿着深度的方向往返变化范围,泡沫也就像拍打岸边一样变化了。

二、 海平线

  现在看起来画面有点像样了,不过有个问题,在海天相接的地方,现在的海平面边缘会比较硬,我希望能在海平线的地方,不要那么生硬。
  这里的算法有很多选择,我用了一个简单的计算距离的方式,通过摄像机位置和世界顶点坐标求距离,然后再通过两个参数控制缩放范围:
在这里插入图片描述

  单独显示这个数值,会看到现在海平线的位置有一个白边:
在这里插入图片描述

  通过调节参数,可以控制白边的宽度:
在这里插入图片描述

  把之前做的所有效果加起来,就能看到:
在这里插入图片描述

  现在出现了一个海平面的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值