薛山
滴水波紋是視覺(jué)特效里最基礎(chǔ)的效果之一,在很多渲染項(xiàng)目中都有大量使用,不過(guò)滴水波紋效果往往需要液體物理模擬才能實(shí)現(xiàn),而即便是想要避免物理模擬,傳統(tǒng)思路也需要使用動(dòng)態(tài)繪畫(huà)等方法來(lái)實(shí)現(xiàn)近似的效果,那么,有沒(méi)有既不需要建模,也不需要物理模擬和動(dòng)態(tài)繪畫(huà)的方法呢?
簡(jiǎn)單來(lái)說(shuō),滴水波紋其實(shí)就是部分頂點(diǎn)的上下起伏,而這種起伏在著色器編輯器里就可以用“置換”來(lái)表達(dá),所以在著色器里我們只需要定義哪些位置需要“置換”,而置換的強(qiáng)度變化又是怎樣就行。
首先,我們新建一個(gè)平面,并給它賦予一個(gè)7級(jí)的表面細(xì)分修改器,接下來(lái)在材質(zhì)屬性里將置換設(shè)置為“置換與凹凸”或“僅置換”,這是Cycles渲染器實(shí)現(xiàn)置換效果的前提。然后就進(jìn)入著色器編輯器界面。因?yàn)槲覀兊牡嗡y效果是從中心向四周擴(kuò)散,所以首先我們要獲得從中心到四周的距離,這時(shí)候就要用“紋理坐標(biāo)”連接“矢量算法”的“距離”,如果你想要自定義中心點(diǎn)的位置,可以在視圖里新建一個(gè)空物體,并設(shè)置為“紋理坐標(biāo)”的“物體”。
接下來(lái),我們需要連接“乘加”“分?jǐn)?shù)”和“顏色漸變”,這三個(gè)節(jié)點(diǎn)的功能就是定義一圈圈的滴水波紋的發(fā)生位置、頻率和高低落差,最后用“置換”節(jié)點(diǎn)連接“材質(zhì)輸出”的“置換”,完成后可以得到如圖1那樣有一圈圈均勻高低起伏的滴水波紋圖樣。
那么問(wèn)題來(lái)了,滴水波紋都是隨著傳播距離的增大而逐漸消失的,這種均勻分布顯然不符合視覺(jué)邏輯,因此我們還需要在“矢量算法”的“距離”后方單獨(dú)接一個(gè)顏色漸變,以它作為乘數(shù),讓距離中心點(diǎn)越遠(yuǎn)的位置乘以一個(gè)越小的數(shù)字,從而實(shí)現(xiàn)中心高、四周低的波紋形態(tài)。
這時(shí)候的波紋看上去顯得有些單調(diào),沒(méi)有水花激蕩的感覺(jué),為了增加波紋的隨機(jī)性,可以在最前端的“紋理坐標(biāo)”后添加一個(gè)“噪波紋理”,并以“線性光”進(jìn)行混合,具體的設(shè)置和效果可參考圖2。
不過(guò),使用置換來(lái)制作滴水紋理的缺點(diǎn)也很明顯,就是必須在Cycles渲染視圖下才能被正確應(yīng)用,其他任何視圖模式都不行,考慮到越是擬真,就越需要使用大量頂點(diǎn)數(shù)據(jù),所以這個(gè)方法對(duì)電腦硬件配置的要求更高。
如果你的電腦性能一般,或者并不想消耗太多的時(shí)間來(lái)等待Cycles渲染,那么換個(gè)思路,利用幾何節(jié)點(diǎn)來(lái)制作滴水波紋效果,因?yàn)閹缀喂?jié)點(diǎn)是不挑渲染器的,EEVEE也能正常工作。
節(jié)點(diǎn)設(shè)計(jì)的邏輯其實(shí)和方法一相同,只是細(xì)節(jié)設(shè)計(jì)上有些不一樣,首先我們還是新建一個(gè)平面,然后在幾何節(jié)點(diǎn)編輯器里添加7級(jí)以上的“表面細(xì)分”,再連接“設(shè)置位置”,我們的幾何節(jié)點(diǎn)功能就需要從“設(shè)置位置”的“偏移量”來(lái)入手。
接下來(lái),我們要用到“矢量算法”的“距離”節(jié)點(diǎn),但這次是和“位置”進(jìn)行連接,而“距離”的另一個(gè)數(shù)據(jù)接口可以連接空物體,這時(shí)候可以直接把空物體拖進(jìn)幾何節(jié)點(diǎn)里進(jìn)行連接,但注意要選擇“相對(duì)”。
然后我們需要一個(gè)“減法”“乘法”和“正弦”,同樣是控制滴水波紋的頻率和位置,然后連接“矢量算法”的乘法,注意這里我們只需要在Z軸上做乘法就行,否則會(huì)出現(xiàn)偏移誤差。而這一步完成后我們就又可以得到如圖3所示的均勻分布滴水波紋了。
與著色器方案一樣,到這一步的時(shí)候我們需要解決的問(wèn)題就是如何添加隨機(jī)性,并且降低滴水波紋的邊緣區(qū)域高度,隨機(jī)性我們同樣可以使用“噪波紋理”來(lái)解決,但這次添加的位置就不是在節(jié)點(diǎn)的最前端了,而是在“正弦”后,將“噪波紋理”和“矢量算法”的“縮放”通過(guò)“矢量算法”的“乘法”進(jìn)行連接,這樣一來(lái)我們就獲得一個(gè)表面細(xì)節(jié)豐富的水面效果。
至于邊緣高度降低,需要在“距離”節(jié)點(diǎn)后加入一個(gè)“算法”的“相減”,這樣可以得到一個(gè)中心高、四周低的效果,然后再接一個(gè)“算法”的“相乘”并通過(guò)“合并XYZ”進(jìn)行連接,就能得到如圖4那樣的滴水波紋效果啦!
從效果來(lái)說(shuō),兩者都有著比較強(qiáng)的可控性和可玩性,對(duì)于大多數(shù)Blender玩家來(lái)說(shuō)應(yīng)該都沒(méi)有太大的難度,考慮到無(wú)論著色器的置換還是幾何節(jié)點(diǎn),在動(dòng)畫(huà)制作中都起著舉足輕重的作用,因此我們還是認(rèn)為這兩種方法都值得大家學(xué)習(xí)。當(dāng)然,如果硬要二選一的話,能夠同時(shí)支持各種渲染器甚至實(shí)體視圖也能預(yù)覽的幾何節(jié)點(diǎn)方案可以更優(yōu)先學(xué)習(xí)。
對(duì)了,可能有讀者朋友會(huì)覺(jué)得直接使用置換修改器,并添加環(huán)狀木紋作為紋理也能實(shí)現(xiàn)類似效果,從方法來(lái)說(shuō)的確是可以的,但由于系統(tǒng)自帶的紋理不能做動(dòng)畫(huà),因此我們需要額外制作一個(gè)黑白相間的圓環(huán)動(dòng)畫(huà)來(lái)作為置換紋理才能真正實(shí)現(xiàn),但這個(gè)方法不能即時(shí)調(diào)整參數(shù),所以我們并沒(méi)有推薦。