卡通渲染
卡通渲染也叫做Toon-Shading或Cel-Shading铸屉,屬于非真實感渲染(Non-PhotorealisticRender)的一種。
卡通風格是游戲中很常見的一種渲染風格弟头,使用這種風格的游戲畫面有一些比較明顯的共同特征性宏,比如明顯的描邊線條阁危,分明的明暗變化玛痊,簡單的大色塊等。
卡通渲染不同于真實感渲染狂打,它不追求真實擂煞。
卡通渲染就是使模型呈現(xiàn)卡通風格的一些渲染方法。
它區(qū)別于普通渲染的主要有以下兩點:
1趴乡、光照模型
在一般渲染中使用的大多是模擬真實世界中的光照的模型对省,比如使用簡單的數(shù)學公式來模擬的幾種常見經(jīng)驗?zāi)P停?/p>
1)能夠較好表現(xiàn)粗糙表面的漫反射Lambert光照模型。
2)能夠較好表現(xiàn)金屬材質(zhì)的鏡面反射Phong光照模型晾捏。
3)融合了前兩種模型優(yōu)點的Blinn-Phong光照模型蒿涎,它也是最為廣泛使用的光照模型,是很多CG軟件默認的光照渲染方法粟瞬,因此也被稱為標準光照模型同仆。更加高級的還有基于物理的光照模型萤捆。它們都是盡力使得渲染結(jié)果更加貼近現(xiàn)實裙品。
在卡通渲染中,不能再直接使用以上光照模型俗或,為了使渲染結(jié)果能夠呈現(xiàn)卡通效果市怎,通常需要對光照模型進行一些處理,來得到離散的明暗區(qū)域效果辛慰。
例如区匠,卡通風格的高光往往是模型上的一塊快分界明顯的純色區(qū)域,以標準光照模型為例帅腌,在標準光照模型中驰弄,使用法線點乘光照方向以及視角方向來得到高光反射系數(shù),于卡通渲染來說速客,可以同樣適用這種方式來得到高光反射系數(shù)戚篙,但不同的是,需要把該值與一個闕值相比較溺职,比如如果小于該闕值岔擂,則高光反射系數(shù)為0位喂,反之為1。而且乱灵,卡通渲染中高光往往有很多個性化的需求塑崖,比如可以伸縮、可以方塊化等等痛倚。
2规婆、輪廓線
輪廓線的提取是卡通渲染很重要的部分。有許多繪制模型輪廓的方法蝉稳。它們可以分為以下類型:
1)簡單快速聋呢,使用視角方向和表面法線點乘結(jié)果來得到輪廓線信息,能夠在一個pass中得到渲染結(jié)果的颠区,基于觀察角度和表面法線的輪廓渲染削锰。
2)快速有效,使用兩個pass先后渲染背面與正面面片毕莱,過程式幾何輪廓線渲染器贩。
3)基于圖像處理的輪廓線渲染。
4)基于輪廓邊檢測的輪廓渲染朋截。
下面是一個最簡單的卡通渲染流程:
1蛹稍、使用一個pass把一個模型渲染到一張紋理圖上(Render to Texture)。
2部服、用第二個pass對這張圖進行邊緣檢測(可使用sobel邊緣檢測算法)唆姐,找出邊界并把它渲染到屏幕空間中。
3廓八、為了實現(xiàn)卡通著色奉芦,創(chuàng)建一個帶強度級別的灰度紋理,來達到卡通繪圖中的離散陰影效果剧蹂。
4声功、在頂點著色器中,通過光線方向與法向量的點積來確定頂點接受光線的多少宠叼。將結(jié)果規(guī)范化到[0,1]之間先巴,來在紋理坐標空間中取值。
Unity-Chan
Unity-Chan是UnityTechnologies日本團隊官方發(fā)布的一個開源二次元卡通渲染方案和素材組冒冬。
它也代表Unity娘——對Unity的擬人化伸蚯,是最初UnityTechnologies Japan為吸引日本地區(qū)ACG愛好者使用Unity進行創(chuàng)作而特別設(shè)計的角色。
這里主要來看一下它的Shader部分:
如圖简烤,Unity-Chan的Shader很簡單剂邮,分為眼睛、頭發(fā)乐埠、衣服(fuku)抗斤、皮膚(hada)囚企、面頰(akarami)
to be continue......
Unity-Chan2
這是Unity日本推出的全新的Unity-Chan素材組,相比于一代瑞眼,它的內(nèi)容豐富了很多倍龙宏。
它的Shader部分如圖,相比于一代龐大了非常多伤疙。新增了后處理银酗、曲面細分著色器、針對移動平臺的優(yōu)化等等徒像。
to be continue......