劉莉萍,楊華琦
(合肥信息技術職業學院 安徽 合肥 230601)
蒙特卡洛路徑追蹤算法是計算機圖形學(computer graphics,CG)領域中廣泛應用的全局光照渲染算法,其優勢在于能夠生成具有高度真實感的圖像,且能夠處理復雜的光照效果,如陰影、反射、折射、散射等。然而,該算法也存在著噪聲和計算效率方面的問題,為了得到清晰的圖像,需要大量采樣和計算,導致渲染時間過長。為解決以上問題,研究者們提出了眾多優化方法,其中基于光子映射的方法近年來受到了廣泛關注。光子映射是一種結合了正向和反向光線追蹤的全局光照算法,能夠有效地降低噪聲并提高渲染質量。本文提出一種在3ds Max軟件中實現蒙特卡洛路徑追蹤算法性能優化策略(progressive photon mapping-based monte carlo path tracing optimization,PPM-MCPTO),并通過實驗加以驗證。
蒙特卡洛路徑追蹤算法是一種利用隨機采樣來模擬光線在場景中傳播和交互的渲染算法,該算法從相機發出一束光線,并追蹤光線在場景中的傳播過程,直到遇到光源或被吸收為止。在光線傳播過程中,算法需要計算光線與物體表面的交點和交點處的表面屬性(如法線、反射率等),從而得到場景中的光照情況[1]。通過在多次隨機采樣中對像素值進行累積,可以得到最終的圖像。
蒙特卡洛路徑追蹤算法存在著噪聲和計算效率問題。一方面,噪聲是由于隨機采樣過程中產生的誤差導致,因此,隨機采樣的次數越多,噪聲越小,但計算效率也越低[2]。另一方面,計算效率問題是由于算法需要計算光線與場景中物體表面的交點和交點處的屬性,當面對復雜場景時,此計算則極為耗時。
光子映射是一種全局光照算法,通過模擬光子與場景物體的相互作用來計算間接光分布。光子映射過程包括從光源發射光子,以及沿著場景中物體表面的反射、折射或透射,最終光子信息被存儲在光子圖的數據結構中[3]。光子映射算法可以分為兩個階段,即光子發射階段和光子收集階段。在光子發射階段,算法模擬光子在場景中的傳播過程;在光子收集階段,算法根據存儲在光子圖中的光子信息計算最終的渲染圖像。漸進式光子映射(progressive photon mapping,PPM)是一種改進的光子映射算法,它采用迭代的方式逐漸提高渲染質量。與傳統的光子映射方法相比,PPM能夠在更短的時間內生成更清晰、更平滑的渲染圖像[4]。本文提出了一種基于PPM和蒙特卡洛路徑追蹤(MCPTO)的混合渲染優化策略PPM-MCPTO,旨在進一步提升蒙特卡洛路徑追蹤算法的渲染效率和效果。
為了實現PPM-MCPTO,需要對采樣數、光子數量以及空間劃分和搜索半徑進行適當的調整和優化。
2.2.1 采樣數
采樣數,即在渲染過程中每個像素發出的光線數量,直接影響到渲染圖像的質量和計算量。采用基于局部梯度的自適應采樣方法,可以根據場景中的光照變化和紋理細節動態分配采樣數[5]。通過對比不同采樣數下的渲染效果和噪聲分布,可以確定一個合理的采樣數區間,從而在渲染質量和計算時間之間達到最優的平衡。
2.2.2 光子數量
光子數量是指在光子映射過程中發射的光子總數。選擇適當的光子數量對于保證渲染質量和控制計算時間非常關鍵。因此需要對不同光子數量下的渲染結果進行詳細的對比分析,并根據場景的復雜度、材質屬性及光照條件,動態調節光子數量,從而實現在一個確定的光子數量區間內的性能優化[6]。
2.2.3 空間劃分和搜索半徑
空間劃分和搜索半徑是光子收集階段的重要參數,影響渲染質量和計算時間。采用基于k維樹(k-dimensional tree, KD-Tree)的自適應空間劃分方法,可根據場景的復雜度和光子分布動態劃分空間。同時需將不同搜索半徑對渲染效果的影響納入研究,確定合適的搜索半徑區間。在此區間內,根據收集到的光子密度調整搜索半徑,能夠達到降低噪聲并提高渲染質量的目標。
綜合運用上述參數調整和優化策略,PPM-MCPTO能夠在保證圖像質量的同時降低計算量,為實際渲染項目提供更高效、可靠的解決方案。
3ds Max是一款廣泛應用于游戲開發、建筑可視化、電影特效等領域的專業三維建模、動畫和渲染軟件。它的強大功能主要來自于其多樣化的渲染引擎選擇和靈活的腳本語言支持。用戶可以根據具體需求選擇諸如V-Ray、Arnold和Mental Ray等多種渲染引擎,以滿足各種不同的渲染需求和風格。3ds Max還內置了MAXScript腳本語言,這種語言強大而靈活,用戶可以利用它編寫腳本來定制工作流程,或者開發各種功能強大的插件。本文中的PPM-MCPTO策略被實現為名為“PPM-MCPTO Renderer”的3ds Max插件。該插件采用了基于PPM和蒙特卡洛路徑追蹤(MCPTO)的混合渲染策略,為3ds Max用戶提供一種新的、高效的渲染工具。
3.2.1 插件架構
“PPM-MCPTO Renderer”插件采用PPM與蒙特卡洛路徑追蹤相結合的混合渲染器設計。該插件主要包括光子發射模塊、光子收集模塊及參數調整模塊3個核心模塊。
(1)光子發射模塊致力于模擬光子在場景中傳播的過程,進而構建光子圖數據結構。在具體實現中,模塊首先根據概率密度函數(PDF)從所有光源中隨機選取一個光源,并進行加權。接著,依據所選光源類型生成一定數量的光子,運用蒙特卡洛追蹤方法對光子進行追蹤。每次碰撞時,根據物體材質屬性(如BRDF/BTDF)確定光子的反射與折射方向。此外,通過俄羅斯轉盤算法決定是否繼續追蹤。最后將光子的位置、方向及能量信息存儲于光子圖數據結構(如kd-tree)中。
(2)光子收集模塊根據光子圖計算出最終的渲染結果。首先,模塊依據相機模型確定場景中每個像素對應的視線方向,此相機模型可根據用戶設定的參數(如焦距、感光元件尺寸等)進行調整,進而針對每個像素點,運用射線追蹤算法計算直接光照,并采用光線-光源相交方法判斷該像素點是否受到直接照射。緊接著,從光子圖中檢索與每個像素點相交的光子,依據這些光子的能量和顏色計算出該像素點的間接光照值。最終將直接光照和間接光照值相加,得到像素顏色值。對于多次采樣的像素,使用PPM的累積緩沖區來合成最終顏色。
(3)參數調整模塊主要負責優化算法參數,如采樣數、光子數量和搜索半徑等。通過圖形界面或命令行接口,允許用戶調整各種參數。該模塊提供自適應采樣功能,依據圖像的顏色梯度調整采樣數量,降低噪聲并提高計計算效率。
“PPM-MCPTO Renderer”作為一個獨立的渲染器插件,可以與3ds Max中的其他渲染引擎協同使用,其樹形結構如圖1所示。

