李曙光
在三維動畫、次時代游戲,以及虛擬現(xiàn)實開發(fā)中使用了大量的寫實類角色的模型,在三維建模軟件將模型制作完成后,將其導(dǎo)入到其他應(yīng)用程序中進行后期交互制作,如maya或3ds Max中制作模型置入Unity等引擎中.衍生的最終數(shù)字產(chǎn)品可能是實時交互視頻、視頻游戲、影片、印刷品,甚至3D打印機上快速打印的3D模型[1].而在制作流程中如何讓寫實類角色呈現(xiàn)效果更加細膩、逼真,一直是三維設(shè)計師操作處理中的一個技術(shù)難點.傳統(tǒng)的三維角色制作流程中一般三維軟件都不能渲染百萬個以上面的網(wǎng)格模型,動畫軟件和游戲引擎中也對模型的面數(shù)有著極其苛刻的限制,而模型面數(shù)又對模型視覺的品質(zhì)有著重要的影響,如何保持高精度的細節(jié),以及引擎中流暢的交互性的平衡對產(chǎn)品的體驗至關(guān)重要.所以在引擎中為了呈現(xiàn)高細分的多邊形,通過在模型上使用低多邊形與不同類型貼圖相結(jié)合的技術(shù)方案,解決寫實角色基于物理真實皮膚質(zhì)感的三維人物模型處理中的技術(shù)難點,還原出與數(shù)字雕刻軟件生成的高精度模型類似的超寫實視覺效果的數(shù)字作品.
三維寫實角色首先需要使用如zbrush、modbox等數(shù)字雕刻類軟件進行細分雕刻,產(chǎn)生足夠多的細節(jié)層次,然后在此基礎(chǔ)上烘焙生成法線貼圖、置換貼圖等[2].在項目制作中需要使用法線貼圖,而不是凹凸貼圖,因為通常法線貼圖會在渲染時提供實時預(yù)覽的效果和更多的細節(jié)層次,在最高級細分下,三維模型一般有1000萬以上的面,在中間級細分下,一般有80萬個面.在變量目標下選擇中間級細分作為變量目標進行保存,然后把模型區(qū)分度降到最低級細分,在這個細分級別下需要檢查并確定模型是否匹配高精度模型的大概輪廓,重點檢查耳朵、眼眶、口部環(huán)形線的位置.如果低模曲度過于平緩,傳統(tǒng)的置換貼圖則無法達到理想的效果,因為傳統(tǒng)的置換方式只能沿著模型的法線方向進行推出或擠入的顯示,在最低級細分下模型保持3000~5000個面,這樣渲染起來速率很快,在變量目標創(chuàng)建的情況下,UV貼圖的大小分辨率設(shè)置在2048像素以上,這是即將生成的置換貼圖的大小,在Texture map中新建一張貼圖,在這張貼圖被激活的狀態(tài)下,在紋理菜單下創(chuàng)建一張Alpha圖,使用這張Alpha圖作為置換貼圖進行載入,將置換貼圖激活,然后將置換貼圖提升至2級、確認Mode是打開的,否則生成的就是凹凸貼圖而不是法線貼圖,激活A(yù)daptive、SmoothUV,翻轉(zhuǎn)貼圖的V方向,設(shè)定為3個通道,DPsubpix設(shè)為2,中間灰度設(shè)置為0.5,烘焙出一張保留大量細節(jié)信息的置換貼圖.
隨后再制作法線貼圖,在最高級細分中,保存變量目標,然后回到中間級細分,為了得到更多的細節(jié),法線貼圖分辨率大小不能小于2048像素,在法線貼圖欄中打開貼圖,設(shè)置adaptive、tangent、smoothUV等選項,生成法線貼圖.導(dǎo)出模型時,回到最低級細分,檢查模型是否設(shè)置翻轉(zhuǎn)選項,設(shè)定Export選項中Mrg為激活狀態(tài),從而確保導(dǎo)出的模型是完整的,不會因為UV拆開而導(dǎo)致法線貼圖、置換貼圖出現(xiàn)錯誤顯示.不同的貼圖屬性對比見表1.
表1 不同貼圖屬性的對比
線性工作流程即通過色彩管理空間管理紋理貼圖,使其得到正確的色彩和明度的表現(xiàn).在maya中建立線性工作流程的意義在于顯示器中顯示的顏色使用的是sRGB的色彩空間,大部分的顏色貼圖也是sRGB的色彩空間,人眼對于光線亮度的感覺是非線性的,與實際的線性增長是有區(qū)別的,但在實際三維軟件中渲染時,使用的是線性模式,因此需要采用色彩管理,使用gamma校正來糾正這個偏差的問題,以得到正確的色彩及明度顯示,gamma校正原理圖見圖2.在色彩管理中設(shè)置默認輸入信息為sRGB,sRGB也就是給紋理貼圖一個(R:0.454,G:0.454,B:0.454)gamma校正節(jié)點,設(shè)置默認輸出信息為線性模式,置換貼圖、法線貼圖與紋理貼圖不同,色彩的輸入信息就是線性模式,所以在文件屬性里的顏色信息中,要設(shè)置為Linear,才能得到正確的渲染設(shè)置,在相機的Len shade中連接Ma_exposure_simple曝光節(jié)點,這個節(jié)點可以矯正maya相機的渲染輸出,使之匹配顯示器的sRGB的色彩空間,當然如果后期要渲染32位圖像的時候,就不能使用這個節(jié)點,否則就會出現(xiàn)二次gamma校正的曝光過度的情況[3].
圖2 gamma校正原理圖
在導(dǎo)入的最低級細分低精度模型上連接差值貼圖,包括置換貼圖和法線貼圖,在導(dǎo)入模型前,首先是檢查單元設(shè)置,以確認模型的大小與物理世界中的真實大小一致,在渲染置換效果和SSS材質(zhì)時,模型大小會直接影響渲染的效果,接著檢查模型的渲染統(tǒng)計,打開反射與折射可見選項,并解鎖模型的法線,把模型的法線設(shè)為軟邊顯示以得到一個光滑的預(yù)覽效果.
先設(shè)置一個Blinn材質(zhì),用來測試燈光的效果,這樣可以充分提高渲染的速度并能有效地觀察模型的細節(jié),展開材質(zhì)節(jié)點,自動生成一個材質(zhì)組節(jié)點,在這個節(jié)點中直接連接置換節(jié)點,在連接置換貼圖時,色彩的管理設(shè)為linear線性,關(guān)閉貼圖過濾,否則會因平滑貼圖而損失大量的細節(jié),maya的中間灰度顯示無置換.為了得到較好的置換效果,在Alpha offset中設(shè)置表達式:=1*0.5*file模型名稱Dispace.alphaGain.在mentalray的近似屬性編輯器中,創(chuàng)建細分代理節(jié)點到模型上,最小的細分為二級,最大的細分為最高一級細分減一.這樣才能得到較好的置換效果.在材質(zhì)的bump通道中,添加法線貼圖,模式設(shè)置為切線空間法線.
為了得到寫實的皮膚效果,需要使用Misss_fast_skin_maya材質(zhì),默認的Misss_fast_skin_maya材質(zhì)自動連接并創(chuàng)建燈光緩存節(jié)點,這個燈光節(jié)點對于次表面散射的正確運行是必不可少的,燈光緩存節(jié)點可以讀取燈光的照明信息,然后顯示在材質(zhì)上,實現(xiàn)最終聚集的效果[4].將置換的節(jié)點連接到材質(zhì)組節(jié)點,法線貼圖連接到次表面散射材質(zhì)屬性里的Bump通道上,默認的材質(zhì)散射將會比較嚴重,有兩種解決方案:第一種調(diào)整Subsurface ScatteringLayer次表面散射層的表皮散射半徑、真皮散射范圍和背面散射半徑,通常要與真實世界的尺寸保持一致,光線在皮膚層中的散射效果見圖3,另一種方案則是在Algorithm control算法控制里按真實比例進行換算.
圖3 光線在皮膚中的散射效果
在Misss_fast_skin_maya材質(zhì)中,Ambient是控制環(huán)境對次表面散射材質(zhì)照明的強弱,也可以理解成控制物體的亮度,一般不會使用此屬性.Overall Color全局覆蓋色可以給所有顏色統(tǒng)一作色彩的校正,Diffuse Color漫反射色用于控制色彩的漫反射效果,漫反射顏色會與Overall Color整體顏色和次表面散射顏色產(chǎn)生疊加混合,該通道的色彩對皮膚顏色影響不大,因為皮膚的實際顏色主要來源于皮下的血液和脂肪等物質(zhì)通過次表面散射層發(fā)出.在次表面散射層中,表皮層的顏色是最上面的一層顏色,大部分的皮膚色彩由該通道決定,所以顏色貼圖會連接到此通道.第二層皮膚顏色是真皮層,也就是皮膚的中間層,其中包含了一些躁點.如果模型尺寸以及散射范圍與真實世界不一致,那么就會損失大量的細節(jié),在燈光緩存節(jié)點下,散射偏差值控制著光線穿過物體的數(shù)量以及反射的數(shù)量比例,光線穿過物體的數(shù)量與反射的數(shù)量的比值在程序中默認設(shè)定為1:1.正負值分別表示光線反射數(shù)量較多和穿過物體的數(shù)量較多,而皮膚的物理屬性則決定了光線的反射數(shù)量應(yīng)該更多,所以應(yīng)該取正值,散射色彩的混合疊加方式如圖4所示.
圖4 散射色彩的混合疊加方式
差值貼圖主要解決低模的細節(jié)結(jié)構(gòu),而紋理貼圖主要解決模型的質(zhì)感表現(xiàn),紋理貼圖主要包括SSS材質(zhì)中的表皮層紋理貼圖、真皮層紋理貼圖、背面紋理貼圖,以及高光貼圖、反射貼圖等,其中主要以表皮層紋理貼圖為主,表皮層紋理貼圖確定皮膚的基本顏色,在紋理的繪制時需要添加大量的毛孔、血管、皮膚褶皺等細節(jié),在色彩上飽和度較高,在眉弓處、血管處使用冷色,與皮膚本身的暖色形成一個補色的對比.真皮貼圖在表皮層紋理貼圖的基礎(chǔ)上加強色彩的飽和度,并進行模糊處理,添加與表皮層紋理貼圖不一致的噪點,這樣在渲染時皮膚的層次感會更豐富.背部散射層紋理貼圖基本上只在耳朵附近,在希望有光透過的地方繪制一點紅色,其他部分都是黑色.在紋理貼圖的基礎(chǔ)上,通過去色繪制和疊加肌理的方式,得到高光貼圖和反射貼圖,來控制模型的整體高光及反射強度.通過連接紋理貼圖,皮膚的材質(zhì)會更精準地呈現(xiàn)光線的發(fā)散程度與光線強度衰減的關(guān)系[5].現(xiàn)材質(zhì)的明暗與色彩關(guān)系.在渲染引擎中模擬皮膚常常使用SSS材質(zhì),通過對表皮層散射、真皮層散射、背面層散射及深度的色彩、半徑的控制,以及與置換節(jié)點、燈光緩存節(jié)點的連接,準確地模擬出寫實人物基于物理真實的皮膚質(zhì)感,從而制作出具有寫實風格的三維角色模型.
在虛擬現(xiàn)實應(yīng)用、次時代游戲以及三維動畫中寫實類角色的模型,為了通過實時交互得到更加流暢的動畫效果,制作流程是先在低模上雕刻,然后利用低模和高模烘焙出多通貼圖,實現(xiàn)了低面數(shù)模型在引擎中或渲染時能達到高精度顯示的良好視覺表現(xiàn)效果,同時兼顧流暢性,在渲染模型前,線性工作流程對紋理貼圖進行g(shù)ammer校正,使其在線性渲染過程中能準確表