汪浩文,張 捷
(南京航空航天大學(xué) 藝術(shù)學(xué)院, 南京 211106)
渲染是一種基于虛擬場景的圖像處理行為,在最高抽象層次上,渲染行為可表示為場景描述與圖像間的轉(zhuǎn)換。動畫、集合建模、紋理機(jī)制等相關(guān)算法通過某種處理過程傳遞結(jié)果,進(jìn)而在圖像中呈現(xiàn)[1]。古建筑的渲染難點主要體現(xiàn)在建筑構(gòu)件豐富、紋理多樣以及對室內(nèi)外光照要求高,在渲染中會出現(xiàn)光線跟蹤或色溢等,畫面極易出現(xiàn)噪點及黑斑現(xiàn)象[2-3],難以達(dá)到預(yù)期效果。此外,古建渲染時間較長,對計算機(jī)硬件消耗高,不利于整體細(xì)節(jié)的呈現(xiàn)。因此,找尋高效、高真實度的仿真渲染方法是古建數(shù)字化呈現(xiàn)與數(shù)字化保護(hù)領(lǐng)域中值得探討的新課題。
全局光照渲染原理是基于環(huán)境中所有表面和光源相互作用的照射效果,整個渲染過程描述了能量從光源發(fā)射,經(jīng)過不同材質(zhì)表面的多次反射、折射、焦散等,最后進(jìn)入人眼。在這個過程中,光線強(qiáng)度、材質(zhì)的物理屬性是一種互相依托的關(guān)系[4],因此要達(dá)到高真實度的渲染效果,必須從全局光照的渲染原理及特點出發(fā)進(jìn)行分析。
光線追蹤是一種將光線投射算法進(jìn)行擴(kuò)展的遞歸算法,由于光線經(jīng)過多次反彈后可以抵達(dá)某一表面,需要跟蹤源自對象表面處的相關(guān)光線來捕捉視覺信息。經(jīng)過光線跟蹤后的圖像處理效果非常清晰,明暗對比強(qiáng)烈、物體的陰影邊緣明顯,并具備反射沒有模糊、失真等優(yōu)勢,適用于模擬晴天正午太陽光下或強(qiáng)光下的場景,對于自然光或柔光下的場景并不適用,因為它無法呈現(xiàn)較模糊的陰影效果。
任何光源都存在能量分布,光子的發(fā)射分布與光源的能量分布息息相關(guān),當(dāng)光子都具有相同能量時,光子圖也能夠達(dá)到最理想的渲染效果。此外,當(dāng)場景中多個光源共同發(fā)射光子時,渲染引擎會根據(jù)光源的強(qiáng)弱對光子進(jìn)行自適應(yīng)分布,即強(qiáng)光源光子數(shù)量多,弱光源光子數(shù)量少,需盡可能保證每個光子攜帶的能量相近。被發(fā)射的光子會在場景中傳播,跟蹤光子與跟蹤一條光線的方法大致相同。假設(shè)光源為單色光,對于一個具有漫反射系數(shù)a和鏡面反射系數(shù)b(b+a≤1)的表面,需要決定經(jīng)過此表面的光子是被漫反射、鏡面反射,還是被吸收。這里使用一個隨機(jī)變量M∈[0,1]:
這樣,光子的總能量不變,只是根據(jù)物體的隨機(jī)數(shù)和表面的反射特性來決定光子的反彈去向。最后,光源的能量將被平均分配給光子,以確保渲染計算的正確性。
光子圖是一種用于記錄光子信息的貼圖文件。在場景中,當(dāng)光子與非鏡面物體相交,需要把光子信息保存到光子圖中。光子圖包含直接光子、間接光子及焦散光子3種信息。直接光子是光源發(fā)射光子與非鏡面物體第一次進(jìn)行相交的記錄,間接光子是光子與非鏡面物體第1次相交后,經(jīng)過2次反彈與其他物體進(jìn)行相交的記錄,而焦散光子是光子與鏡面物體第1次相交后,又與其他物體相交的記錄。光子圖被創(chuàng)建以后,渲染引擎可以通過光子圖上的信息,利用統(tǒng)計學(xué)中的密度估算法判定空間中任何一點的光照信息,也可以渲染比光子圖像素尺寸更大的圖紙。這里值得注意的是:光子的能量越大,光子的密度也就越大,估算的參考信息越充分,也會使渲染計算更加精準(zhǔn)。
采樣細(xì)分是針對場景中模型、材質(zhì)以及燈光進(jìn)行著色處理的過程。它能夠通過自適應(yīng)細(xì)分、極限噪波、最小采樣對渲染質(zhì)量進(jìn)行全面提升,也可以從模型的網(wǎng)格、圖像光滑度以及圖元信息3方面對場景進(jìn)行綜合優(yōu)化[5-7]。
自適應(yīng)細(xì)分是將模型網(wǎng)格進(jìn)行細(xì)分的過程[8],網(wǎng)格細(xì)分程度越高,模型的渲染質(zhì)量越理想,渲染計算時間也越長。因此,理想的處理方法是結(jié)合模型的形態(tài)與網(wǎng)格布線的樣式,在模型的重點結(jié)構(gòu)區(qū)域增加細(xì)分,而對于模型的非重點區(qū)域可以適當(dāng)減少細(xì)分,在保證渲染精度的同時也能使硬件低資源消耗。極限噪波是針對光子傳播時出現(xiàn)的噪點進(jìn)行優(yōu)化的過程,極限噪波數(shù)值越小,圖像處理得越光滑,在具體的應(yīng)用中可以均衡處理,將場景的受光部分減小數(shù)值,而逆光部分可以適度加大數(shù)值。最小采樣是針對場景中的圖元信息進(jìn)行獲取的過程,采樣值越大,采樣范圍內(nèi)的圖元信息越廣,渲染時間越長,光線的真實度也越理想。
古建渲染過程是一項系統(tǒng)性流程。其中,渲染的質(zhì)量將與模型、燈光、材質(zhì)相互關(guān)聯(lián),也需要根據(jù)渲染測試反復(fù)地推敲渲染引擎中的相關(guān)參數(shù)設(shè)置。一般情況下,由于古建場景面片較多,渲染時間較長,需要合理地設(shè)計一套較為高效的渲染優(yōu)化流程[9-10]。
高質(zhì)量渲染并非是僅依靠參數(shù)設(shè)置去完成的,而是應(yīng)從模型、材質(zhì)以及燈光的三者之間的邏輯展開分析,從而尋找最佳的解決方案。由于古建結(jié)構(gòu)層級較多,可以按照實際層級,如瓦面層、梁架層、斗拱層、柱礎(chǔ)層及裝飾層,對模型構(gòu)件進(jìn)行成組與分類,便于后期材質(zhì)及UV(UVW map)的整體調(diào)整[11-12]。此外,當(dāng)模型面片數(shù)量過多,需要在布光前對模型進(jìn)行面片優(yōu)化,可以有效減少光子在面片間來回反彈的時間,避免渲染出現(xiàn)重影、曝光、破面等錯誤。
對于材質(zhì)而言,它與模型、燈光是相互影響的。模型精度不夠,可以通過材質(zhì)中的遮罩、凹凸、置換等方式進(jìn)行改善。材質(zhì)的紋理、反射、折射等物理屬性與燈光計算相互影響。紋理明度過亮、飽和度過高、反射及折射過強(qiáng)均會導(dǎo)致燈光在計算時色溢過重。因此,理想的方法是完成紋理貼圖后,先對燈光進(jìn)行渲染測試,再根據(jù)渲染效果逆向調(diào)整材質(zhì)屬性。
燈光主要包括直接照明與間接照明兩部分。燈光不僅對模型、材質(zhì)進(jìn)行仿真,還能改善場景氛圍,尤其對歷史久遠(yuǎn)的古建而言,它的光照強(qiáng)度、衰減、色溫、光子分布都可以為模型的精度、色調(diào)以及材質(zhì)細(xì)節(jié)增添感染力。
基于對渲染邏輯關(guān)系的分析,首先可以提出在渲染前應(yīng)優(yōu)化模型冗余面片,并按照層級名稱成組,統(tǒng)一設(shè)置材質(zhì)并調(diào)整UV。其中,對一些曲面造型或紋理坐標(biāo)有特殊要求的模型,如雕塑、吻獸、鏤空雕等部件可以單獨使用UV拆分,之后再布置場景的主光源與輔助光源,然后以較低的引擎參數(shù)快速測試,根據(jù)場景的實際渲染效果調(diào)整相關(guān)燈光屬性,直至燈光確定后,再調(diào)整紋理的反射、折射及焦散等相關(guān)參數(shù)并進(jìn)行二次測試。若測試后的效果能夠達(dá)到較理想的要求,可以提高渲染引擎的出圖規(guī)格,渲染最終圖紙,完成整套流程(見圖1)。
圖1 渲染流程
古建筑的渲染方法主要基于模型的優(yōu)化、燈光、材質(zhì)以及渲染引擎的設(shè)置。通過渲染既要展示場景的造型細(xì)節(jié),突出高仿真效果,也要控制好色溢關(guān)系,確保環(huán)境色調(diào)與古建筑整體氛圍相融洽。一個高質(zhì)量的渲染結(jié)果往往需要經(jīng)歷多次測試來實現(xiàn)。本文采用目前普及度較高的3dsMax插件Vray作為古建的渲染研究平臺。
古建的面片數(shù)量較多,導(dǎo)致渲染效率低下。因此,在渲染前需要對模型進(jìn)行優(yōu)化,有以下3種方法:① 可以刪除因遮擋無法看見的模型面片。例如,古建模型中的梁架層、斗拱層與柱礎(chǔ)層存在很多榫卯咬合現(xiàn)象,類似的隱藏面片應(yīng)全部刪除(如圖2);② 對于有特殊精度要求的模型,如家具或雕塑等模型可以采用段數(shù)控制法優(yōu)化模型,即通過面片塌陷、合并去減少不明顯影響模型精度的面片(如圖3);③ 由于渲染引擎對面片中的凹多邊形的計算時間明顯高于凸多邊形,可以適當(dāng)?shù)貙⒎侵黧w結(jié)構(gòu)中的凹多邊形分割成若干個較小的凸多邊形(圖4),進(jìn)而提高渲染效率。
圖2 需刪除的面片
圖3 段數(shù)的優(yōu)化
圖4 多邊形分割
燈光是渲染中的重要環(huán)節(jié),它主要包括自然光照明與人工光照明兩部分。燈光的角度、強(qiáng)度、色溫以及光照衰減的實現(xiàn),需要通過多次測試才能夠找到最佳的解決方案。
3.2.1 自然光照明的實現(xiàn)
自然光照明可分為陽光照明與天光照明。在布光過程中,可以先確定陽光的入射角度并測試建筑構(gòu)件的陰影傾斜效果,再利用實時渲染對陽光、天光的其他屬性進(jìn)行確認(rèn)。此外,由于不同時段的光線強(qiáng)度、色溫及渾濁度各不相同,可以根據(jù)實際情況靈活調(diào)整。例如,模擬大規(guī)模古建群氣勢磅礴的特征,可以采用正午明亮的光效設(shè)置,將陽光入射角調(diào)節(jié)為60°~90°,以提高光照強(qiáng)度,降低渾濁度和光照衰減,調(diào)整天光為淺藍(lán)色。在渲染引擎中開啟光線跟蹤,使古建陰影邊緣更加銳利,對比關(guān)系強(qiáng)烈、色調(diào)冷峻(如圖5)。再例如,想要突出古建的古樸質(zhì)感,可以通過模擬傍晚黃昏的光效,將陽光入射角更改為小于45°,以降低光線強(qiáng)度,提高渾濁度和光照衰減,設(shè)置天光為橘黃色,關(guān)閉渲染引擎中的光線跟蹤,使建筑陰影變得細(xì)長,邊緣過渡模糊,使建筑輪廓在黃昏環(huán)境中若隱若現(xiàn),整體對比關(guān)系柔和(如圖6)。經(jīng)測試,相關(guān)時段的照明參數(shù)取值見表1。
表1 不同時段的自然光照明的設(shè)置
3.2.2 人工照明的實現(xiàn)
人工照明主要包括局部照明與輔助光源,應(yīng)用于古建室內(nèi)空間為多,局部照明的布光方式應(yīng)按照光源的實際位置進(jìn)行布置。例如,古建中的射燈、吊燈、燈帶等可以通過點光源、面光源、光度學(xué)燈光進(jìn)行模擬。在布光時應(yīng)注重冷暖搭配,確??臻g的色調(diào)均衡(如圖7)。對于強(qiáng)度較高的光源,應(yīng)及時關(guān)閉高光反射,避免局部反射條件強(qiáng)的物體過于曝光。此外,光度學(xué)燈光不僅需要通過光度學(xué)Web對光照輪廓進(jìn)行模擬,還需要通過區(qū)域陰影中的UVW對物體的陰影進(jìn)行控制,確保強(qiáng)光的陰影明顯,弱光的陰影柔和。而輔助光源的布置,一般通過面光源進(jìn)行模擬,光源的長寬尺寸應(yīng)以空間的體積與明暗程度作為參考標(biāo)準(zhǔn)。輔助光源的光照強(qiáng)度一般不超過自然光源的1/3,以確保場景主次分明,避免出現(xiàn)過多的重影現(xiàn)象。
圖5 正午時段渲染
圖6 傍晚時段渲染
圖7 古建室內(nèi)渲染
材質(zhì)在古建渲染中不僅需要注重紋理的實際效果,還需要注重材質(zhì)物理屬性的設(shè)置,如反射、折射、折射率、焦散等。由于古建場景中的材質(zhì)大多為木質(zhì)或石材,畫面的對比應(yīng)微弱、細(xì)膩。這也意味著在光照信息確定后需要對材質(zhì)進(jìn)行整體的紋理調(diào)整及屬性確認(rèn)。
3.3.1 反射的實現(xiàn)
反射在材質(zhì)的設(shè)置中應(yīng)用頗多,反射可以分為漫反射和鏡面反射。漫反射反射程度較低,表面映射具有模糊性,使光子的二次反彈方向分散;而鏡面反射程度高,映射明顯且具有光滑性,使光子的二次反彈方向集中。此外,鏡面反射可以根據(jù)需要啟動菲涅爾反射計算,當(dāng)這個選項啟動后,反射將具有更接近真實世界的反射效果。這意味著當(dāng)光線和表面法線之間的夾角接近0度時,反射將衰減,當(dāng)光線幾乎平行于表面時,反射可見度最大。當(dāng)光線垂直于表面時幾乎無反射。
在古建場景中,除了玻璃和水的材質(zhì)同時具備反射、折射外,絕大多數(shù)材質(zhì)只具備反射特征,因此可以針對3類材質(zhì)作出具體分析。一是反射強(qiáng)的物體,如瓷器、石材等可以根據(jù)實際需要開啟或不開啟菲涅爾反射,但必須將反射RGB值明度提高,設(shè)置高光值略小于默認(rèn)值1(默認(rèn)值為最佳光滑度),使反射具備較強(qiáng)的可見性;二是對于漫反射物體,如木質(zhì)的梁架層、斗拱層等,適當(dāng)將反射RGB值明度降低,關(guān)閉高光,開啟模糊反射略小于默認(rèn)值1(默認(rèn)值為模糊反射不可見),使物體反射表面具備顆粒感,進(jìn)而能夠呈現(xiàn)模糊的反射效果(如圖8);三是對于反射極弱的物體,如瓦片、假山等,可以直接關(guān)閉反射,提高渲染效率。經(jīng)測試,相關(guān)材質(zhì)的反射參數(shù)取值見表2。
表2 不同類別材質(zhì)反射的設(shè)置
3.3.2 折射的實現(xiàn)
折射主要針對古建場景中的水、玻璃等透明或半透明材質(zhì)進(jìn)行模擬。它能夠?qū)崿F(xiàn)材質(zhì)的折射強(qiáng)度、折射率以及通過光滑度控制折射的衰減程度。目前,絕大多數(shù)全局光照渲染器中的材質(zhì)折射率都可以依照物理學(xué)中的常用折射率表直接設(shè)置參數(shù),并參與渲染計算,折射率越強(qiáng),材質(zhì)發(fā)生折射的能力也越強(qiáng)。但并不意味著材質(zhì)的透光能力與焦散能力越強(qiáng)。材質(zhì)的透光及焦散能力是與折射強(qiáng)度及光滑度相互關(guān)聯(lián)的。因此在具體的應(yīng)用中,可以通過折射強(qiáng)度及光滑度的調(diào)節(jié),讓材質(zhì)模擬各種晶瑩剔透、暗淡無光的透明或半透明材質(zhì)(如圖9)。經(jīng)測試,相關(guān)材質(zhì)的折射參數(shù)取值可見表3。
表3 不同類別材質(zhì)折射的設(shè)置
3.3.3 UV拆分的應(yīng)用
對于古建場景中有特殊紋理坐標(biāo)要求的模型,如果將它的構(gòu)件紋理一一繪制,會極其影響紋理制作或后繼渲染效率。因此,可以將這些模型附加成整體,利用拆分工具將模型表面以平面化形式完全展開(如圖10),并對其紋理進(jìn)行整體繪制。這里值得注意的是,UV拆分后所得到平面貼圖的像素應(yīng)依據(jù)模型構(gòu)件的數(shù)量,數(shù)量越多,像素應(yīng)越大,確保模型紋理能夠精準(zhǔn)呈現(xiàn)[13-14]。此外模型在拆分時,應(yīng)從隱蔽的位置進(jìn)行裁切,能夠有效避免模型出現(xiàn)過于明顯的接縫。
通常情況下,全局光照引擎由光子的首次發(fā)射和二次反彈兩組算法構(gòu)成,應(yīng)依據(jù)模型的特點選擇算法。古建場景有大量光影細(xì)節(jié),對于近似的光照信息可以精簡或共用相同數(shù)據(jù)。因此可以采用發(fā)光貼圖(Irradiance map)加燈光緩存(Lighe cache)的算法搭配,理由為以下兩點。第一,發(fā)光貼圖可以采樣空間中任意一點和全部照射到這一點的光照信息,當(dāng)光照接觸物體表面時,系統(tǒng)會在發(fā)光貼圖內(nèi)查找與當(dāng)前計算過的類似的點,并從已計算過的點中提取信息,將相似的點進(jìn)行內(nèi)差值替換。發(fā)光貼圖能夠?qū)ξ矬w的邊界、轉(zhuǎn)折處重點計算,對于平坦區(qū)域進(jìn)行低精度全局光照,在符合模型特點的同時也能夠過濾掉燈光首次發(fā)射中過多的近似信息[15];第二,光子的二次反彈比首次發(fā)射的信息量更多,利用燈光緩存作為二次反彈的算法,能夠只追蹤虛擬相機(jī)中可見的光線微粒,對其進(jìn)行角度及反射的衰減計算。這樣可以有效排除相機(jī)外的光照信息,從而提高渲染效率。此外,在渲染最終圖像前,可以將著色方式定為準(zhǔn)門特卡洛采樣,這樣僅在像素呈現(xiàn)的階段,提高圖像的抗鋸齒程度,在最終環(huán)節(jié)確保圖像的真實細(xì)膩效果。
圖8 材質(zhì)模糊反射
圖9 材質(zhì)折射
圖10 UV拆分
古建場景的渲染不僅是一個單純的技術(shù)制作過程,同時也是一個科學(xué)與藝術(shù)相互融合的實現(xiàn)過程。在這個過程中,應(yīng)該客觀、深入地剖析好全局光照渲染引擎與模型、材質(zhì)、燈光間的邏輯關(guān)系、互動關(guān)系以及訴求關(guān)系,根據(jù)每個古建場景的實際條件、實際特點,以科學(xué)的制作流程與靈活的應(yīng)用方法為模型提供理想的渲染結(jié)果。