Houdini學(xué)習(xí)筆記009
自學(xué)Houdini的路上很關(guān)鍵的一點是能否找到合適的教程,由于難度跨越比較大,找不對路很容易放棄。能咬牙堅持下來的都有其過人之處。對于一個復(fù)雜的效果,光用文字肯定是無法說清楚的,所以剛開始我還能每個節(jié)點告訴你有哪些參數(shù),應(yīng)該怎么使用。但越往后可能就不會詳細(xì)到這種程度,更多會講解效果制作的思路。等到文字描述無力時,應(yīng)該也就會嘗試錄視頻講解了。
今天來制作一個模擬枝晶生長的效果,用到的是solver解算器節(jié)點?;镜乃悸肥窃谝粋€球表面散布點,每個點的位置生成一個小球。然后作為一個整體在表面重新散布點,新的點的位置再次生成小球,如此循環(huán)往復(fù)。
這是一個非常簡單的迭代思路,如果是自己摸索的話我們應(yīng)該會想到用scatter節(jié)點和copy to points節(jié)點。球可以選擇polygon類型,我先散布5個點試試。至于球的大小可以自己設(shè)定。

第一次做完后,下面就是重復(fù)上面的步驟,這也是本案例的關(guān)鍵。創(chuàng)建一個solver節(jié)點,將散布點和拷貝球的相關(guān)節(jié)點復(fù)制到solver節(jié)點內(nèi)部(雙擊或按快捷鍵【I】)。如下圖所示,該節(jié)點內(nèi)有一個Dop?Import節(jié)點和多個Object Merge節(jié)點,前者就是每次迭代后的值。

將Dop Import和scatter節(jié)點相連,即每次重新輸入的對象表面重新散布點,這里散布的點的數(shù)目可以有變化,我暫時仍固定為5個。按【U】鍵回到上一個層級,將solver節(jié)點與第一步的copy to points結(jié)果相連接。

這個時候滑動時間幀應(yīng)該就可以看到小球不斷往外擴張了,如果要播放的話記住啟用Real Time Toggle,才會按正常幀速率播放。

這里我們要讓每次迭代的結(jié)果都保留顯示,所以要在solver節(jié)點內(nèi)部加一個merge節(jié)點。每次迭代的結(jié)果都和之前的一起顯示。

現(xiàn)在迭代就可以看到枝晶生長的效果了。

如果將后續(xù)迭代循環(huán)中散布點的數(shù)量增加至20,可以得到更多的分支。播放200幀后如下圖所示——

那如果枝晶是從一個平面上長出來的,我只希望它往上方生長,該怎么實現(xiàn)呢?對于這種要求,考驗的就是操作者的思路,實現(xiàn)的辦法可能有數(shù)十種。不同的方法得到的最終效果肯定也有差異。比如我是這樣考慮的,每次迭代散布點的時候,只在點坐標(biāo)y>0的表面散布。
有了思路后,在每次scatter前加一個clip節(jié)點,切除y<0的部分,效果立竿見影??梢钥吹街?span id="s0sssss00s" class="character selected js_checktext" style="">晶只會朝上方和水平側(cè)向生長。

也可以用delete節(jié)點,用按照表達式的方式(Delete by Expression)來刪除面(primitive),這里的表達式寫“@P.y<0”,即點坐標(biāo)y<0??傻玫胶蜕厦嬉粯拥男Ч?。

如果想讓枝晶生長有更明顯的朝上的趨勢,還可以根據(jù)當(dāng)前形狀的大小只在上半部分散布點。只需要將刪除的表達式改為“$BBY<0.5”即可,$BBY意思是元素在對象邊界框范圍內(nèi)的y方向相對位置,$BBY<0.5就表示下面的一半。這樣每次新的點只會散布在上半部分,如下圖所示,你也可以將0.5改為0.6或0.4,得到不同的生長效果。

比如我將刪除表達式改為“$BBY<0.8”,然后每次散布10個點,得到如下圖所示的造型——

最后可以用三個vdb相關(guān)節(jié)點將一堆小球轉(zhuǎn)為一體化的網(wǎng)格對象,可參考上一篇筆記,這里不做過多的詳細(xì)介紹。

簡單渲染如下——

今天就分享這么多內(nèi)容,感謝各位的閱讀,下回再見!