LV. 15
GP 250

RE:【心得】高品質卡通角色實現心得(shaderforge)

樓主 eddy21709
GP11 BP-
接下來開始詳細介紹一下每一個效果的作法吧~  基本上都是跟shader有關係的

1.外描邊(outline):顧名思義就是模型外面的描線 描邊有很多種作法 一種是用後製的shader有點像一種濾鏡 另一種就是最常用的沿物體法線擠出的作法 我這邊也是使用這個做法 shaderforge裡面就已經有做好外描邊給我們使用 使用方法很簡單 自定義一個數值連上去就好了 如圖:
另外這作法之前就有大大們討論這個方法 我這邊就不討論了 https://forum.gamer.com.tw/C.php?bsn=60602&snA=1086
但是這時候出現問題了 有的地方不希望有描邊 而且粗細大小都一樣 看起來沒有美感 於是這邊使用了模型頂點色(VertexColor)來進行控制 至於模型頂點色是啥鬼呢? 其實就是每個模型的頂點 都會有一個顏色數據 這個數據是為了讓我們可以在模型上進行不同顏色的加工 然後利用我們的shader來計算頂點的數值 來獲得特殊的效果 例如:Unity的粒子系統 他的顏色變化以及透明 其實都是用頂點色去做控制 下圖為3dmax裡的頂點色(一般來說默認會是白色):
而頂點色跟一般的顏色一樣都是有RGBA的 我這邊進行的加工就是利用模型頂點色的G通道(也可以用其他通道)跟我們向外擴的數值進行相乘 當G的數值越大 線就會越粗 G越小線就越小 做法如下圖:
效果對比:
可以看出有使用頂點色控制描邊效果差蠻多的(這邊只有做臉部的對比) 另外值得一提的是 要改變頂點色 可以用3dmax 裡面的指令:VertexPaint 但是使用3dmax來做有個缺點 就是來回切換很麻煩 3dmax裡畫好再放入Unity看效果很不直觀 於是這邊我使用Unity商店裡的PolyBrush 使用他來繪製頂點色 成效很不錯

接著還要進行一項加工 因為描邊的效果一旦拉遠 很容易造成遠看描邊的效果太細 很近看又感覺太粗 很難抓出一個比例 於是這邊進行另一個加工:隨攝影機距離外描邊會放大縮小 那麼要如何實現呢? 原理很簡單 就是抓出攝影機位置與物體位置的直線距離(要注意是世界位置) 並且以這距離跟外描邊相乘即可 如下圖:
View Pos即攝影機的位置 減去物體位置後 使用Length去計算他們的直線距離 再使用clamp0-1讓他們數值不要無限大 之後再把數值remap到1-2之間 最後與外描邊相乘即可 這個效果我試出來效果還不錯 如果有錯誤也歡迎指正~ 到這邊第一個效果講解完畢~ 之後會講解漫反射以及這次的研究重點之一 多ramp通道上色效果
11
-
未登入的勇者,要加入討論嗎?
板務人員: