導言

對於遊戲場景來說,水流是動景很重要的一環。

傳統的水面製作中,一般是做2-3個方向的波疊加,或者製作一個隨機的flowmap,這樣做出來的水面自然是沒有靈魂的【手動滑稽】。

所以,這裡我們用houdini來製作一個基於地形的flowmap,讓場景擁有基於高度的水流效果。

首先,製作flowmap需要用到官方的Game Shelf,下面是github的鏈接,下載後按照說明載入到houdini環境即可。

sideeffects/GameDevelopmentToolset?

github.com
圖標

準備一個基礎地形

還是一如既往的按照最簡(lan)單(duo)的方法創建一個地形。

把hda扔進UE4,找一個河流,在上面鋪上一層地形樣條曲線。

為了方便看出水流情況,我們做一個比較明顯的貼圖。

製作一個最簡單的panner 材質

嗯。初始的樣子大概就是這樣了,可以看出,相當的沒有靈魂。

在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到指定位置了。

emmmm這裡因為不明所以的坐標軸問題,導出的圖片要順時針旋轉90度才能和遊戲中的地形對上。

利用UE4的Flowmap_Simple就可以把flowmap的信息和我們前面做的貼圖疊加後輸出材質了。

這裡只是最最最最基礎(實在是太懶了)的節點了,法線貼圖,像素偏移和DepthFade折射都沒有做。

【註:為了取到正確的信息,這裡世界位置要準確的除以地形尺寸*100(這裡是100900),如果地形不在000點,要把ObjectPosition也考慮進去】

【註:需要翻轉y方向】

【註:紅綠通道要剪去0.5來判斷方向正負】

下面就是見證奇蹟的時刻了。

gif限制10M壓縮的細節都沒了,湊合看個意思吧。

後記

上面只是Flowmap的最基本使用,在houdini中flowmap還有下面這些節點可以用,比如畫刷,阻擋計算和引導線的節點,可以利用更多參數來製作flowmap。

比如我們做出來的波紋只有斜率方向的明顯波動,就可以利用flowmap guide節點來賦予一個主體流向。

最後一點:請用一台好一點的機器來跑houdini部分,並且注意保存!!!


推薦閱讀:
相关文章