2012/10/07

Vray最佳設定 ─ 如何選擇GI引擎



如何選擇GI引擎


Via:http://renderstuff.com/
作者:Anton, Max
翻譯:Hammer Chen

儘管V-Ray的GI引擎看似有許多選擇, 但是能用的排列組合其實就那幾種. Photon map我們在前篇教學裡面很快地就排除掉了, 也解釋了原因. 最萬用的 能夠解決所有狀況的, 當然就是Brute Force演算法, 但因其缺乏內建的自適應興 與大量的運算資源需求, 請不要把BF當成每日GI算圖引擎. 甚至如果用有提供最佳化的算圖引擎跟BF相比, BF會耗費達十倍的算圖時間. 只有在某些狀況, 當最佳化的算圖引擎無法處理算圖錯誤的問題, 才建議你改用Brute Force.



這樣就縮小範圍到Irradiance mapLight cache這兩個演算法了, 這樣情況就變的很簡單.回想前面介紹IM與LC演算法的內容, 就可以很容易理解由IM產生的GI Maps的品質, 比LC產生的GI Maps的品質要高. 這是因為, 儘管有些資訊是由內插產生的, IM的自適應性讓IM能夠在重要的區域計算出更精準的結果, 而LC只會決定用馬賽克的採樣方式來決定GI採樣的顏色, 無差別地把場景做細分.

當然啦, 我們可以把LC的設定調到很高, 拿來跟IM的視覺品質相比. 但, 這樣 LC的計算時間就無可避免地增加了, 讓我們就會想回去用Brute Force, 因為這樣一來用BF跟用LC就沒差別了. 除此之外, 記憶體的消耗, 以及如果是大張的LC Map 與傳遞LC map到所有的電腦作分散式算圖也會是一大缺點.

Irradiance map演算法計算的結果會比LC GI map更柔化, 最後的算圖結果比較柔和, 不會有GI 的雜訊, 這也是為什麼IM必須要做為GI 的算圖引擎的原因了.

但是, 我們不該忘記V-Ray把間接照明分成第一次反彈與第二次反彈. 回到IM的功能上, 我們知道理論上rradiance map, 不能將之設定為第二次反彈的GI引擎. 根據上述的資訊 Irradiance map是唯一我們能設定為地一次GI反彈的引擎. 現在你猜猜看那第二次反彈應該選哪個引擎呢?

Light cache演算法比IM演算粗糙. 但是, 我們已經知道第二級的GI反彈對整體的光照的重要性比第一級 GI反彈要低, 因此, 較不精確的LC非常適合處理第二級的GI反彈. 除此之外, Light cache的計算會分成好幾的階段---Show calc. phase, 這是很棒的預覽, 無可取代的功能. Light cache演算法應該用在各種的V-Ray設定裡面. 當然, Light cache應該用做第二級的GI反彈引擎上面.

常見的GI問題
現在, 我們已經討論過所有的V-Ray GI算圖演算法, 決定運作的方式以及選擇最合理與實用的用法. 是該考慮可能會遇到的問題與解決方案了! 一般來說, GI算圖會有兩大問題, 更精確地說, 兩種的錯誤 (artifacts)---也就是雜訊與髒污(noise and dirt) .怪的是, 但是造成錯誤的原因以及解決之道其實沒什麼, 通常是因為缺乏足夠的GI採樣品質. Irradiance map裡面的HSph. Subdivs參數與Brute force和Light cache的Subdivs參數, 都會造成上述問題. 增加這些參數的數值會減少GI maps的雜訊, 我們不該因為這些錯誤而停止往前.

但因為造成算圖上面的汙點, 或是他們稱為小碎花"flakes", 這些其實會藏在在整個場景的細節裡面, 所以值得你再更仔細地研究.

髒點, 也就是黑色, 灰色甚至小白點會出現在GI map, 由IM演算法產生的. 這全都是因為irradiance map細節不足所造成的.

兩張測試算圖的效果, 角落的地方直接光照照不到, 必須要靠間接光照來照明. 左圖顯示了不好看的錯誤, 特別是紙堆的位置. 右圖提升了 Max rate數值, 也就沒有那樣的問題, 即便是在最細緻的地方也沒有算圖錯誤.

