Unity FlowMap制作水面材质
今天学习完了TA百人计划的FlowMap相关课程,自己尝试一下制作一个水的材质,实现一个简单的水面效果。
现在记录一下过程。
资源获取
水的贴图下载
水的材质网上有很多,我们可以去adobe的资源网站下载:材质下载(需要FQ)。
是一个这样的效果。
adobe资源导入unity
上面的材质下载完是一个.sbsar拓展名的文件,无法直接使用。为了导入Unity,adobe为我们提供了一个插件:
注意不是Substance in Unity,这个插件已经被官方下架了。
Unity安装完这个插件,可以直接把.sbsar的文件拖入Unity,上面的材质球会自动变成这些文件:
包括导入的设置文件,自动生成的材质球,和各种贴图(漫反射贴图,高度图,ao图,法线贴图,金属度贴图等)。
创建一个plane,挂载在上面是这个效果:
制作FlowMap
FlowMap的制作有很多,常用的有FlowMap Painter,Substance Painter - Flow Map Painting,Houdini等,我这里使用的是Houdini(FlowMap Painter也很简单,基本开箱即用)。
Houdini制作FlowMap
Houdini下载安装都很简单,唯一需要注意的是,Houdini不要下载19以上的版本,个人测试18.5没有问题,我这里第一次下载的是Houdini19.5,并且安装了最新的sideFX labs插件,最终在使用Labs Flow Map Visualize这个节点的时候报错了,提示脚本某个函数的变量对不上,本人又是新手不能自己排除故障,只好使用18.5版本,没有报错。
Houdini 的FlowMap生成也很简单,基本一路连下来就行。
grid节点把定点数增多,然后加入flowmap节点:
flowmap节点可以把Normal可视化,然后使用flowmap brush把节点的法线刷一下
基本可以认为这时法线方向就是uv流动方向。
然后flowmap tocolor节点可以把上面修改过法线后的颜色显示出来,最后用maps baker把贴图渲染到电脑磁盘上。
最终效果,免费版Houdini有一个大LOGO。
基本上贴图里颜色一样的块就是局部内流动的块。
Shader制作
把上面的贴图导入Unity,然后就可以使用这些资源实现一个基础的流动的水面效果。
Shader Graph连线
这组节点的意思是使用当前UV采样FlowMap贴图,得到当前UV当前的偏移矢量,在加上当前UV,得到位移后的UV,然后使用这个UV去采样我们需要的贴图即可,由于采样图片得到的结果范围是[0,1](0为贴图全黑的点,1为贴图全白的点),需要映射回[-1,1](-1表示u/v往左/上,1表示u/v往右/下)。把这个矢量乘以一个不断从0到1变化的函数,即可实现循环流动的效果,这个函数突变越少,效果越好。
最简单的周期函数是把Time截取小数部分的函数,图像如下:
但是这个函数每个周期结束到第二个周期开始有一个突变,最终效果也会有一个突然的变化,看起来不是很好
解决方法:可以采样两次,相差0.5个周期,然后施加一个变化的权重,这个权重在0.5秒的时候达到最小,这时第一次采样的位移量刚好最大,第二次采样的位移量到达一半,此时第一次采样完全消失,改为第二次采样的结果,如此循环,就解决了跳变的问题。
完整Shader Graph
效果
这是初步效果,后面可以加入法线贴图,高度图,顶点偏移,反射等实现更好的效果。
标签:贴图,采样,FlowMap,Unity,材质,Houdini From: https://www.cnblogs.com/luoxiaozhu1998/p/17099274.html