【技術美術】卡通風格渲染

卡通風格渲染是模仿人的手繪風格,而人的手繪也是對現實光學的模仿,所以卡通渲染的光照計算原理和PBR是一致的。但由於人力有限,沒法非常寫實(降低色階、簡化陰影),繪製時還需要打線稿輔助(描邊),所以構成了一種獨特的卡通風格,通常來講它的特徵如下:

  1. 色階化:顏色過渡沒用現實中的精度高,所以通常會有較硬的顏色轉折。
  2. 明暗分離:畫面具有清晰的明暗區域,且兩者通常不是簡單的亮度變化。
  3. 非真實陰影區域:陰影區域與現實存在較大差異,因為畫家會避免在特徵點繪製陰影,且陰影區域更簡單連續。
  4. 非真實物理性質:通常不滿足能量守恆,高光效果也與現實差異很大。
  5. 輪廓線:卡通畫一般是先畫線稿再上色,也因此在後來構成了一種獨特的輪廓線風格。

色階化

反光受兩種參數影響,物體本身的反照率、相對燈光的輻射率,故兩者都需要考慮色階化。

反照率色階化

不需要專門實現,因為卡通渲染中的反照率貼圖本身就是卡通化的(色階化)。

輻射率色階化

由於反照率本身一般就是色階化的,所以不建議對作為係數的輻射率進行高度明顯的色階化處理。不過輻射率可用於區分明暗部,通常卡通渲染只會有一兩個暗部,所以專門針對明暗區間進行色階化即可。所以直接夾緊輻射率的0-1區間即可,這樣會產生一個明顯的明暗分界線。

高光色階化

高光係數也需要色階化,故高光邊緣不能太柔和。建議直接用 Blinn,這個相比 GGX 更卡通,而且可以將次數和係數計算拆開,便於實現 LUT 重映射。

明暗分離

卡通渲染中,燈光衰減不是線性的,存在明顯的明部和暗部兩個區域。由於燈光是實時的,所以明部和暗部必須拆分處理。

明部

卡通渲染中反照率貼圖默認就是基於明部的,所以明部不需要專門處理,直接混合上色階化後的輻射率就行。

暗部

暗部也可以由畫家來繪製貼圖,但更簡單的做法是利用明部計算暗部顏色。最簡單的可以直接給明部乘一個純色,或者提供一個梯度漸變,這樣產生的暗部效果更好,自由度更高。

非真實陰影區域

字面意思,不要用模型默認計算的法線,建模時利用法線映射,將凹凸區域也搞成平滑的法線。

輪廓線

實現方法很多,不多説。

實現概述

  1. “色階化”和“明暗分離”統一用LUT進行輻射率重映射即可實現。
  2. “非真實陰影區域”在建模時專門處理一下法線即可。
  3. “輪廓線”就是加個描邊特效。