Unity3D Water 真实水的设定技巧。现实生活中水是由氢与氧构成的。然而在Unity里头, 水又是由哪些东西构成的呢?

有很多不同的水类型您可以创建, 或是直接使用prefab. 为了要展现最新的水特效与脚本, 我将专注于Water4ExampleSimple assets这个场景资产, 基本上它内含几个3D meshes, 用来表现您水面效果。

WaterTile script

Water shader

一个空物件, 用来表示水放置的位置, 并带有:

一个水脚本 把颜色法线贴图与主要参数暴露出来

一个反射脚本

一个lighting脚本 用在高光特效

一个displacement脚本

最简单的方法是把把prefab拖到场景里面 指定您的cutom mesh

Assets > Import Package > Water (pro only)

在project window里头开启Standard Assets > Water(Pro only)资料夹,开启Water4资料夹,把Water4Example(Simple) Prefab拖曳到场景里面,选取其中一个tile meshes 到mesh component>点击右边的target icon 选取您的mesh (这个mesh必须要在你专案里面),如果你的mesh角度不对的话, 旋转Water4ExampleSimpleparent node 90度角,藉由移动parent node来移动您的mesh,移除第二的tile mesh。

设置

一旦你设定好mesh, 你就可以开始调整参数了,选取Water4ExampleSimplenode, 在inspector检视参数。

Water Base

Unity物体和水交互起水花和波纹 unity水在哪里_窗体

Unity3D Water真实水的设定技巧

这个脚本的功能是用来启动或是关闭即时的平面反射效果(planar reflections),

高光照明

你可以调整高光强度, 或是用拖曳的方式改变高光的来源. 这个来源可以是来自你的directional light或是场景中任何的物件, 不一定要是光源。

Gerstner(孤立波)Displace

这个参数你可以设定根据孤立波产生的演算法产生波浪效果。

水效果的小技巧

水会吸收红光, 然後反射出更多绿色与蓝色的光线. 而天空会让水呈现蓝色, 因此:最好不要直接把水表面的颜色设定为蓝色, 相反地, 你可以在水表面用绿色, 而水下面采用蓝色. 这样就能做出池塘感觉的幻觉了。而蓝色的颜色越深, 看起来水就越深. 你可以在水底部使用较深的颜色, 让refraction颜色更深。


Unity物体和水交互起水花和波纹 unity水在哪里_unity3d_02

Unity3D Water真实水的设定技巧

在tile上使用蓝色与绿色, 对比使用灰色与粉红色。细微的特效, 比较能做出写实的幻觉.。

法线的滚动率(Scrolling speed of normals )

Reflection
Refraction
Fresnel 与Normal strengths
Displacement

介绍一个实用的技巧: 把参数设为0, 然後慢慢增加数值, 直到调整到你想要的效果。

如果你的模型是凸面的(例如瀑布边缘), 在曲线的地方多加一点面数, 让水看起来有自然的弯曲效果。