使用 YafaRay 的光子映射(Photon Mapping)來為模型著色時,如何適當地設定光子部份的參數如:光子數(Photons)、光子反射次數(Depth)、搜尋半徑(Diff. radius)、光子搜尋數量(Search),不是件容易的事。本文介紹用光子映射圖(photon map)來評估光子映射的設定是否適當。
在開始討論之前,首先要注意一個建模的問題。由 YafaRay 社群夥伴分享的經驗:牆必須要有厚度,而不只是一個面;且搜尋區域的直徑(搜尋半徑x2)必須小於牆厚,否則牆角或交接處會可能有漏光的情形。光子映射的搜尋半徑單位是 Blender 單位(BU)。本文使用的測試模型的牆、版厚是 0.2 BU。在下面的兩張圖裡,第一張圖的搜尋半徑是 1 BU、第二張圖的搜尋半徑是 0.1 BU;明顯地在第一張圖右側牆面和左側牆面、及右側牆面和天花板的交界處有漏光的情形。因此一開始,我們可以根據模型的牆厚,作為設定搜尋半徑的基準。
到 YafaRay 的 Settings 面板,著色方法選 Photon mapping (1)。啟用 [Final gather](2)和 [Show map](3)按鈕,其他的設定維持預設值,如下圖。
開啟 [Show map] 可以讓我們用光子映射圖來評估各項參數的設定是否恰當,著色之後的結果如下圖。我們可以看到有很多的光斑,這就是 YafaRay 用搜尋半徑和搜尋數目這兩個參數計算出來場景中的光子密度分佈。此外,在右側牆面和左側牆面、及右側牆面和天花板的交界處,這是沒有光源直接照射的地方,但卻出現白色色塊,這表示極可能會有漏光的情形發生,如本文開頭的第一張圖。
解決上圖問題的方法是減少搜尋半徑。因為測試模型的牆、版厚是 0.2 BU,所以把搜尋半徑改為 0.1,結果如下圖 。白色區域消失了,但在光斑間有一些黑色的區域,這表示 YafaRay 在這些區域裡找不到光子。
改善上圖的方法之一是提高光子數。下圖是把光子數提高一倍的結果。
上圖的黑色區域明顯變少。消去黑色區域的另一個方法是提高反射次數(Depth)。下圖是把反射次數提高為 10 的結果,只剩下少數黑色區域。反射次數是一顆光子在場景中撞到物件反彈的次數,反射次數愈多代表光子能到達更多的表面,而提高場景中的光子密度,也使著色結果更為明亮。
根據 Raytracing roundup with YafaRay 這份解說,調整光子搜尋數量(Search)的目的是要讓相鄰光斑間的顏色變化更為平順(coherent)。但在本例中並未出現明顯差異,且有時改變後反而使黑色區域增多。因此最後成果搜尋數量維持 100。以下第一張圖是最後成果的光子映射圖,第二張圖是著色成果。
小結:
References:
在開始討論之前,首先要注意一個建模的問題。由 YafaRay 社群夥伴分享的經驗:牆必須要有厚度,而不只是一個面;且搜尋區域的直徑(搜尋半徑x2)必須小於牆厚,否則牆角或交接處會可能有漏光的情形。光子映射的搜尋半徑單位是 Blender 單位(BU)。本文使用的測試模型的牆、版厚是 0.2 BU。在下面的兩張圖裡,第一張圖的搜尋半徑是 1 BU、第二張圖的搜尋半徑是 0.1 BU;明顯地在第一張圖右側牆面和左側牆面、及右側牆面和天花板的交界處有漏光的情形。因此一開始,我們可以根據模型的牆厚,作為設定搜尋半徑的基準。
到 YafaRay 的 Settings 面板,著色方法選 Photon mapping (1)。啟用 [Final gather](2)和 [Show map](3)按鈕,其他的設定維持預設值,如下圖。
開啟 [Show map] 可以讓我們用光子映射圖來評估各項參數的設定是否恰當,著色之後的結果如下圖。我們可以看到有很多的光斑,這就是 YafaRay 用搜尋半徑和搜尋數目這兩個參數計算出來場景中的光子密度分佈。此外,在右側牆面和左側牆面、及右側牆面和天花板的交界處,這是沒有光源直接照射的地方,但卻出現白色色塊,這表示極可能會有漏光的情形發生,如本文開頭的第一張圖。
解決上圖問題的方法是減少搜尋半徑。因為測試模型的牆、版厚是 0.2 BU,所以把搜尋半徑改為 0.1,結果如下圖 。白色區域消失了,但在光斑間有一些黑色的區域,這表示 YafaRay 在這些區域裡找不到光子。
改善上圖的方法之一是提高光子數。下圖是把光子數提高一倍的結果。
上圖的黑色區域明顯變少。消去黑色區域的另一個方法是提高反射次數(Depth)。下圖是把反射次數提高為 10 的結果,只剩下少數黑色區域。反射次數是一顆光子在場景中撞到物件反彈的次數,反射次數愈多代表光子能到達更多的表面,而提高場景中的光子密度,也使著色結果更為明亮。
根據 Raytracing roundup with YafaRay 這份解說,調整光子搜尋數量(Search)的目的是要讓相鄰光斑間的顏色變化更為平順(coherent)。但在本例中並未出現明顯差異,且有時改變後反而使黑色區域增多。因此最後成果搜尋數量維持 100。以下第一張圖是最後成果的光子映射圖,第二張圖是著色成果。
小結:
- 根據場景模型的尺寸來決定搜尋半徑,牆厚是一個很好的基準;
- 如果光子映射圖中光源沒有直接照射的部份出現白色色塊,降低搜尋半徑;
- 降低搜尋半徑後可能會出現黑色不連續色塊,黑色色塊表示該區域沒有光子,可用增加光子數或提高反射次數來提高光子在空間中的密度;
- 調整光子搜尋數量讓相鄰光斑間的顏色變化更為平順。
References:
留言
張貼留言