LV. 15
GP 305

RE:【心得】高品質卡通角色實現心得(shaderforge)會不斷更新效果做法->更新邊緣光部分

樓主 eddy21709
GP5 BP-
接下來講解面部補光+物體投影

首先先講物體投影的部分:
經過我們前面的效果做下來之後會發現有一個很重要的效果沒有出來 那就是物體之間的投影 那什麼是物體之間的投影呢? 簡單舉例來說就是頭髮應該要有陰影投影的臉上 這樣才會比較有真實感 很多動漫都有畫出頭髮的投影 被物體擋住的陰影等等 會顯得更加生動 但是~ 我們前面所做出來的多ramp上色 它的原理是物體的面向dot燈光的面向 就算被物體遮擋住還是不會有效果~ 我們先看目前效果圖:
很明顯的目前就只有物體自己的陰影 而沒有投影 那要如何製作出物體的投影呢?
這邊就要使用非常著名的shadowmap來計算渲染陰影 它的原理我做一個概略的解釋 首先我們把燈光當作我們的眼睛 我們眼睛所不能看到物體的部分(例如頭髮擋住臉的部分)就渲染上陰影即可 但是如果我們把所有的陰影的渲染上去 對效能很不友好 因此會使用屏幕空間 也就是攝影機的畫面裡才渲染陰影  這邊附上講解 有興趣的大大們可以深入研究:
如果有看過上面的文章 會發現要實現他好像很困難... 但是~~~我們有強大的Unity!!!  Unity裡面就已經有內建的shadowmap可以給我們使用了! 那要如何使用呢? 首先我們先看一下當前的場景
很明顯可以看到地板有接受陰影 為什麼我們的模型沒有? 於是我們先看一下物體的屬性:
左邊是地板的屬性 Cast shadows就是 是否接受陰影 但是明顯看到我們自己的模型也有打開這選項 但是卻不起作用 於是我們看材質 地板的材質是standard 有就是說問題是出在材質上面! Unity預設的standard材質其實是一個高級的材質 他有計算很多真實光照的效果 這也是為何一般會不建議使用這個材質 因為他是基於物理渲染的效果(PBR) 而我們要做的是非真實感渲染(NBR) 於是我們把地板材質換個試試:
我們把材質換成最乾淨的Unlit 很明顯發現陰影不見了 爾且場景整個變亮了 這是為什麼呢? 因為Unlit就是把貼圖上的顏色貼上去 任何光影都不起作用 之前的材質因為有被燈光影響 因此如果燈光的強度較弱 就會比較暗 並且會有區域性的不同 簡單說就是Unlit不受光
而我們目前所做的效果其實就是以Unlit為基礎進行變化的 前面解釋了一大堆 終於要告訴大家要如何獲取投影 這邊要獲取一個資訊: Light Attenuation 也就是燈光的衰減程度
他會計算前面提到的以燈光為眼睛所看到的物體 看的越清楚的就越接近1 越看不到的就越接近0 那麼我們使用此節點與我們效果相乘看看效果:
這邊我稍微改變一下燈光方向 可以看到燈光的方向是正上方大概45度左右照下來的效果 明顯可以看到 披風的部份以及頭髮已經有效果出現了 但是臉部的投影卻沒有 這是因為我們有數值沒有調整到
這邊簡單介紹比較重要的參數(這個地方在場景的主燈光的屬性裡有)
1.Shadow Type: 這邊有2種可以選 基本上我們就選Soft Shadows(軟陰影)效果會比較好 但是相對耗效能(應該是)
2.Strength: 就是陰影強度
3.Resolution: 陰影的品質 看需求要低或高 我這邊調最高
4.Bias: 這部分我目前的感覺是採樣陰影的遠近 但是看文章是斜度 希望有大大可以補充~ 把這個數值調低就會出現頭髮投影的臉上的陰影了~
但是~陰影加上去看起來好詭異= = 這是為什麼呢? 我們先看一下我老婆的圖:
上圖是3D所做出來的(之後我可能會考慮做做看這風格的效果) 可以看出來他的陰影其實是有顏色的 並且陰影是實的 不是前面那種虛的陰影 如果可以控制強度與範圍就再好不過 因此接下來要開始實踐這3種效果來控制陰影

那麼我們開始思考 現在的Light Attenuation(燈光衰減) 他的數值基本上是0~1之間 因此會有過渡也就是說過於寫實 我們要將它變成卡通風格這種比較實的效果 也就是說只有1或0 那麼有前面的經驗就很簡單了 做法跟邊緣光的改進基本上大同小異 使用step節點 自定義一個數值(假設0.5) 大於0.5的數值都是1 小於0.5都為0 就可以做到畫虛為實的效果! 以下為節點:
呃....感覺更嚇人了 因為顏色無法控制 我直接把顏色乘上去還是沒有辦法解決 因此這邊要用一個比較複雜的作法
首先我們先把經過step計算過後的分成2塊 一個會是像上圖那樣全黑我們叫他陰影黑 一個會是全白我們叫他正常白(因為只有1或0)  因為陰影黑他的數值都是0 因此無法改變它的顏色(任何色乘0都是0) 那麼我們用1減去陰影黑不就OK了嗎? 於是這邊就要使用節點One Minus
現在我們陰影黑的數值已經變成1了 我就可以使用一個顏色跟他做相乘 來做到改變陰影黑的顏色 並且把我們原本的顏色乘陰影黑原本的數值 最後加起來
恩...看起來還是很奇怪 因為我們的陰影沒有跟貼圖以及多ramp的效果合併 於是我們要再進行一波加工
這邊簡單講解一下 我們將我們原本的主顏色 也就是貼圖+多Ramp上色的最終效果 分成2個區塊 第一個區塊我們乘上陰影黑原本的數值(沒經過One Minus) 也就會變成前面那樣 陰影的部分全黑 第二個區塊 就是陰影黑經過One Minus之後 乘上一個陰影顏色 最後再把2個區塊相加 其實原理跟https://forum.gamer.com.tw/Co.php?bsn=60602&sn=5078是一樣的 都是分成2個區塊最後相加 最後效果如下:
從上圖可以明顯的看到加入物體投影的陰影(好饒口)之後 效果也提升許多 接著快速介紹一下面部補光:
還是同樣拿這張圖來做講解 但是何謂面部補光? 這邊又要提到物體法線的問題了 因為我們模型的臉部 當遇到光照之後 他的陰影呈現 並不會是像動漫那樣的陰影 因為我們為了美觀 2D繪師在畫陰影的部分會為了美觀而刻意去進行改變 但在現實上陰影卻不會是這樣呈現 但是動漫角色最重要的是在臉部 於是我們要進行一項加工 也就是改變模型的法線  那要如何改變呢?
經過我幾次的嘗試 我最後使用Blender這項很棒的3D建模工具 他可以將我們模型的法線方向 轉換成幾何體的法線方向 就可以做到面部補光的效果 順帶一提的是Maya也可以做到 3dmax貌似是無法 他只能一條一條的改.....
並且來看一下處理前後的效果差距吧!
以上面部補光+物體投影陰影完畢!
5
-
未登入的勇者,要加入討論嗎?
板務人員:

238 筆精華,10/12 更新
一個月內新增 5
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】