圖1 PPM-MCPTO Renderer插件設計架構
3.2.2 用戶界面設計
插件設有實時預覽功能,用戶可以在調整參數時實時查看渲染效果。采用逐像素更新的方法,并使用多線程渲染技術以提高響應速度。為了方便用戶后期處理和存檔,參數調整模塊還提供導出渲染結果的功能,支持輸出多種圖像格式(如PNG、JPEG、EXR等)及圖像分辨率、壓縮率等多種選項。PPM-MCPTO Renderer的用戶界面功能見表1。

表1 PPM-MCPTO Renderer的用戶界面功能列表
實驗使用一臺計算機,配置為Intel Core i7-9700K處理器,32 GB內存,NVIDIA GeForce GTX 1080顯卡;實驗采用3ds Max 2023版本作為主要的實驗平臺。為了全面評估所提出的渲染方法,實驗選用了3個具有不同特點的場景組成的數據集:室內場景(包含家具和光源的起居室)、室外場景(陽光照射的城市廣場)和混合場景(室內外相互連接的畫廊)。以上場景涵蓋了各種幾何體、材質和光源的組合,可反映不同場景下渲染方法的性能表現。
4.2.1 渲染效果評價
為了全面評估渲染效果,實驗采用峰值信噪比(peak signal to noise ratio,PSNR)和結構相似性指數(structural similarity,SSIM)2個主要評價指標。PSNR反映了圖像的噪聲水平,其值越高表示噪聲越低,圖像質量越高;SSIM是一種基于人類視覺系統的圖像質量評價指標,能夠衡量圖像結構信息的保留程度。SSIM值越接近1,說明結構信息保留得越好,圖像質量也越高。通過這2個指標,可以從不同方面評估所提出方法的渲染效果。
4.2.2 渲染時間評價
為了評估所提方法在渲染時間方面的優劣,實驗記錄了每個場景在使用不同優化策略時所需的總渲染時間,并進行了比較分析。通過對比渲染時間,可以得知所提出的方法在性能上是否具有優勢,以及其在不同場景下的表現。這有助于驗證方法在實際應用中是否能夠滿足渲染速度的需求,從而為進一步改進和優化提供參考依據。不同優化策略渲染時間對比見表2。

