楊蒙召 王寬全
摘要:人體皮膚是一種高度散射的半透明材質(zhì),與光線之間的交互過程很難建模和模擬,因此皮膚的真實(shí)感實(shí)時(shí)渲染比較困難。從基于模糊化處理的渲染、基于紋理空間的渲染和基于屏幕空間的渲染等三方面,對皮膚真實(shí)感實(shí)時(shí)渲染進(jìn)行綜述,詳細(xì)分析了每種方法實(shí)現(xiàn)的思路和原理,方法之間的改進(jìn)和差異,對各種方法的優(yōu)缺點(diǎn)和適用范圍作了總結(jié)和比較等,最后給出了將來研究的方向。
關(guān)鍵詞:人體皮膚; 模糊化處理; 紋理空間; 屏幕空間
中圖分類號:TP39141 文獻(xiàn)標(biāo)識碼:A文章編號:2095-2163(2013)06-0033-03
0引言
目前,隨著三維游戲、影視動畫、虛擬現(xiàn)實(shí)等產(chǎn)業(yè)的迅猛發(fā)展,真實(shí)感渲染技術(shù)也在不斷進(jìn)步和普及應(yīng)用中。在影視娛樂行業(yè),角色人物往往很難完成某些特效動作,比如人物從高樓墜下、人物在海面上行走或者某些超難度動作等,但是借助渲染技術(shù)可以設(shè)計(jì)和主人公外觀逼真的虛擬人,幫助完成這些場景中的特效動作,如此這般已經(jīng)制造出品了多部優(yōu)秀的電影,比如《黑客帝國》、《指環(huán)王》、《阿凡達(dá)》和《冰河世紀(jì)》等好萊塢經(jīng)典電影。在當(dāng)今的三維虛擬人物設(shè)計(jì)中,都在追求電影級別的高真實(shí)感,這就帶來了龐大的圖形圖像數(shù)據(jù),占用的內(nèi)存也很多,每一幀的計(jì)算量相應(yīng)都大。這就使得人物和場景的移動和切換均會變得較慢,從而給用戶帶來延遲感和停頓感。如此就要求虛擬人外觀在具有真實(shí)感和形象感的同時(shí),渲染的幀速也必須日愈改進(jìn),以滿足交互性和實(shí)時(shí)性,這一需求已成為當(dāng)前虛擬人設(shè)計(jì)的重點(diǎn)和難點(diǎn)。
人體皮膚渲染方法可以分為離線渲染(Offline Rendering)和實(shí)時(shí)渲染(Real-time Rendering),離線渲染強(qiáng)調(diào)渲染的真實(shí)感,而實(shí)時(shí)渲染則強(qiáng)調(diào)渲染的實(shí)時(shí)性,離線渲染常常為實(shí)時(shí)渲染提供一些研究思路和理論基礎(chǔ)。從皮膚渲染的研究內(nèi)容來看,包括皮膚材質(zhì)的生理分析、皮膚屬性的測量、測量設(shè)備的開發(fā)、渲染算法的研究和實(shí)現(xiàn)等等,由于本文所關(guān)注是渲染算法的研究,因此僅從渲染方法的研究進(jìn)展方面進(jìn)行綜述。
本文結(jié)構(gòu)如下: 第1部分介紹基于模糊化處理的實(shí)時(shí)渲染;第2部分闡述基于紋理空間的實(shí)時(shí)渲染;第3部分論述基于屏幕空間的實(shí)時(shí)渲染;第4部分對本文進(jìn)行了總結(jié)和展望。
1基于模糊化處理的實(shí)時(shí)渲染
2003年,Borshukov和Lewis[1]首次提出使用自定義的內(nèi)核高斯函數(shù)對二維的漫反射光照紋理,進(jìn)行模糊化處理,在紋理空間中模擬次表面散射,在繪制皮膚時(shí),通過微小的顏色漂移來表現(xiàn)人體皮膚的散射效果。通過觀察,可發(fā)現(xiàn)皮膚自然的次表面散射效果,會導(dǎo)致粗糙的皮膚變得模糊化,這類似于二維圖像的模糊化,因此可以對皮膚的高頻紋理信息進(jìn)行多次高斯模糊化處理,來模擬皮膚的次表面散射現(xiàn)象。高斯函數(shù)的參數(shù)采用紅、綠、藍(lán)三種顏色光在半透明皮膚材質(zhì)中的傳播系數(shù),該項(xiàng)技術(shù)成功應(yīng)用在電影《黑客帝國》及其續(xù)集中,采用真實(shí)感的虛擬人,充當(dāng)電影中的人物角色,方便地實(shí)現(xiàn)了影視人物特效,同時(shí)滿足了觀眾的視覺要求。但其合成的高斯權(quán)重參數(shù)并未參考任何物理模型,而是依憑藝術(shù)家的感覺進(jìn)行手工調(diào)節(jié)。
Borshukov和Lewis在2005年開設(shè)的SIGGRAPH課程中[2],又進(jìn)一步使用兩個(gè)簡單分布曲線:一個(gè)比較平坦起伏的曲線,另一個(gè)形如尖峰的曲線,分別刻畫表皮層較窄的擴(kuò)散和真皮層較寬的擴(kuò)散,如此形象地模擬光線在皮膚內(nèi)部的散射效果,但是該技術(shù)未能有效捕捉皮膚微妙的多層次散射效果。
在Borshukov等人方法的基礎(chǔ)上,Gosselin[3]于2004年使用Poisson圓盤分布函數(shù),模糊化輻射照度圖,借助于兩個(gè)緩存,對擴(kuò)散光照圖執(zhí)行多次模糊,最后基于GPU圖形硬件,實(shí)時(shí)取得了一個(gè)柔和的、真實(shí)感的外觀。另外,Gosselin還執(zhí)行三個(gè)GPU加速技術(shù),即背面剔除、視區(qū)裁剪和距離裁剪,增強(qiáng)了渲染的實(shí)時(shí)性。
Green[4]則提出使用深度圖模擬光線衰減和吸收,采用高斯模糊模擬紋理空間的漫反射。該研究指出對光線吸收的模擬是半透明材質(zhì)最重要的因素之一,光線在皮膚中傳播得越遠(yuǎn),吸收和散射得就越厲害,為了模擬這種效果,采用深度圖[5]估算光在物體中傳播的距離,具體如圖1所示,從而估算得到入射光線到出射光線的指數(shù)衰減情況。
利用深度圖,一旦計(jì)算得到光在物體中的傳播距離,就可以用一個(gè)指數(shù)項(xiàng)刻畫光線的衰減,再結(jié)合傳統(tǒng)的光照明模型,就可以模擬光線在薄層部分的背光效果,增強(qiáng)皮膚的半透明性。
2基于紋理空間的實(shí)時(shí)渲染
NVIDIA的Eugene dEon等人[6,7]提出了紋理空間擴(kuò)散方法(Texture Space Diffusion, TSD),利用高斯函數(shù)卷積線性之和,在紋理空間中模擬次表面散射,比較準(zhǔn)確地近似Donner等人的多極子對偶方法[8],得到了接近物理真實(shí)的皮膚繪制效果。對比NVIDIA和Donner的離線繪制結(jié)果,皮膚渲染的效果雖然幾乎不分上下,但NVIDIA在Gefore 8800卻可以達(dá)到實(shí)時(shí)的繪制速度。TSD渲染流程如圖2所示。
通過觀察和物理實(shí)驗(yàn),d Eon 等人指出光線在皮膚中次表面擴(kuò)散剖面(Diffusion Profile),類似于高斯函數(shù)曲線,因此可以利用高斯函數(shù)卷積和模擬次表面散射。通常四個(gè)高斯函數(shù)就可以很好地近似單一薄層的漫反射剖面,然而對于Donner等人刻畫的三層皮膚模型,需要使用六個(gè)高斯函數(shù)線性求和,才能很好地近似皮膚的漫反射剖面。
為了防止網(wǎng)格的紋理參數(shù)化,出現(xiàn)紋理扭曲現(xiàn)象,需要在紋理高斯卷積過程中,添加UV空間的拉伸矯正處理。對于半透明性所表現(xiàn)出來的背光效果,d Eon等人則采用改進(jìn)的半透明深度圖(Translucent Shadow Map, TSM)方法[9]進(jìn)行計(jì)算。
對于皮膚表面的高光反射,d Eon等人使用一個(gè)基于物理的KS反射模型(Kelemen Szirmay-Kalos, KS)[10],并允許調(diào)整面部不同的粗糙度,真實(shí)模擬了表面反射。
為了進(jìn)一步提高紋理空間渲染的實(shí)時(shí)性,Jimenez和Gutierrez等人[11]從三個(gè)方面提出優(yōu)化機(jī)制對渲染過程進(jìn)行改進(jìn)。首先,剔除輻射照度圖(Culled Irradiance Map),每次渲染時(shí),無需對所有像素點(diǎn)進(jìn)行處理,由于自身幾何遮擋,有些像素點(diǎn)根本不在視角范圍之內(nèi),所以可以利用背面剔除技術(shù)(Backface Culling Techniques)在輻射照度圖剔除遮擋像素點(diǎn)。其次,采用基于深度的輻射照度圖(Depth-based Irradiance Map),根據(jù)渲染頭像的視角距離深度,調(diào)整輻射照度圖的尺寸。最后,裁剪輻射照度圖(Clipped Irradiance Map),在傳統(tǒng)的渲染管線中,視錐外面的頭像某一部分會被裁剪,因此不必對這部分進(jìn)行計(jì)算,在渲染之前,可以采用變化矩陣,計(jì)算出被裁減的部分,在渲染時(shí),不需對此部分進(jìn)行計(jì)算。在顯卡 GeForce 8800 GTX的平臺上,Jimenez等人取得每幀的加速度為1.10到2.77之間。
Hable等人[12]提出了一種快速次表面散射(Fast Subsurface Scattering)方法。該方法使用背面消隱技術(shù),也對紋理空間方法進(jìn)行優(yōu)化,而且此法在13個(gè)抖動采樣點(diǎn)(Jittered Sampling)上,采用12個(gè)抖動步長(Jittered Tap)的模糊核,計(jì)算一個(gè)二維的卷積,很好地解釋了直接反射、中級散射和紅色光相對遠(yuǎn)的散射,得到了真實(shí)感皮膚的模擬。
3基于屏幕空間的實(shí)時(shí)渲染
Jimenez等人[13]提出了屏幕空間渲染方法(Screen Space Rendering, SSR),對于次表面散射的模擬,不同于TSD方法對初始輻射照度圖(Irradiance Map)進(jìn)行高斯模糊然后求和,SSR 方法則利用Gillham 等人的方法[14] 將深度圖(Depth Map)線性化處理,結(jié)合二維抖動采樣[12]和6個(gè)一維的高斯核,直接對最終的渲染圖像進(jìn)行卷積模糊。
對于表面高光反射,該方法同樣采用KS模型[10]實(shí)現(xiàn)表面反射的模擬。最后結(jié)合次表面散射和表面反射模擬,得到近似TS的渲染結(jié)果,其渲染流程如圖3 所示。
SSR追求和TSD相同級別的真實(shí)感,然而卻在屏幕空間的后處理階段執(zhí)行散射模擬,由此簡化了渲染流程。同時(shí)在渲染每一幀時(shí),SSR借助于GPU所提供的深度模板緩沖區(qū)(Stencil Buffer)和顏色緩存(Color Buffer),利用模板測試決定是否更新相應(yīng)像素點(diǎn)的顏色值,可以很容易剔除不需要處理的像素,在很大程度上提升了渲染的執(zhí)行速度,尤其當(dāng)著色目標(biāo)向遠(yuǎn)離視點(diǎn)的方向移動,所占的屏幕區(qū)域愈來愈小時(shí),效果則更為突出,因此SSR取得了優(yōu)于TSD的實(shí)時(shí)性。
SSR 方法還能解決 TSD 方法中遇到的縮放和細(xì)縫問題(Scaling and Seam Issues),由編程實(shí)現(xiàn)角度和算法復(fù)雜度進(jìn)行衡量,也優(yōu)于TSD方法,但是SSR方法渲染的環(huán)境應(yīng)在DX10以上,而且當(dāng)光線從物體后面照亮?xí)r,在透明度的模擬方面,該方法渲染的結(jié)果也沒有TSD準(zhǔn)確。
國內(nèi)針對皮膚真實(shí)感實(shí)時(shí)渲染的研究還不多見,2009年,王家良[15]介紹了皮膚渲染所取得的部分研究成果,最后實(shí)現(xiàn)了毛發(fā)的渲染,雖然一定程度上增加了皮膚的真實(shí)感,但并不是針對皮膚本身的渲染。2011年,浙江大學(xué)的蔡飛龍[16]在其博士論文的第六章,借鑒NVIDIA的紋理空間擴(kuò)散方法,利用商業(yè)渲染器Vray,實(shí)現(xiàn)了適合京劇臉譜的真實(shí)感繪制,但是在渲染算法本身并未取得任何實(shí)質(zhì)性改進(jìn),只是將渲染對象做了稍微改變。同時(shí),由于高精度的表情動畫數(shù)據(jù)難以捕獲和制作,還沒有辦法實(shí)現(xiàn)真實(shí)感的臉譜動畫。
4結(jié)束語
隨著圖形可編程硬件GPU功能的不斷提升,近年來,借助于高級著色語言和CG技術(shù),使得針對人體皮膚的真實(shí)感實(shí)時(shí)渲染研究,已經(jīng)有了很大的突破和可觀的成果,能夠滿足影視娛樂、三維游戲和其他虛擬場景的需要。經(jīng)典的渲染方法,如模糊化渲染、紋理空間渲染和屏幕空間渲染,能夠得到真實(shí)感的人體皮膚,這些方法雖然取得真實(shí)感的面部,但是渲染的幀速仍然較少,實(shí)時(shí)性也較低。在某些應(yīng)用中,比如大型三維游戲和互動虛擬場景中,除了對畫面的真實(shí)感要求以外,更加強(qiáng)調(diào)渲染的實(shí)時(shí)性,以保證操縱場景人物時(shí)系統(tǒng)運(yùn)行的流暢性,沒有延遲感和停頓感。另外,真實(shí)感算法的設(shè)計(jì)不能太過于復(fù)雜,要易于和當(dāng)前GPU可編程渲染管線結(jié)合。
參考文獻(xiàn):
[1]BORSHUKOV G, LEWIS J P. Realistic human face rendering for the matrix reloaded[C]//ACM SIGGRAPH Sketches and Applications Program. California: ACM, 2003:13–23.
[2]BORSHUKOV G, LEWIS J. Realistic human face rendering for the matrix reloaded[C]//ACM Siggraph 2005 Courses. Los Angeles: ACM, 2005:13-23.
[3]GOSSELIN D. Real time skin rendering[C]//Game Developer Conference, D3D Tutorial. San Jose: GDC, 2004,9.
[4]GREEN S. Real-time approximations to subsurface scattering[J]. GPU Gems, 2004:263–278.
[5]HERY C. Implementing a skin bssrdf[C]//ACM SIGGRAPH Computer Graphics. San Diego: ACM, 2003:73–88.
[6]dEON E, LUEBKE D. Advanced techniques for realistic real-time skin rendering[M]. Gpu gems 3, 2007:293–347.
[7]dEON E. NVIDIA Demo team secrets-advanced skin rendering[C]//Game Developer Conference, San Francisco: GDC, 2007.
[8]DONNER C, JENSEN H W. Light diffusion in multi-layered translucent materials[J]. ACM Transactions on Graphics, 2005, 24(3):1032–1039.
[9]DACHSBACHER C, STAMMINGER M. Translucent shadow maps[C]//Proceedings of the 14th Eurographics Workshop on Rendering. Leuven: Eurographics Association, 2003:197–201.
[10]KELEMEN C, SZIRMAY-KALOS L. A microfacet based coupled specular-matte BRDF model with importance sampling[C]//Eurographics Short Presentations. Manchester: Eurographics Association, 2001:25–34.
[11]JIMENEZ J, GUTIERREZ D. Faster rendering of human skin[C]//Proceedings of the Congreso Espanol de Informatica Grafica. Zaragoza: Eurographics Association, 2008:21–28.
[12]HABLE J, BORSHUKOY G, HEJL J. Fast skin shading[J]. Shader X7, 2009:161–173.
[13]JIMENEZ J, SUNDSTEDT V, GUTIERREZ D. Screen-space perceptual rendering of human skin[J]. ACM Transactions on Applied Perception, 2009, 6(4):3–13.
[14]GILLHAM D. Real-time depth-of-field implemented with a post processing-only technique[J]. Shader X5: Advanced Rendering Techniques, 2007:163–175.
[15]王家良. 人體皮膚實(shí)時(shí)渲染的初步研究[D]. 青島:青島大學(xué), 2009.
[16]蔡飛龍. 京劇臉譜數(shù)字化建模與繪制技術(shù)研究[D]. 杭州:浙江大學(xué), 2011.