薛山
一般情況下我們想要在Blender里鋪設一條鵝卵石道路,你會怎么構(gòu)思呢?是不是先做幾顆鵝卵石,然后再做地面,然后利用粒子系統(tǒng)讓石頭作為毛發(fā)?這個方法雖然理論上可行,但存在幾個問題,第一是粒子系統(tǒng)有比較嚴重的實例重疊,也就是石頭與石頭之間會存在穿模問題,第二是我們沒有辦法復用這套系統(tǒng),比如我像讓我剛做好的房子也搖身一變成為石頭房,就只能重新做一套粒子系統(tǒng),而且大概率還會出問題。而解決的方法也很簡單,那就是用幾何節(jié)點來自動生成“鵝卵石”!
以鵝卵石鋪設的道路為例,它們最大的特點就是幾乎沒有擺放的規(guī)則,以無序的組合構(gòu)建了一個有序的物體,所以我們要做的第一件事就是打破物體的既有網(wǎng)格布局,在這里我們就以最簡單的“柵格”為例,新建任意物體進入幾何節(jié)點編輯器,用“柵格”連接“組輸出”,我們默認會得到一個3×3總計9個頂點的平面,在這里我們稍微調(diào)整一下數(shù)據(jù),比如3m×3m以及X/Y方向各20個頂點,接下來要做的,就是讓這些一個個的小格子都變化出不同的形狀并向上擠出,以獲得滿地“鵝卵石”的視覺效果。
緊接著我們要用三角化和對偶網(wǎng)格來讓這些小格子都變成菱形,并且我們需要使用“隨機值”的“布爾”來控制“三角化”的范圍,具體設置可以參考圖1。
這樣做就是為了讓這些小格子有更多的隨機屬性,但顯然這幅度并不夠,因此我們還需要讓“柵格”的每個頂點位置發(fā)生一些偏移,這就需要用到咱們非常熟悉的套路——使用“噪波紋理”和“矢量相減”“矢量縮放”“矢量相乘”和“設置位置”來讓“柵格”的頂點在X/Y方向產(chǎn)生隨機位移,就能獲得如圖2的效果了,這樣看上去是不是就有點像鵝卵石路面了呢?
通過第一步我們已經(jīng)得到了一個個的小方格,那么問題來了,該怎樣讓它們一個個分開來向上擠出呢?首先,我們需要使用“拆分邊”來讓每顆“鵝卵石”都成為獨立的個體,這里也可以用“隨機值”的“布爾”來進行選擇,這樣有的石頭會明顯更大,有的更小。
然后再使用“縮放元素”來控制它們每一個的大小,這里可以用一個“隨機值”來讓每個“鵝卵石”的縮放都有所差異,接下來就是最重要的一步:“擠出網(wǎng)格”,這是Blender 3.1之后才有的功能,也是為什么我們建議大家一定要用最新版本的原因,擠出的“偏移比例”我們同樣需要用一個“隨機值”來賦值,畢竟沒有完全平整的鵝卵石道路嘛,而且記得取消勾選“各面”,這樣我們剛剛在“拆分邊”做的石塊大小區(qū)分才能正確顯示,這一步的節(jié)點可以參考圖3。
最后,也是最關鍵的一步,讓我們的每一顆“鵝卵石”都變得更圓滑,畢竟我們剛得到的是一個個的棱角分明的“石柱”,這里就需要用到“表面細分”,“鵝卵石”的形狀立馬就呈現(xiàn)出來了,這時候可以適當調(diào)整“折痕”值以獲得更真實的效果。
此時我們還可以更進一步,因為即便是鵝卵石,但表面依然還是有一定粗糙度的,所以我們還可以繼續(xù)利用“噪波紋理”和“矢量相減”“矢量縮放”“矢量相乘”和“設置位置”這個組合來讓“鵝卵石”在Z軸方向讓所有的頂點進行隨機偏移,最后再加一個“設置著色平滑”,進而獲得如圖4的效果。
本文所用幾何節(jié)點編輯器一覽
這個設計最妙的是可以直接套用到任何模型上,而且我們可以把關鍵功能,比如細分精度等連接到“組輸入”,這樣一來哪怕不進入節(jié)點編輯器,也能在修改器標簽里進行數(shù)據(jù)的調(diào)整,非常方便。事實上本期的內(nèi)容雖然節(jié)點比較多,但從邏輯上來說并不復雜,只是需要大家牢牢理解并運用各個節(jié)點的基本功能,算是一個基礎練習的好案例吧。