表2 不同優化策略渲染時間對比
實驗分別調整采樣數為64、128、256、512,光子數量為10萬、50萬、100萬、200萬,空間劃分為4、8、16、32,以及搜索半徑為0.1、0.5、1.0、2.0。實驗結果表明,采樣數為256和光子數量為100萬時,PSNR達到了34.2 dB,SSIM為0.89。空間劃分為16和搜索半徑為0.5時,PSNR為33.6 dB,SSIM為0.88。這些參數組合在降低噪聲和提高渲染效果方面表現最佳。
在室內、室外場景下,實驗比較了PPM-MCPTO與傳統蒙特卡洛路徑追蹤算法的性能表現。結果顯示,PPM-MCPTO在室內場景中將PSNR從28.3 dB提高到34.2 dB,SSIM從0.81提高到0.89;在室外場景中將PSNR從29.1 dB提高到33.8 dB,SSIM從0.83提高到0.88。結果表明,在室內和室外場景下,PPM-MCPTO均能有效降低噪聲并提高渲染效果。
在建筑可視化應用測試中,使用了混合場景包括現代化辦公大樓外觀、周圍的綠化帶和街道,以及部分室內空間。實驗結果表明,在混合場景中,PPM-MCPTO將PSNR從27.5 dB提高到32.6 dB,SSIM從0.79提高到0.86。
PPM-MCPTO Renderer在處理建筑材質的光照反射、透射和陰影效果方面表現出色,呈現出更加真實和細膩的渲染效果。與傳統方法相比,PPM-MCPTO策略在渲染時間上表現出更高的效率,提升了建筑可視化項目的完成速度。
綜上所述,本文通過深入分析光子映射的基本原理、PPM的實現方法及關鍵參數的調整和優化,成功地降低了噪聲并提高了渲染效果。PPM-MCPTO能有效處理各種場景和材質類型,尤其是具有高光澤度或次表面散射效果的材質。通過開發PPM-MCPTO Renderer插件,實現了3ds Max中多種不同場景和混合場景的渲染任務,進一步證明了PPM-MCPTO策略在高質量、高效率和高可行性方面的優勢。盡管PPM-MCPTO仍存在一定的局限性和不足,但在克服光線模擬挑戰和實現高質量渲染方面已經取得了重要突破。未來研究將繼續探索實時渲染技術的優化,尋求更高效的光傳輸模擬方法和采樣方法。