🙃 9.臉部陰影貼圖 - 製作、烘培流程
1.臉部陰影貼圖介紹
卡通渲染人物時,在臉部常見破碎的明暗變化,這種破碎的明暗變化主要是因為人物臉部的法線較為複雜,但對於簡化光照的卡通渲染來說反而會造成破碎的受光區與不受光區。
常見的解法是在第三方DCC中使用proxy normal或者手動修改模型法線,以及使用臉部陰影SDF圖。
臉部陰影貼圖是我覺得CP值最高的做法,對美術來說這有著高度的可控性而且不像修改法線一樣耗時,因此,ASP/Character shader的Face模式支援使用臉部陰影SDF圖,並且提供將手繪的貼圖烘培為臉部陰影貼圖SDF的工具。
套用前

未使用臉部陰影貼圖
套用後

使用臉部陰影貼圖後
2.製作臉部陰影貼圖
1. 手繪貼圖
首先 - 根據模型uv unwrap後的臉部繪製9張貼圖,ASP/Character shader的Face模式下,有提供選擇貼圖使用的UV通道(UV0~UV3)的選項,因此你可以在DCC中選擇使用既有的UV通道或者根據臉部陰影貼圖在新的UV channel中做uv unwrap。

將0~180的光照角度分為9個角度,並且依照光照對單側臉部的變化,畫出9張貼圖。

最後將畫好的9張圖import進unity專案。
💡 並不限制一定要9張,圖越多越能在不同角度的光照中做更多細微的操作,圖越少控制程度越低,且在光照角度變化時會有較大的明暗跳變。(從前一張圖跳至下一張圖)
2.使用ASP SDF Generator烘培與合併SDF貼圖

在Unity專案內,上方視窗列選擇Tools→ASP→SDFGenerator,開啟sdf generator window。
將前一段落中製作好的9張圖拉近source textures array內,這9張圖會作為生成SDF的source texture。
設定好GroupName(產生出的貼圖的命名抬頭),並且指定欲產生貼圖的路徑。
點擊Create SDFs & Merge,它會將9張貼圖計算出的SDF合併為單一一張,即是我們的臉部陰影SDF圖。

以上圖為例,我只需要UnityChanFace_merged,其他產出的圖僅作參考,可以刪除。
回到使用於臉部的材質球, 1️⃣ 渲染風格 Toon Shading Style 設定為Face。

這樣該人物的臉部的陰影貼圖就設定完畢了。
3. 設定Head Bone Transform讓臉部的光照計算可以跟隨人部的頭部
臉部陰影貼圖在Shader中做計算的時候,預設會使用ASP Characte Panel物件的正前方作為臉部朝向,
ASP Character Panel內提供了一個參數讓臉部的光照計算可以跟隨人部的頭部 :
移動至在ASP Character內的Light Direction Param
將人物的Head bone assign至Head Bone Transform中
使用Face mode的ASP/Character Shader會使用該transform的朝向作為臉部的朝向來計算光照。
