薛山
所謂的漫畫著色效果,也就是體現(xiàn)在角色或物體上的一層層光暗漸變,在很多漫畫里都能看到這樣的效果,可以很明顯地呈現(xiàn)出角色的光影立體感。而在Blender里我們同樣可以實現(xiàn)這樣的效果,但實現(xiàn)的方式或許并沒有大家想象中那么簡單,本期我們就一起來一探究竟吧!
如果你的項目只需要使用EEVEE渲染器,那么漫畫效果的著色器實現(xiàn)就相對比較簡單,因為在EEVEE渲染器的著色器編輯器里有一個專用節(jié)點:“Shader到RGB”,也就是把原理化BSDR等著色器數(shù)據(jù)轉換成RGB色彩,這個操作就相當于直接讀取了物體對環(huán)境光的反射數(shù)據(jù),然后第二步就是利用“顏色漸變”等節(jié)點模塊來進行調(diào)整,大家可以自行設置自己喜歡的顏色,具體設置可參考圖1。
第三步,也是最關鍵的一步,就在于這套設計的原理是讀取物體對環(huán)境光的反射數(shù)據(jù),因此我們只需要移動環(huán)境光源,比如默認的點光源,就能看到這個漫畫漸變效果會跟隨光源方向和位置進行變化,所以它具備了一定的實用性。除此之外還需要提醒大家,在設置“顏色漸變”時最好是在原理化BSDF前連接一個“紋理坐標”并嘗試使用“物體”作為源,這樣在拖動“顏色漸變”的滑塊時才會獲得更加均勻的著色效果。
至此,EEVEE渲染器的漫畫渲染效果就算成功了,那么問題來了,“Shader到RGB”著色器只能在EEVEE渲染器下使用,但我們有不少工程其實在用Cycles渲染器,切換渲染器后就會發(fā)現(xiàn)咱們現(xiàn)有的這一套設置就不管用了,所以我們的第二步工作就是想辦法讓Cycles渲染器也能實現(xiàn)類似的效果!
從邏輯上來說,我們所需要的數(shù)據(jù)是光源與物體每個頂點之間的距離,然后通過數(shù)學手段篩選出想要的距離范圍并著色,就能獲得漫畫風格的層次渲染效果了。所以在Cycles渲染器里我們首先需要利用2個“紋理坐標”來獲取物體頂點與光源的距離信息,第一個“紋理坐標”選擇“法向”,因為法向具有指向性,而第二個“紋理坐標”我們需要選擇“物體”并新建一個空物體,之所以不使用光源作為目標物體是因為除了點光源之外,其他的光源類型往往需要旋轉角度,所以使用空物體是相對比較方便的手段,我們可以把光源設置為空物體的父級,這樣一來移動光源就相當于移動空物體,目的是一致的。
然后,我們需要把這兩個參數(shù)先進行矢量計算的“規(guī)格化”,這個設置是把它們的數(shù)值控制在0到1之間以保證不會溢出,接著用矢量計算的“距離”得到我們想要的距離值,具體設置參考圖2。
接下來我們就需要篩選出不同的距離信息來做漸變,這個操作可以通過“運算”的“大于”來進行控制,可以利用三組不同的“大于”值來得到三個不同的范圍,再各自都接上“顏色漸變”,并利用“顏色漸變”右端的顏色亮度差來進行區(qū)分,然后把它們通過“運算”的“相加”來進行合并。建議不要用到太多層,按照一般的漫畫風格來說,高亮、亮灰、暗灰和黑色就足夠了,最后再使用“混合RGB”實現(xiàn)上色,綜合設置可參考圖3。
至此,可隨光源變化的漫畫渲染效果就完成了,但注意,方法一在物體模式下旋轉物體時,光影效果會隨之變化,而方法二則必須應用旋轉才能看到光影變化,所以如果要做動畫效果,建議像圖4那樣給物體做一個簡單幾何節(jié)點,只需要在“組輸入”和“組輸出”之間接一個“變換”就行,這時候再調(diào)整“變換”的旋轉值就可以實現(xiàn)與方法一相同的效果了。
看到這里,有的讀者朋友可能會說“有那么復雜么?應該有更簡單的方法吧,比如層權重。”沒錯,層權重也是實現(xiàn)這一效果的方法之一,我們只需要像圖5那樣設置,就能獲得目標效果了。
但問題是,“層權重”的距離數(shù)值源自攝像機視角,它不能跟隨光源或自定義的第三物體來進行調(diào)整,所以它無法得到側光、背光等陰影效果,存在比較大的限制,這也是我為什么沒有首先推薦這個方法的原因。
其實我們上期就已經(jīng)強調(diào)過幾何節(jié)點的強大,雖然需要一定的數(shù)學邏輯思維能力,但一旦融會貫通,它就能快速高效地實現(xiàn)很多以往需要大量調(diào)參,甚至可能會出現(xiàn)不少錯誤的效果。所以在未來一段時間內(nèi),幾何節(jié)點都會是我們教學的主要目標,這種“編程思維”在3D設計中的重要性很高,大家務必要掌握。