对《GGX》shader的分析-卡通渲染-罪恶装备
轉自:https://www.element3ds.com/thread-151972-1-1.html
Guilty Gear Xrd的日漫風shader一直被看作是業(yè)內(nèi)這方面的標桿。幾年前看了GGX的制作人在GDC上講他們的shader,我當時出于好奇就研究了一下日本的卡通shader。
GDC視頻鏈接:https://www.youtube.com/watch?v=yhGjCzxJV3E
先放張我在UE4里的還原圖(模型是游戲里的,我只是做了material)。
我的實驗(UE4)
原作中的模型渲染效果(UE3)
一、貼圖和輪廓線
左上為影貼圖,右下為通常色貼圖
通常色貼圖:Diffuse,除眼睛外全為顏色平涂
影貼圖(日漫shader獨有,分一影色/二影色/等):GGX只有一影色貼圖,開發(fā)者稱其為SSS貼圖,假次表面貼圖,其代表的是暗部的色彩傾向,能夠計算出某種材質被光透過的程度。通常使暗部皮膚偏紅,衣料等偏藍紫。在GGX中,陰部位的顏色通過SSS的信息和環(huán)境光信息做乘法得到。
ILM貼圖
ILM貼圖:
R通道
R通道:高光的進入傾向。金屬和光滑部位的值稍大。影響高光的顏色。
G通道
G通道:影的傾向權重,假AO,下巴內(nèi)側、頭和下巴結合處等。此陰影不受物理光影響。
B通道
B通道:高光的強度,與fresnel(本身須計算得出)的強度對比來決定。fresnel值越大,高光越強。影響高光的形狀。
左圖為a通道,右圖為本村式線
通過本村線來調(diào)整模型上線的粗細
a通道:物體內(nèi)部的線條。GGX貼圖采用獨特的uv分布方式(本村式線),其原理在于用垂直的黑線來表示內(nèi)部黑線,從而防止45度線導致的近視角線段鋸齒情況的發(fā)生。
“請務必記住本村式線這個概念,后面會講到”
GGX里的高光是要用非物理思維去理解的。在日漫中,不論是高光還是陰影要表現(xiàn)的都不是物理光的模擬,而是形體和材質的塑造。高光在日漫里出現(xiàn)在形狀凹凸明顯和材質發(fā)生改變的邊緣地帶。
物體外部線條通常用backface culling/hull shader的方法做,GGX用了vertex painting的方法使外部線條可以有粗細變化。
GGX中vertex color的應用:
R通道:判斷陰影的閾值對應的Offset。1是標準,越傾向變成影子的部分也會越暗(接近0),0的話一定是影子。ILM里G通道(AO)的遮罩率系數(shù)。
G通道:對應到Camera的距離,輪廓線的在哪個范圍膨脹的系數(shù)
B通道:輪廓線的Z Offset 值。背面膨脹在z軸(遠近軸)上的系數(shù)。
a通道:輪廓線的粗細系數(shù)。0.5是標準,1是最粗,0的話就沒有輪廓線。
可以看出。R,B通道控制輪廓線的有無;G,a通道控制輪廓線的粗細。
二、Softimage流程,頂點法線與影子
左圖為一般形式的法線,右圖為3DCG流程中調(diào)整過后的法線
面部:通過美術的手調(diào)產(chǎn)出滿足多角度觀看的美觀陰影分布。要用到XSI(Softimage)的插件User Normal Translator。為了方便觀看效果,需用cgfx語言做出實時shader,與ue藍圖效果一致。
除臉部的其他部位:用Maya做出簡單幾何體,Mesh>Transfer Attributes,enable only vertex normals,將頂點法線信息轉移至目標部件上。
影子:美觀的陰影用簡化的模型替代原模型影子得到。
三、UE4中的設置
GGX shader
模型構成:
模型組:主模型(unlit),輪廓線模型(有更多方法做輪廓線),影子模型
材質構成:
GGX shader,輪廓線,發(fā)光物體,Logo
collection parameter在藍圖中的設置
光:UE4和UE3的光照系統(tǒng)變化很大,其實光向量在UE4中很好自定義。做一個collection parameter,把你要的光向量放進去就行了。
四、GGX流程中的UV和Logo
3DCG流程中,模型的UV一般都很難看(不僅GGX是這樣,塞爾達也這樣)
下方的UV shell為了抗鋸齒用到了本村氏線的做法擠壓成了上方這樣的方塊
當時制作本村氏線的UV要花很大的精力,然而我最近看到Maya 2018出了個新功能,叫做Straighten UV,可以一鍵把UV上的頂點排在一條直線上。這個功能美國PBR流程用來展頭發(fā)的UV,日本3DCG看來是要用到制作本村線上了。
logo
值得一提的是,logo和發(fā)光材質是通過額外的兩張貼圖來表現(xiàn)的,由于不是按照本村線UV來制作logo,所以logo是不抗鋸齒的。所以本村線這個技術本身是有局限性并且費時費力的。
五、和崩壞3的比較
現(xiàn)在來看看崩壞3是怎么借鑒GGX的shader制作法的。
崩壞3的身體部分把假AO和線條信息(GGX里的G通道和a通道)合在了一起放入G通道
崩壞3也沒有用本村氏線的辦法展UV,ILM貼圖中沒有a通道,只有RGB通道
LM貼圖:左圖是臉部,中圖是頭發(fā),右圖是身體
臉部的Diffuse貼圖
崩壞3沒有影貼圖,而是在DIffuse貼圖上直接畫上了陰影,讓下顎和耳朵內(nèi)部等部位在任何情況下都要暗一些。面部的假AO在細節(jié)上比身體部位豐富很多。頭發(fā)因為材質一樣,所以沒有R通道,但假AO和高光進入信息都是有的。
六、總結
我看了U3D日本峰會上關于卡通shader的講座,感覺和GGX在思路上基本一致。日式卡通shader對美術要求高,對技術要求低。在搭建shader制作流程的時候,首先想到的是畫法(囧rz)。然后把畫法解構成配色,影和輪廓線。
GGX對這三者的處理有自己的思路,其中本村氏線是GGX所獨創(chuàng)。由于是格斗類游戲,會出現(xiàn)大量特寫鏡頭,抗鋸齒的輪廓線發(fā)揮了決定性的作用。
最后分享一些能代表日本3DCG制作思路的圖。3DCG的制作思路就是我2D怎么畫我3D就怎么做... 其實就是這么回事。
日本人對分層渲染的理解...就是分層上色
日本人對shader的理解,流程步驟的不同取決于畫法的不同...
不存在高端的算法,一個內(nèi)積就夠用了
轉自:https://forums.unrealengine.com/community/work-in-progress/96766-guilty-gear-xrd-shader-playground
Guilty Gear XRD Shader playground.
https://www.youtube.com/watch?time_continue=8&v=vYI5GKWObdo&feature=emb_logo
Sure, they are fairly simple.
First the cel shader which is applied to the mesh. The light direction is just a directional light with the forward vector passed in through a material parameter. The material is Surface / Opaque / Unlit
Then the inverted hull shader is a surface, masked, unlit two sided.
Even more progress has been made! I (think) I figured out what the extra data I had was used for and put it to work.... I believe it's correct because it looks even better now. She now has weighted shading on individual parts, so some things that are occluded (like under her dress or her shoes) have a higher tendency to be shaded than not. Specularity has been sorted out as well, so now she has specular highlights across some pieces as well. Toned back the outline shader and brightened it up so it's not as black, smoothed the inner line rendering as well... no more nasty filtering. If the camera gets too far away, the lines are too small to render. Not quite sure how to deal with that one just yet, but it may just involve increasing the line width based on camera distance, or super sampling the scene.
Overall I think I'm pretty happy with the appearance now. Up next is trying to fix her buckles... I translated the bones closer to her body in the skeletal mesh file and when I preview animations there, they are correct, but out in the game world they go back to their pre-translation state. I may have to just translate them on beginplay which is gross but doable. Deciding if I want to maybe do another character next (like Ramlethal) or continue with this one and try to get her weapons and more game like animations.
總結
以上是生活随笔為你收集整理的对《GGX》shader的分析-卡通渲染-罪恶装备的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优酷电视剧爬虫代码实现一:下载解析视频网
- 下一篇: Huffman编码实验