前情提要
最近在研究怎么獲得圓滑的頭發陰影,發現可以通過修復法線的方式輕松實現該效果,於是趕緊寫篇博文記下來免得以后忘記...
如果你能順利掌握這篇文章中的奧義,你就可以將不規則的頭發陰影:
變成這樣圓滑好看的頭發陰影:
前期調研
(此部分記錄調研歷程,不想看的同學可以直接跳到后面的具體實現)
之前看大佬們教程的時候,頭發陰影這一塊總是輕描淡寫地就過去了,然而作為一只萌新小白只能表示一臉懵逼。直到最近在B站上看到IOchair大佬在Blender里用到Abnormal插件進行法線修復,於是又仔細搜了搜。最后發現這篇英文教程講得十分細致,值得借鑒。
具體實現
以下是俺的大致實現流程:
(1)
到github上下載Abnormal-master.zip文件並安裝,裝好后記得啟用該插件:
(2)
用MMD插件導入一個原神模型(例如托馬),把模型按材質炸開(如果要導入MMD動作最好先導入動作再炸開,不然我的模型不會動不知道為啥):
(3)
添加一個日光,設置好角度,可以看到頭發陰影比較不規整:
(4)
選中頭發,點擊Start Normal Editor按鈕:
(5)
可以看到面板里有很多功能,想有更深入的了解可以參考后面的參考資料。覺得法線太長的話可以調整Normals Length降低其顯示長度。這里先按下A鍵全選所有頭發頂點(沒分離面片的話就可以按下C鍵慢慢刷了),然后面板中找到Sphereize Normals按鈕,這個表示將球體法線傳遞到模型頂點上(應該是這樣理解吧):
(6)
然后可以看到一個橙色的球體,半徑應該沒啥關系,只需把球體中心平移到使得陰影看上去平滑的位置(按下G鍵然后x鍵/y鍵/z鍵拖拽)。如果不想太圓滑也可以設置Sphereize Strength大小調整混合比例。最后記得先按下Confirm Sphereize再按下Confirm Changes來保存當前法線修改(如果不需要進一步編輯也可以直接按Confirm Changes):
(7)
然后把模型導出成FBX再導入到Unity中(記得在導入選項中把Normals改為Import),替換成之前的材質就完成了,是不是超級簡單:
其它部位也可以用類似方法調整陰影形狀,不過有時候調整法線是很tricky的事情...而且由於調整了法線,所以可能導致跟法線計算相關的輪廓線以及邊緣光的效果發生變化,這些都是需要考慮的。比如上圖直接把頭發邊緣光給關了,不然會出現大片不正常的邊緣光:
不過人家原神里面有的時候頭發也沒邊緣光嘛(終於給自己偷懶找到了借口233):

當然也可以狂按Smooth selected normals直到滿意為止:

參考資料
Normal Spherizing using Abnormal
Abnormal Installation & Explanation (In 3 Minutes!!)
abnormal-wiki
騰訊TA大咖分享,做卡通渲染時對風格和影視化的探索
網易TA大咖帶你走近卡通渲染,講解關於Trick的兩三事
blender中使用原神mmd模型附帶的ramp貼圖過程錄屏
