![b20eae83189e9d4605bcace61a8eeed6.png](https://i-blog.csdnimg.cn/blog_migrate/5e1de67b2e4d7b442394410f8ca69934.jpeg)
导言
对于游戏场景来说,水流是动景很重要的一环。
传统的水面制作中,一般是做2-3个方向的波叠加,或者制作一个随机的flowmap,这样做出来的水面自然是没有灵魂的【手动滑稽】。
所以,这里我们用houdini来制作一个基于地形的flowmap,让场景拥有基于高度的水流效果。
首先,制作flowmap需要用到官方的Game Shelf,下面是github的链接,下载后按照说明加载到houdini环境即可。
sideeffects/GameDevelopmentToolsetgithub.com![5f0a4ec04d5deeeb1e63914cc4166968.png](https://i-blog.csdnimg.cn/blog_migrate/552a378cc0b5ec99025821cc0f2f7361.jpeg)
准备一个基础地形
还是一如既往的按照最简(lan)单(duo)的方法创建一个地形。
![93920c7314a512ca837c426b3d010e97.png](https://i-blog.csdnimg.cn/blog_migrate/c04c2c1c472ebee76db8455fece0ff5b.jpeg)
把hda扔进UE4,找一个河流,在上面铺上一层地形样条曲线。
![18576cc9e3640cd63af55cdaa0aee6a9.png](https://i-blog.csdnimg.cn/blog_migrate/d2e87127b91b0fe1f40eb4db8615eabe.jpeg)
为了方便看出水流情况,我们做一个比较明显的贴图。
![970b33849e252a25be5a7459ad143217.png](https://i-blog.csdnimg.cn/blog_migrate/1ac1b255004ea249ab5310796444d9b3.jpeg)
制作一个最简单的panner 材质
![7f41cce43f746ffe9ba06535d36694de.png](https://i-blog.csdnimg.cn/blog_migrate/07ffe693bd884fe7b65d6a293e8bed2a.jpeg)
嗯。初始的样子大概就是这样了,可以看出,相当的没有灵魂。
![c3a27c15e42db6b3154e277a2f28fefe.png](https://i-blog.csdnimg.cn/blog_migrate/abb9a98ee13c43519adc51d121a8bbd4.jpeg)
在houdini中制作flowmap
最上面的FlowMapTest就是我们上面所用到的基础地形节点。当然,也可以从UE4中把高度图导出到houdini。
我们把Hightfield转化为polygon,用于后续计算顶点数据。
可以用subdivide将整个地形分的更细,提高分辨率。
然后就进入计算flowmap了,这里我们用到了GameDev Flowmap节点,然后选择从Slope生成flowmap信息,勾上Visualize后就可以在houdini里看到顶点上的一根根“毛”了。毛的方向和颜色就是当前点的flowmap方向。
然后用Flowmap Color方法把顶点上的flowmap信息保存为Point的Cd颜色属性。
利用Attribute Promote将Point的Cd给到Vertex。
最后利用GameDev Simple Baker节点,配置一下生成的信息和生成路径,点击Render就可以生成Flowmap到指定位置了。
![c5a5bc34fb645875040b9cf0787d3283.png](https://i-blog.csdnimg.cn/blog_migrate/2a01e227d7747d5731d8b54c180326ea.jpeg)
emmmm这里因为不明所以的坐标轴问题,导出的图片要顺时针旋转90度才能和游戏中的地形对上。
利用UE4的Flowmap_Simple就可以把flowmap的信息和我们前面做的贴图叠加后输出材质了。
这里只是最最最最基础(实在是太懒了)的节点了,法线贴图,像素偏移和DepthFade折射都没有做。
【注:为了取到正确的信息,这里世界位置要准确的除以地形尺寸*100(这里是100900),如果地形不在000点,要把ObjectPosition也考虑进去】
【注:需要翻转y方向】
【注:红绿通道要剪去0.5来判断方向正负】
![8a9cc295cdba14a150359104472d11b3.png](https://i-blog.csdnimg.cn/blog_migrate/570c7e539550dee70fe6246bb718573e.jpeg)
下面就是见证奇迹的时刻了。
![2f750a603257c0f1de8bfb56b29b5e4b.png](https://i-blog.csdnimg.cn/blog_migrate/f563f46409b681af965736b132b0687f.jpeg)
![8875e175c93547f313c2f80a508077c2.gif](https://i-blog.csdnimg.cn/blog_migrate/4df5c5070d3da801bc662f1320bfc2cb.gif)
后记
上面只是Flowmap的最基本使用,在houdini中flowmap还有下面这些节点可以用,比如画刷,阻挡计算和引导线的节点,可以利用更多参数来制作flowmap。
比如我们做出来的波纹只有斜率方向的明显波动,就可以利用flowmap guide节点来赋予一个主体流向。
![de679a17ddd1712f9926690c59859bfe.png](https://i-blog.csdnimg.cn/blog_migrate/025b6257f7a9020a3ff4fa3d76326df3.jpeg)
最后一点:请用一台好一点的机器来跑houdini部分,并且注意保存!!!