您需要 登录 才可以下载或查看,没有账号?注册
x
水材质: 1.对法线做处理: Position节点:使用world空间位置,使顶点跟着世界坐标,用世界坐标采集UV,保持在放大、缩小等操作时UV不会乱。 1.2.提取从上往下看时的坐标x、z并combine成二维数组。
1.3.将世界坐标提取的UV作为一个缩放值。得到一个可以放大缩小的UV。
注:water big_uv是一个vector1值。 1.4.控制UV的挪动速度。 注:big_speed是一个vector1值。 1.5.整体的UV大小add每秒移动的距离得到UV的运动。 1.6.通过采样一张二维贴图实现水的流动 注:normal是texture2D类型的值。normal的类型mode为Bump。 1.7.连接到PBR master的normal上 注:Type改为Normal 1.8法线强度 注:normal_strength为vector1的值。 1.9第二层的UV 注:结构差不多,combine、time节点和normal贴图用的是同一个。 1.10通过Normal Blend节点使两层法线混合。 1.11平滑度定义 注:smoothness为vector1的值。 效果图: 2.水的深度处理: 2.1水是半透明物体 注:Surface类型改为Transparent。 2.2模型世界空间顶点减去相机位置得到一个向量 2.3得到的向量与相机的方向点积 2.4数值重映射 (1.点积得到数据可能会很大或者很小,因此将数值约束到0-1之间。 2.输入的最小值和最大值为相机的Y轴,约束对象为相机的Y轴。) 2.5手动控制depth深度。 注:depth是vector数值。 2.6利用默认的深度图将得到的曲线进行平滑处理 2.7水的最大不透明度为0.95 3.水的颜色 注:前半连法和深度类似。 3.1将平滑后的曲线转为黑白混合,并通过两个颜色结合输出到Albedo。 4.水的距离上的颜色变化 4.1通过世界空间与摄像机位移进行distance运算得到距离 注:红色的方框为需要连接的节点。 4.2进一步的得到可以调节的距离值的变化 注:fog_distance为一维向量vector1。 4.3将除以得到的值约束到0到1之间 4.4将0-1反转为1到0(用1-的方式:1-0=1到1-1=0) 注:个人理解:从向量与RGB颜色的转换理解上0显示的是黑色,1显示的是白色。而又因为远处应该显示的是黑色的(水在远处看到的是暗的),在向量上远处是偏向于1的,即0到1。因此这里矛盾了。所以将得到的距离的值进行翻转为1到0。对应的在远处0显示的为黑色、暗色。 4.5将得到的值作为黑白混合方式,并用color节点来定义黑的为什么颜色,白的为什么颜色。同时与之前得到的水的颜色混合,连接到Albedo端口。 5.水的波纹 5.1提取UV 注:第一张图片中的combine后蓝色线条连接的为第二图中的Multiply,bowen_uv为一维向量vector1。 5.2通过时间来影响UV的运动。 5.3通过voronoi节点(UV运动节点)来表现波纹的运动。 注:bowen_uv的值为5。 5.4将浅水区域进行波纹运动 注:smoothstep得出的是深水区域的值,因此利用one minus节点进行反转得到浅水区域的波纹。 5.5利用power节点进行开方处理,将波纹的密度减小。 5.6乘一个color使得更加贴合水的颜色。 注:bowen_color是color节点转换为输入端口(右键color节点,点击convert to property)。 5.7波纹的调整 注:波纹的流动和扰动速度应该是不一样的,扰动的速度应快一些,才能看到扰动的效果。 5.8波纹和深度和距离颜色变化的叠加。 注:上方的大方框是波纹,下方的方框是深度和距离的颜色变化。 6.输入端的数值。 注:更改默认的数值得到希望的效果。 Small_uv控制水流的速度。 ColorA控制的是深水区域的颜色。 ColorB控制的是浅水区域的颜色。 Big_uv和Small_uv控制的是水的起伏纹理的大小。 Depth控制的是水的深浅时候的颜色变化,与地形相联系。 Smoothness控制的是水受到光照时的反光的程度。 Depthcolor控制的是水的深水区域和浅水区域的范围。 Fog_distance控制的是摄像机观察与水之间的距离的颜色变化(即与lighting_setingd中的fog雾气效果类似)。 Bowen_uv控制的是水的波纹的大小。 Bowen_power控制的是波纹的扰动幅度。
|