Unity學習筆記 vol.92 走近卡通渲染--關于Trick的二三事 ShadingModel 眼睛
純筆記,OCR加手動校正。?
原地址:https://learn.u3d.cn/tutorial/cel-shading-trick?tab=materials#617bc25fb945680020f292ea

來說眼睛,卡通的眼睛表達是比較隨心所欲的,不過大體上依舊遵循真實的眼睛特征,比如說它也同樣有著折射和焦散的體現。

先從眼睛的結構說起,眼睛制作的重點區(qū)域就是圖中的,瞳孔和虹膜部分,還有主體為鞏膜的眼白區(qū)域,瞳孔和虹膜區(qū)有,深度的一個主要原因就是存在前房這個空腔,這個空腔中充滿了房水,可以當做一個透鏡,右邊這個圖可以看出這種表現,這也是經常會在制作中去還原的特征。根據這些特征,眼睛上就區(qū)分了不同結構的制作方式,主要有復合結構的和單層結構的方式。

先來說復合結構,復合結構中眼睛的主體是凹陷進去的,這個是卡通眼睛中最常見的制作方式,這種方式可以自然的將眼睛的結構關系表達清楚,另外根據表現的不同呢,高光層會使用點狀的高光模型,就像左邊這樣或者是片狀的高光模型,片狀高光的復合結構實際上是,和寫實眼睛的制作比較類似的。然后是單層眼睛,對于單層眼睛來說,模型上就是通常是凸出來的,這種方式配合視差也可以很好的表現,眼睛的結構,在眼睛的表面還可以制作,動態(tài)的高光反饋。

然后對于單層眼睛的折射計算來說,主要有視差和物理折射這兩種方式,這兩種方式都是對 uv 偏移,然后進行采樣,視差是一種經驗模型,主要根據相機的位置去偏移 uv,而基于物理的折射呢,則是計算了折射光線的向量,使用折射光線偏移 uv,這里就不深入講解了。

我們直接來看一下,這兩種方式的效果對比,左邊呢是直接上貼圖,中間是基于物理的,右邊是視差的,對于卡通渲染眼睛來說,兩種方式從效果上來說差別并不大,物理折射在瞳孔偏移上要更符合直覺一點,不過是比較難以察覺出來的。

然后最后一點,動畫中眉眼去存在的一個典型特征,就是無論頭發(fā)是不是透明的,眉眼被頭發(fā)遮蓋的時候都會,顯露出來,還原的方式有很多,最直接的就是使用半透明的頭發(fā)還原,對于非透明色的頭發(fā)來說,可以考慮深度測試、模板測試,或者直接拿一張 RT去額外的畫出來,不過值得注意的是,這里是需要考慮眉眼還有,面部和頭發(fā)的排序有問題的。

ok,那么有了折射計算,然后加入明顯的遮擋顯示,這個時候再結合其他的表現,比如說高光了, 焦散和MatCap反射之類的豐富層次,我們就可以得到這樣的結果了。

最后一個就是皮膚,卡通的皮膚渲染主要和前面,說的光照計算有關,另外前面我們說過明暗交接線的計算,實際上也是皮膚上的特征之一,所以這里就主要說一下3 s ,對于皮膚來說,次表面散射,和高光會顯著的提高皮膚的質感,對于次表面散射來說,這是在生活中很常見的效果,比如說你迎著陽光去看手掌,會看到很強烈的透光效果,這就是次表面散射的體現之一,而對于卡通渲染中,也會去做相關的處理,根據風格可以主要分為兩種,首先是偏寫實角色上使用的次表面散射,比如說《鹿鳴》、《暖暖》這類偏向真實感的渲染,另一類就是對于《藍色協(xié)議》、《罪惡裝備》,這種塞露露卡通風格,會去做整體陰影顏色的改變。

先來說整體陰影顏色的改變,動畫中陰影偏色來源一般是皮膚的3 s 效果,和環(huán)境光照結合的夸張表現,在《罪惡裝備》中,是使用了一張紋理去影響陰影的著色傾向,就是右邊這張圖,這種對整體陰影顏色的處理會提升卡通化的觀感,并且也不僅限于皮膚上,衣服頭發(fā)之類的也會有所體現。另外如果是使用ramp來計算光照,就可以直接把影色添加到ramp圖中.

對于次表面散熱來說,這個其實是真實感皮膚渲染的范疇,真正的次表面散熱,計算消耗是比較大的,雖然有基于屏幕的5 s,和可分離的4 s 的快速計算,不過基于預積分查找的皮膚3 s的計算還是最經常使用到的方式,這種方式和ramp圖的計算是分類色,x 軸就是 n Dot l 用來控制光照,可以看作是單條的ramp,而外軸呢是由模型表面曲率決定的,曲率越大那個3 s 效果就越強。

然后來說一下高光,在真實感皮膚渲染中,高光是一個不可或缺的表現點,雙鏡葉高光就是將不同粗糙度下GGS高光混合,然后用于模擬真實皮膚表面的高光反射效果的。

將剛剛說的這兩個,表現結合起來就是非常類似于18年崩三分享中的做法,就是Diffuse ramp是對應了預積分LUT 的3 s,然后Specular ramp是對應雙鏡葉高光。

ok 這樣,我們的Shading model 的內容就講完了,下面再簡單的說一下形變和Tone Mapping,比較有意思就是,根據鏡頭對角色面部進行的修正,這一點是因為動畫表現中,角色的正臉和側臉,通常會有一定的形變和夸張,單純的模型制作,并不能完全還原每個角度表現,所以根據視角去混合對應的型面,用 bs 或者骨骼,來混合他的形變去表現正常的鏡頭效果是最終的解決方案。

最后來提一下后處理中的 Tonemapping,這是HDR數據映射到 LDR的過程,因為 LDR顯示設備只能顯示0-1區(qū)間的色彩值,所以為了將計算中大于1的,色彩值完整顯示出來,這就需要一條,在正無窮上收斂在1的曲線來映射。圖中的綠色曲線就是 ACES的映色曲線,ACES映射曲線的極限是1.03,就是相當于把0到正無窮的數據,映射到了0-1.03上,但是這就將原有的0-1的色彩,值映射到了0-0.8的區(qū)間上,這對卡通渲染的表現來說是比較致命的,特別是在膚色上。

右圖中就是將膚色經過ACES曲線處理的結果,這種色彩變化是卡通渲染不能接受的,所以一般會去修改ACES曲線的多項數值,去降低Tonemapping映射的影響,藍色的曲線就是一種修正后的結果,然后可以看到,將壓縮1到正無窮高亮度值的顯示期間,可以稍微緩解一部分彩色表現,所以在項目中,后處理的彩色表現就要在制作的早期,就要預先開始進行評估,然后這里就是ACES映射曲線,修改前后的區(qū)別,魔改的映射曲線,可以糾正一部分皮膚發(fā)灰的問題,就是上面這張圖和下面這張圖對比,然后其他的修改方式也有,比如反函數的Tonemapping計算,或者是對皮膚做亮度補償,或者直接不管使用伽馬流程,那畫出來什么就是什么,ok 全部內容就是以上這些了。