第四章 、 實作過程與結果討論
4.2 多項式全域照明計算結果
4.2.1 實驗一:單一照明光源場景測試
我們將前述所提的構想及演算法進行實作,表1 為程式開發環境,所有實驗 計算過程及結果的彩現成像完全透過軟體方式進行計算,並沒有使用硬體加速圖 形計算,而表中所列3D API僅用來呈現場景安排、光源位置變動及視角更改等使 用者互動操作部份。表2 為程式執行實驗環境。
程式工具 Microsoft Visual C++ 6.0
3D API Microsoft DirectX 9.0 SDK
作業系統 Microsoft Windows XP SP2 表 1 程式開發環境
中央處理器 AMD Athlon 1.3GHz
記憶體容量 768MB RAM
作業系統 Microsoft Windows XP SP2 表 2 實驗測試環境
我們收集了兩個場景進行實驗:寺廟(Temple)及修道院(Cloister) ,場景模型由 [WWW]處下載取得,表 3 為場景的幾何資訊。實驗執行時,我們採用視角固定的 方式,並且只針對場景中之可視點進行彩現成像。
項目
實驗場景 Object 數目 Vertex 數目 Polygon 數目
Temple 97 9674 19230
Cloister 81 40939 81410
表 3 實驗測試場景
對於每一個測試場景,實驗執行的流程如圖 26所示。主要分為兩部分,第一 部分為前處理,首先進行光子發散及收集並進行光子密度圖轉換,直至取樣完成 所有光源位置,並計算出多項式照度圖。第二部分為互動操作及彩現顯像計算,
由新的光源位置透過多項式照度圖還原光子密度圖,接著進行場景彩現計算。
圖 26 程式實驗執行流程
實驗進行前,我們需先設定測試參數值,表 4之數值分別表示測試場景在每個光源 取樣點所發散光子數量,同時也顯示場景空間分割後的空間取樣點數目。
項目 實驗場景
光源發散光子數 場景空間取樣點 光源取樣位置
Temple 40000 44100 182 Cloister 30000 61712 96
表 4 測試場景進行光源取樣及空間分割的數據
表 5中,(A)項目之數值表示測試場景由每個光源取樣位置進行光子發散、追 蹤及收集,並轉換至光子密度圖花費的時間;(B)項目之數值表示將這些光子密度 圖轉為多項式照度圖其計算多項式係數所花費的時間。將這兩個計算時間加總即 為前處理所花費的總時間,如表格中(A)+(B)項目。表格中最後一項數值為場景使 用多項式照度圖進行彩現顯像時每秒繪圖的畫面格數。
項目
實驗場景
(A) 光源發散光子 至建立光子密度圖
(B) 計算多 項式照度圖
(A) + (B) 前處理 時間
彩現顯像 (Frames /
Sec) Temple 2760 秒 47 秒 2807 秒 2.2916 Cloister 3120 秒 56 秒 3176 秒 1.375
表 5 測試場景進行前處理計算及彩現階段所花費的時間
表 5中,我們在相同場景採用不同的彩現方式進行光源位置變動時計算速度比 較。可以從表中數值觀察到採用本論文的多項式照度計算節省大量的計算時間。
項目
實驗場景 Ray Tracing Photon Mapping Polynomial Illumination Map
Temple 12 秒 10.6 秒 <1 秒
Cloister 21.3 秒 20.3 秒 <1 秒 表 6 不同的彩現方式計算時間比較