接上篇:楊超:houdini+unity河流(一)

視頻封面

00:07

本篇說foam mask的生成。

我用foam mask標記哪裡產生水沫,一般是石頭和河岸周圍,如圖:

當然,手繪是可以的,如果藝術造詣高,可以得到很好的效果。但作為鈦鉻泥垢artist,我們希望procedural。

生成foam mask分兩步:

第一步:生成foam源:

所謂foam源,就是foam從哪裡產生,很顯然,就是在水流被截住的地方產生,如果一處凸起的法線與水流方向點乘<0,就是被截住。這是最簡單的思路,此思路就生成下圖中右圖那種foam源(效果上很像漫反射著色,只不過光源方向變成了水流方向,不妨稱為:漫反射foam源)。如果稍加變化,用flow代替normal,則能生成下圖中左圖那種八字型foam源。當然也可再作變化生成更奇怪的foam源,隨便發揮,開心就好。

第二步:

foam由foam源產生後隨水流擴散,顯然這個效果可由directional blur模擬--沿著flow方向進行blur。如下圖中左圖,就是八字型foam源blur的結果。而下圖中右圖為漫反射foam源blur(同時又加了curl)的結果。(directional blur演算法末尾補充)

上面左圖適合表現foam受阻擋後散開的趨勢,右圖適合表現foam繞過障礙物後又在障礙物後方聚合的趨勢,兩種foam都有存在,所以我最終用的是兩者疊加:

--

補充:

directional blur演算法:

如果是在圖像上進行direcional blur,很容易,但現在是要在河面mesh的頂點上進行,其實也不難,只要用xyzdist+primuv組合即可,代碼如下:

--

下一篇說wet mask和depthmap。

下一篇:楊超:houdini+unity河流(三)


推薦閱讀:
相关文章