我看到网上大部分帖子都是通过景深(depth of field)实现,但是我自己在用的过程中发现并不好用,虽然能实现水下模糊,但是模糊的太假,不像是在水下,我这里采用的是浅蓝色的雾加blur实现,先上效果图:
水面图
水下图
实现方法如下:
第一步:
为了实现相机判断是不是处于水面下,我这里采用一个cube来填充整个水下空间,这样利于判断是不是处于水面下,在hierarchy面板下点击gameobject,创建一个cube,修改名字和tag为shuixia,调整cube的大小,使cube填充到整个水面以下空间。勾选cube的box collider组件下的is Trigger,否则相机无法穿入cube。
第二步:
给camera添加blur组件,该组件在image effects目录下,如果你的unity下没有image effects,那么不用担心,那是因为你没有导入标准资源,在project下导入标准资源即可。将blur的iterations 参数设置为1,blur spread 参数设置为0.3,你也可以设置其他值去调试效果。
第三步:
设置开启浓雾效果,老版本的unity在edit的render setting下,新版本的fog在window/lighting中。勾选fog即能打开浓雾效果,设置浓雾的颜色可以实现模拟水下效果。当然,这里的浓雾和blur默认是所有场景,我们可以通过代码控制fog和blur效果的显示和关闭。
第四步:
具体脚本的编写,我这里的思路是当摄像机与水面下的cube碰撞,就开启fog和blur下过,当相机离开cube就关闭fog和blur效果,当然,初始化时要关闭fog和blur,除非初始时你的相机就在水下。
具体的脚本如下:
unity水下模糊效果
最新推荐文章于 2024-03-06 13:31:21 发布
本文介绍了如何在Unity中创建逼真的水下模糊效果,通过使用浅蓝色雾和blur技术,而不是依赖于景深效果。步骤包括使用立方体判断相机是否在水面下,添加blur组件,设置浓雾效果,以及编写脚本来控制fog和blur的开关,以达到水下视觉效果。


5305

被折叠的 条评论
为什么被折叠?