請看這張圖, 你不需要很近去看, 就可以看出在紙堆的位置有很明顯的雜訊問題.從事室內設計算圖的專家們應該很清楚這種狀況. 在沒有直接光照特別容易出現這種錯誤, 在具有許多細節的場景裡, 例如天花板的飛簷處很容易有這種問題.

缺乏對這類問題本質的了解, 會讓你用很特殊的方法來對抗這個問題, 最簡單的做法是胡亂力提升IM的HSph. Subdivs數值 LC的Subdivs的數值, 改變單位, 改變sampling sizes, 把主光源的Subdivs提高到非常高的數值, 甚至為了要模糊化GI 就把interpolation的數值提高到非常高. 但是, 這些不是最有效的方法, 請看以下:

我們可以先複製一個原本用在最後算圖攝影機 , 然後在整個場景中作移動, 特別要拍到那些算圖有問題的物體. 然後, 使用script, 這個script是拿來產生動態的攝影機, 這個攝影機完全重複了第一級與第二級相機的位置, 最後得到的結果就像是攝影機飛越的動畫(fly-through animation) 而攝影機在有問題的物件周圍飛行.
接下來, 就是要為每個frame動畫計算一級與二級的GI反彈貼圖了, 同時合併兩種maps. 因此, 就可以得到有更多細節的GI maps了. 在之後, 這些圖只會用在原始的相機角度的那個frame上面.

當然啦, 這樣的特殊結果可能會修正某些GI的問題, 但是設定起來十分無聊, 而且會耗費大量的場景設定時間, 一點也不優雅且倉促的方法! 花時間在調整參數 測試每個新的場景一點也不合理. 了解問題的本質, 這其實可以從更根本的, 更低階的做法來達成. 了解這問題的本質, 我們應該回歸到IM的原理, 特別是它以低解析度來探測場景中的幾合體的方法. 在大部分的狀況, 還有V-Ray的預設屬性, 即便是在最終的IM prepass也會使用採樣不足(undersampling)的設定.

也就是說, IM的色彩採樣會比最終算圖的解析度低很多, 畢竟, 是用內插的方式才達到想要的解析度. 在上面的例子裡, 兩張解析度都是400X500像素, 左圖是用Max rate=-4來計算, 這表示最後一個IM的prepass是400x500, 然後除以2, 除以,2 除以2, 除以2----這樣會得到25x31像素的解析度.


這張圖是一樣的算圖效果, 算出25x31像素然後在Photoshop裡面內插成為400x500.

這張圖展示了irradiance map可以有多小張, 然後用內插法得到該有的尺寸. 當然囉, 用這樣的方法獲得細節是不可能的. 左邊灰色的矩形是沒有內插的效果, 解析度為25X31像素, 就算是用最高數值的內插, 因為如此小張的解低度不可能達到寫實的效果. 如果在紙堆的地方兩個甚至三個白色區塊, 在25x31的解析度上, 用黑色的像素把這兩個白色區塊隔開, 不論你怎樣對這些像素作內插, 都只會產生糢糊的影像, 這也就是在有大量細節的場景容易出現的問題了!

現在你一定了解到要產生有細節的IM, 然後要消除角落的黑斑, 我們必須要增加最後一個IM prepass的解析度. IM的計算是用Max rate=0 的時候就是定義最終的算圖解析度大小, 右圖沒有明顯的錯誤, 而且陰影比較清晰, 沒有低解析度的IM因為內插計算所產生的模糊問題.

除非場景中的物體有出現這些錯誤, 否則沒有必要用更高細節的IM來計算整個序列. 這樣會很不合理, 會耗費擬好幾個小時計算, 對於其他原本沒有問題的場景算出來的結果跟高細節的設定看起來差不多. 為了要不消耗電腦資源, 我們建議只去處理有問題的片段.

結論
這篇與之前教學所提到的GI從實用的觀點是最有效率的, 不要浪費您的時間, 金錢或是電費在無意義的方法上面  ; )

親愛的朋友們, 我們很誠摯的希望您仔細地閱讀這些教學, 你可以很清楚地知道間接照明的本質, 你可以靈活地應用參數, 輕易地應用自己的知識, 獲得最佳的視覺效果.

在接下來的教學裡面, 我們將學習V-Ray的速度與品質控制, 也會深入到算圖器的設定 輕易地設定得到漂亮的3D算圖效果.

下次見囉~

[相關資訊]

No comments: