2013/05/03

VRay調參數的技巧

在進入這篇翻譯文之前,我想說明一下通用的調參數經驗。我用顯微鏡的使用當做比喻:我們用顯微鏡觀察微小的東西,例如細菌。透過調整粗調節輪與細調節輪,只有在某個距離才會完全對到焦,眼睛看到的細菌畫面會最清楚。在這樣的狀況下,我們可以說在某個細調節輪與粗調節輪的旋轉條件下,可以對到焦。這就像是V-Ray調整到最佳參數一樣,只有在調整到某個參數,才可以得到最佳結果。



問題不是能不能得到最佳結果,而是如何在最短的時間內調整到最適當的結果。畢竟V-Ray這套外掛具有相當多的參數,如果不能有系統地調整,很容易變成亂槍打鳥。 或者是有些人就是直接抄別人的參數來使用,可是每個場景並不相同,適合別人的參數對自己場景來說,往往不是最佳化的。怎樣調整參數才是合理的?一定要有系統的方式才能達成。

我以顯微鏡對焦為例:一開始的時候把接物鏡貼到非常接近玻片的距離(在V-Ray裡面我們可以視為這是基準的參數),然後用粗調節輪使接物鏡慢慢遠離玻片(在V-Ray裡面我們可以視為把某個參數調高或是調低),一邊調整一邊觀察對焦狀況,如果看到畫面有點清晰了,我們再以細調節輪來旋轉。最終你就可以很有系統地調整到對焦的畫面(也就是 V-Ray最佳化的參數了)。

----以下為翻譯----

V-Ray合理的參數設定
原文:Making sense of VRay Settings
作者:James Shaw
翻譯:Hammer Chen

最近Ryan Lintott跟我參加了V-Ray教育訓練的研討會,由Vray的開發者(Vlado)親自教導,介紹了VRay的幾個要點,包含了一步一步地分解操作,每個步驟都有合理的邏輯來達到最佳的品質與速度比。如果不把拿來分享的話太可惜了,所以就決定把學到的東西貼上來,希望透過這樣的解釋,V-Ray可以變得比較沒有那麼複雜,你也能更精確地評斷場景中設定上的問題!

核心的觀念是:每個場景都不同,對於細節表現與Global Illumination都有不同需求。網路上有貼了很多設定的教學,適合作為VRay設定的要點參考,也有很多爭論怎樣的設定才是最佳的 。事實上怎樣才是最佳的設定每個場景都不同,當然囉!有些標準是可以通用在不同的場景 。如果你真的想要得到高品質的陰影細節,但又希望算圖快一點的話,用分析場景的方式你更能夠在每個步驟精確地判斷怎樣參數設定才是適當的。

以下我將看過最常見的設定:使用Irradiance Map與Light Cache 這樣是最常見的GI設定引擎,請記得如果是對於動畫來說,會建議使用Brute force 與 Light Cache 請見:Vlado與Francesco Legrenzi合著的V-Ray完全手冊(VRay: The Complete Guide)

以下是步驟:

基本設定
將你的場景分解成以下操作

設定標準的DMC數值 〉測試Light Cache 〉 測試Irradiance Map〉客製化DMC的細節層次

這裡使用的場景是由我同事Nic Hamilton做的,可以用來專門用來測試結合了直接/反彈光源,寬廣的空間/細節表現。你可以到這裡下載檔案。設定是用線性的色彩空間,但是請不要在VRay frame buffer中按下sRGB,因為gamma 2.2已經烘焙到colour mapping中了。我建議你如果使用現有的場景,先用整體材質取代,使用128灰色的V-Ray材質球,這樣你可以看的更清楚採樣等等細節,要不然材質某種程度上會干擾你觀察採樣。

請注意整個步驟
不同解析度會有不同效果,這邊的設定相當高,因為解析度只有720。同樣的視覺原理也可以套用到更高的解析度,但你也可以把參數調低一點。這裡我用的很多設定都很高,因為從材質與燈光的角度來看,這只是很簡單的場景,更複雜的燈光與材質代表會增加算圖時間,你就必須要減少這些算圖設定。

場景用的是線性色彩空間,你可能會需要先看這篇文章了解。

這對初學者來說可能有點複雜,但看你能不能做出來。

設定標準的DMC數值
將預設的DMC調成以下數值


這兩個參數控制自適應的程度,在大面積的表現自適應的特質,例如數值為1表示完全自適應  會在大面積的區域盡可能地把採樣分的越開。如果是0的話表示每個採樣會非常密集,會花越多時間算圖。


我們之後再回來看colour theshold這個參數

測試LIGHT CACHE
將你的primary 與secondary bounces設定為light cache,並將subdivs與 interp samples設定成以下:


這裡我們將subdivs設定的非常低,所以sample size非常高 (對於解析度720的畫面而言)最重要的是把interp samples設定為1,所以樣採樣之間不會有模糊化處理,可以很明確地看到畫面上到底發生了什麼事情。

按下RENDER按鈕你應該會看到以下畫面



所以在這裡你要觀察的是什麼? 這就是關鍵。你看到目前採樣相當大,這表示會遺失細節表現,而在大面積的區域,採樣又會太稀疏,甚至會與牆面相互混合(光線滲漏的問題)。所以在本例裡面採樣太小。你可能會問為何我們不一開始就設定很小的採樣,捕捉到場景的細節呢?因為noise雜訊。試著把sample size採樣尺寸設定為0.001 看看結果如何。你可以看到結果 或是把subdivs調高,或是透過調高interp samples模糊化結果。可以解決雜訊的問題嗎?試著改成0.02你可以得到以下結果:



這個尺寸相當好,解決了大部分的陰影細節。如果不考慮後面牆的陰影的話,但是如果採樣更小的話,會產生更多雜訊。

現在我們把subdivs調高吧!每次VRay自攝影機送出ray到場景中的表面,然後在表面產生採樣大小的球面,然後將球面細分subdivides,用來計算更多採樣。它也會檢查採樣周圍的顏色(colouring) ,然後使用該顏色。

將subdivs細分數值由500調高到2000,觀察採樣顏色的平滑性差異,以及相對應的算圖時間增加。你可以選擇適合自己的參數,但是2000的結果已經夠好了不是嗎?

現在將light cache改變由“screen” 到 “world” 將sample size改變成0.2m (將subdivs維持為2000) 你會得到以下結果:



你可以發現現在在背面牆上有更多細節,因為細分採樣成0.2 metre samples。因為這個會是比較好的設定,因為我在背景沒有太多東西。這是室內場景,也可能在畫面背景的游泳池提昇陰影細節。

現在我們確定了參數,為了要測試其他的不要重複計算,現在按下save儲存LC。



然後再切換成這樣


記得要切換成single frame,如果你改變了light cache的任何設定,或是移動攝影機。唯一不需要重新計算的是當你改變interp samples的時候。

Interp samples主要是會模糊化效果,所以你可以在儲存完LC之後再改變Interp samples。將參數改變到40,或是任何可以產生好結果的數值。請注意這會需要花一點時間計算,越多模糊化 ,你就會越失去陰影的細節,這要看你的需求而定。

LIGHT CACHE的注意事項
另外要注意的事情是light cache的 “screen” 與“world”的差別 Vlado說“world”類型很適合用在室內場景,背景有比較少的細節,但是對於大型的室外場景,light cache會對大量物件採樣,例如設定為0.1m的背景,這會產生很多雜訊,而且算圖時間會很久。

Number of passes指的是你的電腦CPU 核心數量。VRay會使用這個數值傳送到各別的核心計算 ,將這個數值設定到最大值。如果你有八核心電腦,就設定成八。如果你有hyperthreading,就設定成16。如果你用render farm計算,就設定成到整體最大值。最簡單的方式就是打開工作管理員,看看有多少CPU在跑。

開始測試IRRADIANCE MAP
將primary反彈調整成irradiance map,這時候維持secondary為light cache,同時還是載入已經算好的LC Map。如上圖的40 interp samples。

將irradiance map由預設的high切換成cutsom,然後如下圖改變參數,請記得將interp samples設為1 ,所以我們可以清楚看到samples的作用。



將max rate改成跟min rate一樣,讓我們看一下min rate是怎樣分布採樣的,算一次圖你會看到類似這樣的結果,變黑色的影像但有明顯的白色採樣。


現在將max與min rates都降到-4 看看結果,看到採樣分的更開了,你可以知道irradiance map是可以很自適應地。會用到最少的空間。現在將max rate設為-1, min rate設為-4,你應該可以得到以下影像:


現在我們應該要觀察什麼呢? 嗯現在我們已經將max rate調高了。請看這些採樣在細節多的區域的分佈如何 (細節是由pixel對比或是由colours的差異所決定的),所以我們要看的是在陰影與GI細節的區域,例如椅腳的底部,或是窗戶週緣,或是水泥地板的細節表現。

現在試著把參數改成min -3 與max 0。看起來相當好,我現在有好的採樣分布在我希望看到陰影細節的地方,例如椅腳,水泥版的線,以及開放區域我得到很平均的採樣分布。請看算圖時間的差異,還維持在可接受的35秒。


現在我們來看看如果我們改變“clr thresh”數值─這是colour threshhold的縮寫,告訴VRay像素間的顏色對比多大,所以0.1會查看非常細微小的對比,在該區域擺上maximum rate的採樣。你會發現這個數值太大了, 因為它在整個影像上都平均分布採樣了,會讓我們花了很多時間在算圖上面,也會造成雜訊。

在第二張影像裡面我們採用0.9,跟0.1相比是另一個極端狀況。只會在高反差的像素顏色地方擺放採樣,不是非常靈敏。你會看到它如何找到主要細節,但在細節跟細節間的細節就忽略了。在細微與粗糙的陰影之間沒有好的混合。



