接上篇:杨超:houdini+unity河流(二)
本篇说wet mask和depthmap。
一,wet mask
wet mask用来标记哪些部分被河水浸湿。
下面五个图依次是:
河面挤出,地形,河面减地形,河面减地形涂黑,颜色传递给地形(得到地形的wet mask)
石头的wet mask生成过程类似,之所以地形的wet mask和石头的wet mask分开生成,是由于两者的过度宽窄不同--地形粗糙吸水,过度宽;石头光滑,过度窄。
另外注意,houdini的attribute transfer节点是自带过度(扩张)功能的,主要靠这两个参数:
此处用这个过度比用attribute blur要好,原因是attribute blur只是blur,而不是扩张。
最终wet mask如下:
二,depthmap
depthmap是存河水深度,即河面各点与河床的高度差。以便用来控制水的透明度--越浅的地方越透明。
需要说明的是,用水的深度控制透明度是不对的,应该是用zbuffer深度控制水的透明度,如下图所示:
但手游中往往由于开销较大不让用zbuffer深度,所以只好用depthmap深度代替。
求depthmap,从河面各点向河床发射线即可,没什么可说的。结果如下:
至此河流制作中几个主要mask生成方法就都说完了。