劉莉萍,楊華琦
(合肥信息技術(shù)職業(yè)學(xué)院 安徽 合肥 230601)
蒙特卡洛路徑追蹤算法是計算機圖形學(xué)(computer graphics,CG)領(lǐng)域中廣泛應(yīng)用的全局光照渲染算法,其優(yōu)勢在于能夠生成具有高度真實感的圖像,且能夠處理復(fù)雜的光照效果,如陰影、反射、折射、散射等。然而,該算法也存在著噪聲和計算效率方面的問題,為了得到清晰的圖像,需要大量采樣和計算,導(dǎo)致渲染時間過長。為解決以上問題,研究者們提出了眾多優(yōu)化方法,其中基于光子映射的方法近年來受到了廣泛關(guān)注。光子映射是一種結(jié)合了正向和反向光線追蹤的全局光照算法,能夠有效地降低噪聲并提高渲染質(zhì)量。本文提出一種在3ds Max軟件中實現(xiàn)蒙特卡洛路徑追蹤算法性能優(yōu)化策略(progressive photon mapping-based monte carlo path tracing optimization,PPM-MCPTO),并通過實驗加以驗證。
蒙特卡洛路徑追蹤算法是一種利用隨機采樣來模擬光線在場景中傳播和交互的渲染算法,該算法從相機發(fā)出一束光線,并追蹤光線在場景中的傳播過程,直到遇到光源或被吸收為止。在光線傳播過程中,算法需要計算光線與物體表面的交點和交點處的表面屬性(如法線、反射率等),從而得到場景中的光照情況[1]。通過在多次隨機采樣中對像素值進行累積,可以得到最終的圖像。
蒙特卡洛路徑追蹤算法存在著噪聲和計算效率問題。一方面,噪聲是由于隨機采樣過程中產(chǎn)生的誤差導(dǎo)致,因此,隨機采樣的次數(shù)越多,噪聲越小,但計算效率也越低[2]。另一方面,計算效率問題是由于算法需要計算光線與場景中物體表面的交點和交點處的屬性,當(dāng)面對復(fù)雜場景時,此計算則極為耗時。
光子映射是一種全局光照算法,通過模擬光子與場景物體的相互作用來計算間接光分布。光子映射過程包括從光源發(fā)射光子,以及沿著場景中物體表面的反射、折射或透射,最終光子信息被存儲在光子圖的數(shù)據(jù)結(jié)構(gòu)中[3]。光子映射算法可以分為兩個階段,即光子發(fā)射階段和光子收集階段。在光子發(fā)射階段,算法模擬光子在場景中的傳播過程;在光子收集階段,算法根據(jù)存儲在光子圖中的光子信息計算最終的渲染圖像。漸進式光子映射(progressive photon mapping,PPM)是一種改進的光子映射算法,它采用迭代的方式逐漸提高渲染質(zhì)量。與傳統(tǒng)的光子映射方法相比,PPM能夠在更短的時間內(nèi)生成更清晰、更平滑的渲染圖像[4]。本文提出了一種基于PPM和蒙特卡洛路徑追蹤(MCPTO)的混合渲染優(yōu)化策略PPM-MCPTO,旨在進一步提升蒙特卡洛路徑追蹤算法的渲染效率和效果。
為了實現(xiàn)PPM-MCPTO,需要對采樣數(shù)、光子數(shù)量以及空間劃分和搜索半徑進行適當(dāng)?shù)恼{(diào)整和優(yōu)化。
2.2.1 采樣數(shù)
采樣數(shù),即在渲染過程中每個像素發(fā)出的光線數(shù)量,直接影響到渲染圖像的質(zhì)量和計算量。采用基于局部梯度的自適應(yīng)采樣方法,可以根據(jù)場景中的光照變化和紋理細節(jié)動態(tài)分配采樣數(shù)[5]。通過對比不同采樣數(shù)下的渲染效果和噪聲分布,可以確定一個合理的采樣數(shù)區(qū)間,從而在渲染質(zhì)量和計算時間之間達到最優(yōu)的平衡。
2.2.2 光子數(shù)量
光子數(shù)量是指在光子映射過程中發(fā)射的光子總數(shù)。選擇適當(dāng)?shù)墓庾訑?shù)量對于保證渲染質(zhì)量和控制計算時間非常關(guān)鍵。因此需要對不同光子數(shù)量下的渲染結(jié)果進行詳細的對比分析,并根據(jù)場景的復(fù)雜度、材質(zhì)屬性及光照條件,動態(tài)調(diào)節(jié)光子數(shù)量,從而實現(xiàn)在一個確定的光子數(shù)量區(qū)間內(nèi)的性能優(yōu)化[6]。
2.2.3 空間劃分和搜索半徑
空間劃分和搜索半徑是光子收集階段的重要參數(shù),影響渲染質(zhì)量和計算時間。采用基于k維樹(k-dimensional tree, KD-Tree)的自適應(yīng)空間劃分方法,可根據(jù)場景的復(fù)雜度和光子分布動態(tài)劃分空間。同時需將不同搜索半徑對渲染效果的影響納入研究,確定合適的搜索半徑區(qū)間。在此區(qū)間內(nèi),根據(jù)收集到的光子密度調(diào)整搜索半徑,能夠達到降低噪聲并提高渲染質(zhì)量的目標。
綜合運用上述參數(shù)調(diào)整和優(yōu)化策略,PPM-MCPTO能夠在保證圖像質(zhì)量的同時降低計算量,為實際渲染項目提供更高效、可靠的解決方案。
3ds Max是一款廣泛應(yīng)用于游戲開發(fā)、建筑可視化、電影特效等領(lǐng)域的專業(yè)三維建模、動畫和渲染軟件。它的強大功能主要來自于其多樣化的渲染引擎選擇和靈活的腳本語言支持。用戶可以根據(jù)具體需求選擇諸如V-Ray、Arnold和Mental Ray等多種渲染引擎,以滿足各種不同的渲染需求和風(fēng)格。3ds Max還內(nèi)置了MAXScript腳本語言,這種語言強大而靈活,用戶可以利用它編寫腳本來定制工作流程,或者開發(fā)各種功能強大的插件。本文中的PPM-MCPTO策略被實現(xiàn)為名為“PPM-MCPTO Renderer”的3ds Max插件。該插件采用了基于PPM和蒙特卡洛路徑追蹤(MCPTO)的混合渲染策略,為3ds Max用戶提供一種新的、高效的渲染工具。
3.2.1 插件架構(gòu)
“PPM-MCPTO Renderer”插件采用PPM與蒙特卡洛路徑追蹤相結(jié)合的混合渲染器設(shè)計。該插件主要包括光子發(fā)射模塊、光子收集模塊及參數(shù)調(diào)整模塊3個核心模塊。
(1)光子發(fā)射模塊致力于模擬光子在場景中傳播的過程,進而構(gòu)建光子圖數(shù)據(jù)結(jié)構(gòu)。在具體實現(xiàn)中,模塊首先根據(jù)概率密度函數(shù)(PDF)從所有光源中隨機選取一個光源,并進行加權(quán)。接著,依據(jù)所選光源類型生成一定數(shù)量的光子,運用蒙特卡洛追蹤方法對光子進行追蹤。每次碰撞時,根據(jù)物體材質(zhì)屬性(如BRDF/BTDF)確定光子的反射與折射方向。此外,通過俄羅斯轉(zhuǎn)盤算法決定是否繼續(xù)追蹤。最后將光子的位置、方向及能量信息存儲于光子圖數(shù)據(jù)結(jié)構(gòu)(如kd-tree)中。
(2)光子收集模塊根據(jù)光子圖計算出最終的渲染結(jié)果。首先,模塊依據(jù)相機模型確定場景中每個像素對應(yīng)的視線方向,此相機模型可根據(jù)用戶設(shè)定的參數(shù)(如焦距、感光元件尺寸等)進行調(diào)整,進而針對每個像素點,運用射線追蹤算法計算直接光照,并采用光線-光源相交方法判斷該像素點是否受到直接照射。緊接著,從光子圖中檢索與每個像素點相交的光子,依據(jù)這些光子的能量和顏色計算出該像素點的間接光照值。最終將直接光照和間接光照值相加,得到像素顏色值。對于多次采樣的像素,使用PPM的累積緩沖區(qū)來合成最終顏色。
(3)參數(shù)調(diào)整模塊主要負責(zé)優(yōu)化算法參數(shù),如采樣數(shù)、光子數(shù)量和搜索半徑等。通過圖形界面或命令行接口,允許用戶調(diào)整各種參數(shù)。該模塊提供自適應(yīng)采樣功能,依據(jù)圖像的顏色梯度調(diào)整采樣數(shù)量,降低噪聲并提高計計算效率。
“PPM-MCPTO Renderer”作為一個獨立的渲染器插件,可以與3ds Max中的其他渲染引擎協(xié)同使用,其樹形結(jié)構(gòu)如圖1所示。
圖1 PPM-MCPTO Renderer插件設(shè)計架構(gòu)
3.2.2 用戶界面設(shè)計
插件設(shè)有實時預(yù)覽功能,用戶可以在調(diào)整參數(shù)時實時查看渲染效果。采用逐像素更新的方法,并使用多線程渲染技術(shù)以提高響應(yīng)速度。為了方便用戶后期處理和存檔,參數(shù)調(diào)整模塊還提供導(dǎo)出渲染結(jié)果的功能,支持輸出多種圖像格式(如PNG、JPEG、EXR等)及圖像分辨率、壓縮率等多種選項。PPM-MCPTO Renderer的用戶界面功能見表1。
表1 PPM-MCPTO Renderer的用戶界面功能列表
實驗使用一臺計算機,配置為Intel Core i7-9700K處理器,32 GB內(nèi)存,NVIDIA GeForce GTX 1080顯卡;實驗采用3ds Max 2023版本作為主要的實驗平臺。為了全面評估所提出的渲染方法,實驗選用了3個具有不同特點的場景組成的數(shù)據(jù)集:室內(nèi)場景(包含家具和光源的起居室)、室外場景(陽光照射的城市廣場)和混合場景(室內(nèi)外相互連接的畫廊)。以上場景涵蓋了各種幾何體、材質(zhì)和光源的組合,可反映不同場景下渲染方法的性能表現(xiàn)。
4.2.1 渲染效果評價
為了全面評估渲染效果,實驗采用峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似性指數(shù)(structural similarity,SSIM)2個主要評價指標。PSNR反映了圖像的噪聲水平,其值越高表示噪聲越低,圖像質(zhì)量越高;SSIM是一種基于人類視覺系統(tǒng)的圖像質(zhì)量評價指標,能夠衡量圖像結(jié)構(gòu)信息的保留程度。SSIM值越接近1,說明結(jié)構(gòu)信息保留得越好,圖像質(zhì)量也越高。通過這2個指標,可以從不同方面評估所提出方法的渲染效果。
4.2.2 渲染時間評價
為了評估所提方法在渲染時間方面的優(yōu)劣,實驗記錄了每個場景在使用不同優(yōu)化策略時所需的總渲染時間,并進行了比較分析。通過對比渲染時間,可以得知所提出的方法在性能上是否具有優(yōu)勢,以及其在不同場景下的表現(xiàn)。這有助于驗證方法在實際應(yīng)用中是否能夠滿足渲染速度的需求,從而為進一步改進和優(yōu)化提供參考依據(jù)。不同優(yōu)化策略渲染時間對比見表2。
表2 不同優(yōu)化策略渲染時間對比
實驗分別調(diào)整采樣數(shù)為64、128、256、512,光子數(shù)量為10萬、50萬、100萬、200萬,空間劃分為4、8、16、32,以及搜索半徑為0.1、0.5、1.0、2.0。實驗結(jié)果表明,采樣數(shù)為256和光子數(shù)量為100萬時,PSNR達到了34.2 dB,SSIM為0.89??臻g劃分為16和搜索半徑為0.5時,PSNR為33.6 dB,SSIM為0.88。這些參數(shù)組合在降低噪聲和提高渲染效果方面表現(xiàn)最佳。
在室內(nèi)、室外場景下,實驗比較了PPM-MCPTO與傳統(tǒng)蒙特卡洛路徑追蹤算法的性能表現(xiàn)。結(jié)果顯示,PPM-MCPTO在室內(nèi)場景中將PSNR從28.3 dB提高到34.2 dB,SSIM從0.81提高到0.89;在室外場景中將PSNR從29.1 dB提高到33.8 dB,SSIM從0.83提高到0.88。結(jié)果表明,在室內(nèi)和室外場景下,PPM-MCPTO均能有效降低噪聲并提高渲染效果。
在建筑可視化應(yīng)用測試中,使用了混合場景包括現(xiàn)代化辦公大樓外觀、周圍的綠化帶和街道,以及部分室內(nèi)空間。實驗結(jié)果表明,在混合場景中,PPM-MCPTO將PSNR從27.5 dB提高到32.6 dB,SSIM從0.79提高到0.86。
PPM-MCPTO Renderer在處理建筑材質(zhì)的光照反射、透射和陰影效果方面表現(xiàn)出色,呈現(xiàn)出更加真實和細膩的渲染效果。與傳統(tǒng)方法相比,PPM-MCPTO策略在渲染時間上表現(xiàn)出更高的效率,提升了建筑可視化項目的完成速度。
綜上所述,本文通過深入分析光子映射的基本原理、PPM的實現(xiàn)方法及關(guān)鍵參數(shù)的調(diào)整和優(yōu)化,成功地降低了噪聲并提高了渲染效果。PPM-MCPTO能有效處理各種場景和材質(zhì)類型,尤其是具有高光澤度或次表面散射效果的材質(zhì)。通過開發(fā)PPM-MCPTO Renderer插件,實現(xiàn)了3ds Max中多種不同場景和混合場景的渲染任務(wù),進一步證明了PPM-MCPTO策略在高質(zhì)量、高效率和高可行性方面的優(yōu)勢。盡管PPM-MCPTO仍存在一定的局限性和不足,但在克服光線模擬挑戰(zhàn)和實現(xiàn)高質(zhì)量渲染方面已經(jīng)取得了重要突破。未來研究將繼續(xù)探索實時渲染技術(shù)的優(yōu)化,尋求更高效的光傳輸模擬方法和采樣方法。