讓我們還是採用預設值0.3,通常可以得到不錯的結果,不要管“nrm thresh” 與 “dist thresh”這兩個參數,Vlado先生他自己承認這是沒必要的控制參數。

現在將“show samples”選項關閉,將HSph subdivs數值改為20 ─ 這是hemispherical subdivisions的縮寫,跟你自攝影機射出的ray打到表面,然後自表面細分的ray數目有關,數值越高則會有越多的ray 就會有越好的採樣品質,所以這關係到irradiance sample的品質,算一張圖我們會得到:



現在改成50看看



現在改成100看看


我們要觀察的重點是什麼呢?要觀察的是算圖時間與雜訊,不同的算圖參數,第一個花了20 secs,第二個30 secs,第三個花了75 secs。第一個可能會產生具有雜訊的結果,就算我們進行模糊化(透過內差處理interp amount) 但還是不好用。當採用50採樣時,顏色分布相當平均,有一點點的塊狀問題,但應該可以模糊掉。當100採樣時,並沒有比50好很多,而且明顯地增加了算圖時間。所以將參數設為50左右應該很適當。

這就是折衷的結果。你必須要決定算圖時間VS與算圖品質之間的平衡,但有了這樣一步一步地分析,你知道你要觀察的重點是什麼,以及如何做出合理的選擇。

現在把IR的採樣資訊也儲存起來



將interp samples改成20(這是預設值)。數值越高會增加你的算圖時間,就像light cache一樣會模糊化算圖結果,越高的interp samples會讓你失去陰影的細節。

所以這就是我們最終的影像,在椅腳具有好的陰影與GI細節,且有好的深度表現,唯一可以見到的雜訊問題是牆面上的陽光,這跟光線的品質有關 (size multiplier)我們可以把sun的subdivs調高到16就可以解決了!


現在GI 的部份解決了

IRRADIANCE MAP的注意事項
這可能可以得到高品質的結果(算圖時間比較慢),所以可以作為我們專案製作的參數,但是我們要回到adaptive DMC,然後採用colour threshold來控制整體的算圖品質與時間。

你可以使用這個方法,用在動畫上面,每10個frames地incrementally saving the irradiance map and light cache to files,而不是使用out single passes (use “fly-through” for light cache and “multi-frame incremental” for irradiance map) 這能排除掉閃爍的問題,並且可以解省你大量的算圖時間,只要場景沒有移動的物體,這是最棒的方法。

客製化DMC的細節程度
本教學的最後一個部分是要教你處理反鋸齒,並使用DMC colour threshold來控制整體的品質

如果你回到Adaptive DMC settings,當你使用DMC sampler就會鎖定它,現在你可以維持現有的參數,然後調整noise 與 adaptive amount 但你可以調整colour threshold得到類似的結果。


所以首先取消勾選 然後將“Clr thresh”修改成0.1

然後到render elements添加VRaySampleRate,你可以看到影像的採樣狀況


透過VRay frame buffer你可以觀察到RGB image (beauty pass)或the Sample rate,我們可以看前一張或是下一張查看影像的採樣品質


所以按下算圖,使用以上設定,你應該會看到如下結果:



你在VRaySampleRate裡面所看到的是跟antialiasing反鋸齒的採樣位置有關,越淺的藍色就代表有越密集的採樣,你會看到算圖非常地快速,所以可以很快地知道整體的反鋸齒品質,但現在我們必須要提昇品質。

現在將colour threshold改成0.01


你會發現現在有更多採樣了,影像也相當乾淨。這是預設值,但是要在前面椅子的到更多細節的話,我們需要更多採樣,將max subdivs調高到6,看看結果如何。我們會得到:


所以如果我們持續地調高max subdivs,你會發現採樣上沒有太多差別了,因為colour threshold到頂了。它會達到某種品質,決定是否夠好了,會比較像素之間的顏色對比colour contrast threshold。

將colour threshold調整到0.001,你會得到以下結果,你會發現現在在平坦的大區域提供細節,如果我的有高解析度,或是複雜的材質,我們會發現調到0.01會明顯提高算圖時間,但能夠展示出許多細節。所以理論上,我們可以把max subdivs調到非常高,然後調整colour threshold 作為整體品質的拉桿,在最小與最高品質間調整。


但要警告各位,這個參數非常地敏感,請特別注意品質與算圖時間。如果max rate太高的話,可能會花太多時間在極細微地方,你可能永遠不會察覺。儘可能地調低這個參數(max subdivs) ,然後你再把colour threshold數值調低(會往品質高的方向調整)。看看這幾個的算圖時間,分別是12 與 46 secs。結果沒有明顯的差異,所以對這兩個參數要注意,要不然你等算圖可能會等到死。

我發現場景max subdivs=6  與colour threshold=0.008 差不多合用,這是各種因素折衷考量的結果。

[相關文章]
V-Ray原廠全球專業認證考試

VRay SSS2 參數調整技巧

2 comments:

Matellion said...

AWESOME 3Q hemmer !!

iGou said...

Great job Hemmer!!