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