會長之前做的2D的爆炸效果
我發覺,很適合拿來做Procedural Fx的showcase
今天就跟大家分享一下
大家都知道,Displacement是「透過Texture來影響物件」的一種方法
而這種方法是Procedural的
這意味著,可以隨時調節中間數值來改變最終成品,甚至做動畫
到底這過程一共用了甚麼Modifier?
又為甚麼要用這些Modifier呢?
會長把流程大致歸類成4大步驟,先簡單闡述一次,其後再深入討論今次的技術點
基礎正方形只有8粒點,我們的第一步就是要增加更多的點
這部分也稱做「增加物件的resolution」
Displacement允許使用數值來改變物件表面的高低
通常會配搭一張Texture來使用
考慮到之後要做動畫,所以使用Procedural的Noise來做texture
(而且noise是內建的,不用外接圖片,方便)
這裡其實使用一些複雜的做法,並不是普通的Displacement
包括了使用Vertex Group來做Displace,而不是一般直接用Texture
文章後半部會講解更多
大家所看見的「很多顏色的爆炸球」,其實就只是「很多個不同顏色的球」而已
我們這裡要做的,主要就是根據Texture的強度
用Vertex Weight Mask的方式製造出不同層次的球
先幫大家釐清概念
Texture驅動Displace Modifier,Displace Modifer又在影響最終物件
而為了方便控制Texture,我們需要用到Controller
無論是WeightEdit Modifier,還是Displace Modifier,都可以選用一個Object來輸入材質座標
不過Blender有Empty,基本上就是After Effect裡的Null
Empty雖然也屬於Object,但沒有可以用來render的點線面,你不會在最後render看見它
所以可以盡情拿來當Controller
用物件的location(移動座標)控制材質的coordinate(座標),做出「流動」的效果
用物件的scale(比例)控制材質的size(大小),做出密度上的變化
講述完「簡單流程」了
接下來,就是稍微比較深奧的技術探討
會長使用了兩個Displace Modifier,而且兩次Displace都是用了同一個來源
一般的理解,這樣做或許是為了達到雙倍的效果
為什麼不選擇直接把Modifier強度拉大,而要選擇用兩個Displace Modifier?
若是使用單個Displacement,單純增加強度的話
只會得到「在同一個方向上,越來越極端的變化」
但若使用多次Displacement
因為前一次的Displace已經造成了表面凹凸不平,導致其後Displace計算的方向也會有改變
相等於在Displace途中「重新取樣」了一次
令Displace不再只有「直上直落」,而是懂得轉彎,營造更「球型」的效果
不是直接使用材質來驅動Displace
而是先把材質圖轉化成Vertex Weight,再使用裝有Weight的Vertex Group來進行Displace
這有兩個原因
首先是一個有關準確性的顧慮:
在多次Displace的情況,每次的重新計算都可能存有誤差
例如「一張Texture,多次Displace」的做法
就是在利用,每次重新計算產生的「方向上的誤差」
例如因多次「重新計算」而產生的副作用:「位置上的誤差」
就能做到
而且Vertex Group做法還有另一個優點,就是⋯⋯
Vertex Group做法也能配合整體Workflow
Mask Modifier的Workflow(Mask Modifier需要使用到Vertex Weight信息)
可以透過調整Mask的Threshold,來「Hide」掉低於/高於某個數值的點
把各Layer的Mask Threshold數值,串連到一個新Empty上
就能做出控制各Layer「覆蓋程度」的Controller了!
以上就是本篇分享的主要內容了
在完結之前,會長也想向大家分享更多Procedural能做到的事
大家或許早已認識,但會長還是想簡短分享兩個Procedural Fx的大師
他們分別在2D風格與寫實風格,都達到一定境界
研究各種2D風格的Procedural特效,會長這次的爆炸球效果,也是學了這位前輩
他的2D風格爆炸教學,也已經收錄在站內的「教學整合」
用Procedural Texture混合做出像真火焰,而且免費下載
有關Procedural的更多內容,可以留意會長的另一篇文章
單用Procedural能到什麼程度|年度Nodevember
裡面有介紹到Nodevember
一個「以Procedural為核心技術」的一年一度的社群創作活動