2016/01/17

Lele談VRay 3.3算圖最佳化技巧

原文 / Cheatsheet: How to get a Cleaner image with SP3
略譯 / Hammer Chen

字有點多,只有略譯重點的問題,知道前後脈絡觀念會比較清楚。重點部分已經用粗體標示。V-Ray 3.3的最佳化方法已經不像舊版那樣了。操作基本上建議先切到Scanline然後再切到V-Ray,以做到完全重置(reset)的效果。畢竟舊版你可能已經不小心動到線性流程的相關參數,例如sub pixel sample,或是clamp output。因為V-Ray 3.3要在嚴格的線性流程下才能發揮其威力。接著就是照Lele講的兩個規則:調Max AA Subdivs與Noise Threshold/Color Threshold這兩個就好,其餘就完全不要手癢去亂調了!


===以下為翻譯===

Lele開頭:我猜你會點這帖是因為想要知道如何移除雜訊,心理也準備好算圖時間會因此增加。你可以放心地專注於以下兩個參數就好:
  • Max AA Subdivs  (最大AA細分)
  • Noise Threshold/Color Threshold*  (雜訊閥值 /顏色閥值)
你還需要在render element中添加SampleRate才能幫助決策(添加這個不會增加算圖時間)

以下是兩個簡單的規則
  1. 如果SampleRate在影像雜訊的區域顯示藍色,請降低雜訊閥值noise threshold
  2. 如果SampleRate在影像雜訊的區域顯示紅色,請提高反鋸齒細分AA subdivs

下圖為小抄

就這樣,接著你就可以翹腳放鬆 V-Ray 3.3會接手做後面的(困難)工作。附上過程小抄說明圖

*這裡有個命名不一致的問題,關於自適應採樣與漸進式AA模式。我指的是這兩個參數 不是指global DMC,而sp3設定會採用預設值。


king_max 問:如果你電腦夠強大,你可以花時間在算圖,如果有快速設定的選項讓你可以忽略算圖時間,我覺得大部分的室內外設計師會採用這種用法,那麼何必要測試各種參數的排列組合呢?

Lele:我意思不是你需要微調,我是說,這篇教你怎樣微調。要早到最佳設定需要花很多時間,有時候會耗上一整天。這也是我們發展這個新功能的原因,讓你不會無止境地微調。你很有可能會誤以為我提出的解決問題方法需要不斷地式,其實我提供的是如何利用samplerate 慢慢地往最佳化的方向調參數 及這個方法背後的邏輯。設定雜訊閥值、設定max AA、按算圖。事實上,不需要,直接算圖。基本上預設值就適合絕大部分的場景了。

king_max :經過多年後,我知道如何微調場景的算圖參數。我意思是當我使用sp3時,預設值並不是對我場景可用的參數,我甚至沒辦法算出乾淨的圖片。如果我放任V-RAY調整subdivisions的話,因此我花了一整天微調這些參數,如果我有夠快速設定模式,我可以選擇 出圖等級 "production settings" 而不管要多少的過度採樣 ,也不管要花多少算圖時間,最後我可確定得到乾淨的影像,可能不是花三小時,而是花五小時。但我不需要花那兩小時在微調設定,你有看懂我在說什嗎?
(註: 我是那種喜歡最佳化各種參數的人,但是sp3廣告宣稱,單鍵算圖的選項,但用起來並不是這樣。在這我不是要抱怨,我很滿意V-RAY這套算圖器,至今已經用了10年了,我對於有新功能很興奮)

Lele :好,讓我弄清楚,你重置算圖設定至SP3預設值,絕對沒有去調整其他參數,然後按下算圖 最後得的一張帶有雜訊的圖片?若是真的這樣,我會想看看你的場景。如果不是,那麼,我們就不是在談同一件事,我無法理解你改了什麼,也無法知道什麼影響了你的作法。重點就是要避免微調, 因為調參數就是不幸的來源。

我希望我懂。回到預設值, 將MAX AA設定為100, noise threshold =0.001 算圖, 這樣你還算出有雜訊的圖嗎?現在將noise threshold = 1.0 然後算圖,算圖不快嗎?

Lele:這幾年做這事我做的很好,我認為我寫過的SCRIPT,工具進行大量的場景微調與最佳化,讓我多少有點可信度吧。 當我說我是新的功能的大粉絲, 是因為我看過統計數字。為了要讓新的V-Ray如同廣告所說,你必須要給它發揮功能的機會,也就是要避免微調(避免調參數 很抱歉 要改掉老習慣很難) 至少做幾次測試, 一旦你習慣新的採樣器, 你會更有資格評斷。

請試著兩個參數,看看結果如何:
如果你烘焙color mapping 然後用了大量clamping (ie. Rehinard with burn @ 0) 你可能還需要更降低noise threshold 但是結果是samplerat變得非常藍,算圖很快,雜訊很多。但是基本上,主要只需要調noise threshold。 再次強調,事實上, 我的錯, 以下是需要微調的參數是針對progressive and adaptive (我認為用詞需要用點愛)

Lele:你說的沒錯,所有需要微調的參數都在這裡。不論是我指的"Noise Threshold" 我是說在AA裡面的, 不是global DMC的那個。所以就是說Adaptive sampler裡面的"Color Threshold"

king_max :我每次都會讓場景亮一點來烘焙gamma/color mapping 這樣讓我可以快速一點取得乾淨的算圖, 請問在sp3的新功能是否做了類似的事情?

Jvincentfx45 :感謝您,如果改名稱的話會比較合理, 讓progressive sampler與AA的命名一致。

Lele:是! 沒錯。這就是sampler 做的工作, 既然你點出來了, SP3改的東西就是如你所說。因此用預設定並嚴格執行線性流程, 在SP2裡面就不可能 因為白色雜點(fireflies) ,暗部的不足採樣 高光的過度採樣.. 等等的。 對於SP3的只是小菜一疊,為了要強調好像破紀錄般, 忘記過去的作法吧, 給新功能一個機會。

在測試了許多場景過後 我覺得值得分享一下舊的SP2與新版SP3的差異
SP2的測試

差異來源主要是跟兩個主要功能有關, 改善的像素採樣與最佳化的反射焦散最佳化解析度,其三, 但是看不到, 則是新的漸進式採樣的方法, 雜訊閥值隨著新的pass減少, 因此夠快地看到新的影像。

值的一提的是
A)雜訊分布變得更加平均 alpha的採樣更好 更快
B)有了雜訊閥值 新的採器 讓算圖時間變為兩倍 相當線性 相當可預測 最終影像為原本的兩倍
C)光線分布明顯改善 特別是暗部區域(在beatuty render pass可看得出來
D)對於半透明的表面效果更美麗, 因為新的反射焦散的方法

由於新的採樣器會把力氣用在影像的不同區域,確實的算圖時間與雜訊程度最好要根據每個場景來判斷。換句話說, 請不要預期在速度上會有巨幅增快, 而是在差不多的時間內得到滿意的結果, 而且不需要讓你花太多力氣調整參數。在那張圖裡面雜訊的數值是透過nuke expression計算出來的。nuke expression計算當前像素與其周圍八個像素加上自己每個通道的絕對數值差異, 這很類似於新版V-Ray採樣器的計算方式。雜訊圖的數值是根據上述方法算出的每個像素的數值

請問這些新東東是針對漸進式採樣(progressive sampling)而已嗎?

不! 也可用在bucket renderer。

jacksc02 :新的預設值是不是不管Global DMC noise threshold?

Lele: 沒錯,Vlado 在別的地方有提

glorybound :我覺得我們又在調noise threshold , 那用MSR spinner的清理雜訊的方式該如何, 你是建議我們讓V-Ray處理材質與燈光的細分,  我會這樣問是因為當我讓V-Ray自己處理細分, 結果(SampleRate)出現很多紅色, 做小測試的結果通常無法應用到複雜的場景(譯者註:暗指開發人員只用簡單的東西做測試 開發出的東西不能用在實際的複雜專案) 因此我回到V-Ray舊版的使用模式。 目前, 我有個廚房場景, 如果我用你的方法要花 115分鐘才能完成。

glorybound :好, 我讀了整帖 。而你其實只的是color threshold 而不是noise threshold 在重置VRay至新的預設值後, 我得到的adaptive數值是1/24 而非1/100 為何?

Nicinus:這真是尷尬的笨問題, 請問我如何重置VRay 載入預設參數嗎?

short cirkuit :我也是這樣想, 變得越來越令人困惑了!
short cirkuit :切到Scanline再切到VRay就可以整個重置了。

eyepiz:其實變得比較簡單。 Lele的小抄結論很讚 就是重置Vray 然後按下算圖 今天我測試的場景最後的最佳參數是1/48與noise threshold = 0.006,  跟3.2最佳化的場景一樣好

我的確花了一天的時間才習慣新的作法, 最後算圖速度沒有比較快, 但是對於以前要平衡整體細分(subdivs)耗費精力來說, 變得超級簡單。我現在很樂於使用新的自動演算法。

Rens: 嘿! Lele 你最近好嗎?
請問以下是好的流程嗎 (在把舊場景重置到新的預設值後)
- 將max subdivs設到更高的數值(例如100)
- 降低color threshold直到你滿意算圖結果的雜訊強度
- 降低max subdivs 讓你剛剛好使SampleRate變成紅色 (也就是讓採樣達到做佳的速度與雜訊比,譯者註:就是CP值)

我是這樣看地, 首先你調整color threshold直到可接受的雜訊結果, 然後你再調低採樣, 如此VRay用這個max subdivs來算圖, 所以會達到平衡。如果細分太低, 那麼color threshold很容易就到頂(gets clamped) 。例如,假設你max subdivs低到5, 而sample rate elemen大部分都是顯示為紅色, 在這樣的情況下, 降低color threshold並不會改善紅色的區域 ,請問我說的正確嗎?因此, 簡單的流程是:  「首先將細分調到很高, 將threshold調低, subdivs調低」。
還有, 我想要糾正的是,如果SampleRate的紅色出現在物體的邊界是可以忽略的 ,你應該要在乎的是紅色出現在物體的表面, 也就是在物體邊界以外的區域。

>我想要糾正的是,如果SampleRate的紅色出現在物體的邊界是可以忽略的 ,你應該要在乎的是紅色出現在物體的表面, 也就是在物體邊界以外的區域。

Vlado答:正確。

Lele: Rens我以為你上軌道了!沒想到還更先進!對 對 對(Vlado已經回說對了)。你的作法可以讓你確保避免調參數調到迷失, 或是搞到超大的100 max subdivs的地步。而新的採樣器可以大幅減少這個風險,而且不需要用到舊版的color mapping小秘技,限制max subdivs則可以幫助避免使用過多的採樣。

既然你成功地使用第一種方法 ,可否請你提一下跟新的版本相比, 有什麼明顯差異。我不想暗示你, 所以也不會跟你說到底要比較什麼?

eyepiz: 唯一可見的差異是新版的色溫有點不同, 我預先烘焙gamma, 所以可能有些影響, 其他的我認為新的自動演算法運作地相當好。

glorybound:如果GI應該要打開 ,那為何不設為預設就開啟? 還有為何把Progressive設定為一分鐘, 我確定背後一定有其原因 ,或許應該要把Progressive time limit設為0, 然後memory allocatio也應該要設定預設值。

fco3d: 我還沒安裝更新,但有個疑問。這個新工作流程, 需要將Global Sub Mult設定為0 來移除所有的material/light subdiv  或者保留為預設值1。當我從別人那邊合併物件時, 具有不同的glossy設值, 我應該將材質的重置為預設8 或是改sub Mult,  如果我是用3.2版本做的場景 ,新版的會怎樣處理。

Lele:事實上, 採樣器並沒有失常, 只是你需要降低noise threshold讓採樣器能夠”看到” 像素的差異性。 我建議大家實驗看看noise threshold, 這個新的noise threshold 與舊的沒有什麼關連, 兩者的數值意義並不一樣。因此, 建議你試試看非常高的數值, 或者非常低的,看看結果。

Lele:請告訴我吧。如果有種不可治癒的調參數症候群, 我也想得阿!為了證明這點,在當我試出我寫的exposimeter腳本 "Enable Experimental 'Sample Rate Calculator'" 如此自動化算圖設定時,那已經是八年前的事了!對, 我聽到你了,也聽到大家的意見了, 請忘記過去好不容易養成的習慣吧 , 再者,我是被Chaos Group雇用,不是被Chaos Group洗腦。 相信我,我改信VRay 3.3純粹是因為我看到統計數字。

glorybound:我現在用V-Ray  3.30.03算圖遇到很大的問題, 我有一大專案每次算圖要花超過19個小時, 而且小專案也變得像這樣。 如果有人可以幫我看看問題, 很感謝。 現在我找不到在期限內完成專案的方法, 因為算圖時間這個久, 我必須要改用Corona算圖才能在死線前完成專案。 Corona render花不到兩小時, 可能是因為跟我場景的因素有關, 但我搞不懂。

Alan Iglesias:在我的測試裡面新版的變得很好用。當你開啟舊的檔案時, 切換到3.3一定要要確保你的算圖器完全重置, 我先把算圖器切換到Scanline然後再切回來, 然後再改Adaptive的採樣, 最終的結果顯著地變好。你永遠不會知道即便你切到3.3, 還有些參數有動到, 我希望再次強調重置算圖器的重要性 當你用舊檔案開啟V-Ray 3.3時。事實上 ,vlado你為何不提供一個可以完全重置算圖器的選單呢?

Pixelab :好! 如果你想要相反的結果 (超快的算圖 明顯的顆粒) 那最佳流程是什麼?
應該要增加noise value或是增加max AA subdiv?

Lele:呃 我也想知道。我想大家都會喜歡這樣的功能吧 ?(扯你後腿哈)
不幸地 ,如果你需要減少算圖時間, 你會得到更多顆粒 (假定算圖時間最佳化) 再次 你需要從1-100, 0.005開始, 然後逐步提昇

提昇至1.0 (沒錯 就是這麼高) 然後看看結果如何
算圖幾次後, 你會看到算圖時間/品質的演進

Lele:請給新的預設值BF+LC一個機會, 速度與品質會讓你驚艷(你會發現間接SP2無法做出的間接陰影) Vlado及其團隊在演算法方便, 在很多不同功能上(例如GI Caustics)下了很多功夫 因此你會發現舊的BF+LC聲名狼藉的速度變得明顯地加速。

Pixelab :老實說 我看著Lele給的小抄(我知道很多人會不認同)也就是第一張會是可接受的草稿 第二張是最終算圖 其餘三個是矯枉過正(雜訊與算圖時間)我的目標Noise Thresold是在0.01 但是誰記得測試狀況是 發現0.05就夠了(可是在某些材質有很多紅色 我猜我應該要把AA max再調高一點)我這樣正常嗎?

Lele:開玩笑歸開玩笑。 是,也不是。
是,因為以下三個原因

  1. 雜訊是主觀的感知(雜訊的強度可以用不可反駁的數值來量測) 也就是說你自己說了算 沒辦法由其他人來決定
  2. 測試算圖是很具有針對性的, 跟真實製作專案情況差很遠(有複雜的模型與材質) 因為我覺得這用採樣的改變解釋比較清楚
  3. 因為量測雜訊的數字, 雜訊可能更簡單 更容易看出來, 顯示落在標準的8位元的範圍內, 而sRGB可以顯示(例如灰階0-255的1 相當於0.00391的浮點) 在第二張圖中( 0.01的雜訊值最後導致0.0034的雜訊程度, 也就是小於螢幕可以顯示的0.0039)

因此, 要讓雜訊能夠更容易地看出來, 物體的材質要更複雜

不對, 因為下述原因

  1. 雜訊觀感是主觀的, 還有第三者的意見比你還重要, 也就是客戶。 最終你必須要出圖到客戶滿意, 因此必須要快速地達到客戶的最低標準, 而沒有設定操作問題
  2. 儘管新版的採樣器比較不仰賴燈光與材質的細分, 可能還是會有少數的例子比預設值需要降低雜訊閥值或是更多AA。 可能是因為某些奇怪的材質或是燈光或是模型設定, 就是沒有辦法清乾淨雜訊 。因此建議你不要認為這個規則可以套用到所有情況, 而是用在常見的狀況(不同的場景)。你的里程數(算圖時間)有可能會些差異。
這要依據怎樣的雜訊程度是你可以接受的, 我發現在很多例子裡面BF可以跟最佳的品質相比如果沒有比較快至少可以一樣快(例如當計算irradiance map計算時progressive BF render已經看起來相當好了)

notamondayfan:才剛測試3.3新的工作流程, 目前用起來還不錯。有幾個問題
  • 問題1  材質與燈光的細分到底是怎樣控制的? 我場景中用了很多xref物件 (基本上我場景檔案主要只有攝影機與燈光而已) 因此會不會因為使用xrefs就沒有調到它的材質呢 ?或者subdivs純粹在算圖時才計算, 在舊版裡, 我必須要去xref的材質細分, 然後更新 但我希望用了新版我不需要做這件事。 
  • 問題2 當我重置到預設值Global DMC變成了16,  請問改成8會不會比較好, 因為有些材質 /燈光並不需要設到8
  • 問題3 我發現新版對於解決反射雜訊很有一套, 但是燈光雜訊似乎有點顆粒 ,我必須要降低color threshold才能得到可接受的雜訊。 請問這是不是跟對於材質細分的過度干涉有關呢?
vlado答:
  1. 問題1細分的數值是在算圖時產生的, 不需要去改X-Ref的任何東西。
  2. 問題2 這裡請維持預設值, 不要改
  3. 問題3 自適應的計算是不管雜訊來自材質或是燈光, 因此理想上應該不需要調整雜訊閥值,但我會想看看你的場景實際狀況。
順代一提的是,我們內部版本的V-Ray研發 shading採樣的元件 (反射/GI/照明/折射)完全是獨立的,可以在其他元件完成前終止計算,只是結論並不是很確切。

Alex_M:請問你的雜訊是否因為有過亮個像素? 因為你用了HDRI 可能會有些超亮的部份或者因為HDRI的gamma參數而產生過亮的數值 ,這會導致反射出非常亮的射線, 從這個HDRI非常亮的部份, 如果你把"Max ray intensity"調成20,  看看反射雜訊是否還在。 請不要調太低, 因為這會降低影像的動態範圍。

hammerbchen:請問
  1. 如果在雜訊區域的SampleRate顯示為紅色 我應該要提高noise threshold 或是維持不變
  2. 如果在雜訊區域的SampleRate顯示為藍色 我應該要降低max AA subdivs或是維持不變
Lele:問的好!我覺得可以做個max AA / Noise Threshold爭論的合理比喻,如此可以把問題釐清。我們先把算圖分成兩個階段, 從V-Ray的角度在算圖的時候(這不是內部實際運作的方式 但這很好的類比:
a) V-Ray 需要看到場景的東西才可以決定是否要對其採樣或者不管。我們可以決定V-Ray對場景的視覺有多精確, 靠的就是Noise Threshold。降低Noise Threshold讓V-Ray 看的更用力找尋裡的東西, 在你命令其結束以前, 會更執著於清理場景的雜訊
b)一旦V-Ray找到東西需要採樣時,它會開始其工作 直到變乾淨(換句話說,就是看到不認為需要再採樣為止)或者直到其達到Max AA,就會遵照我們的命令停止工作
如果我們用了很高的noise threshold, V-Ray事實上會立即停止,不管其max AA的數值,因為我們告訴V-Ray 不論你看到什麼就是夠好了,請停止看了。相反地, 如果數值是0.0 代表V-Ray會持續地採樣直到max AA數值, 即便是最簡單的場景也一樣。

>如果在雜訊區域的SampleRate顯示為紅色 我應該要提高noise threshold 或是維持不變?
在雜訊區域顯示紅色表示V-Ray發現這區域有東西需要採樣, 但是已達到它採樣的最大能力了(Max AA)。但是,不需要改變noise threshold, 也就是比喻來說V-Ray看到了多少。相反地我們需要對該區域有更多採樣, 因此提昇max AA是解決之道。

>如果在雜訊區域的SampleRate顯示為藍色 我應該要降低max AA subdivs或是維持不變?
這樣的話, 在這個區域代表max AA從達到, 根據之前的比喻 V-Ray看的不夠, 因為它不知道該區域需要增加採樣, 換句話說V-Ray以為該區域是乾淨的, 如同Noise Threshold所指導的。因此我們不知道如果應該要提高或是降低max AA。 首先我們需要確認在這些區域進行採樣 在我們判斷該如何調整max AA以前, 我們需要先降低Noise。這樣是否有回答您的問題?

hammerbchen: 我覺得可以畫個決策樹, 讓這個過程自動化。 如果我們有個介面可以告訴V-Ray哪個區域是雜訊的, 結合SampleRate, 經過幾次迭代計算後, 或許可以開發成單鍵全自動算圖器。

padre.ayuso:問個笨問題, VRay或是其他算圖器, 是否真的有能力判斷有雜訊或是沒雜訊? 我意思是: 前面有討論過, 我們告訴VRay這邊應該多一點, 那邊不需要, 但是V-Ray 到底能不能知道有沒有雜訊? 因為如果是這樣, 那麼對單一個按鈕就能達到可接受的雜訊程度,或者你可以圈選說這個區域還是帶有點雜訊 VRay就可以很神奇地在該區域添加更多採樣, 最終算圖時針對該區域移除雜訊。 我不知道, 問個怪問題, 但我很懷疑程式本身自己無法判斷出用戶認為是雜訊的區域?

hammerbchen:請問我如何遵行你的V-Ray 3.3兩個規則,跟舊的V-Ray Toolbar/ V-Ray Quick Settings一起使用? V-Ray Quick Settings是否還是有意義的? 還是說我應該要完全不要用這個快速設定?

Lele:嗯quick settings script是在sp3之前所寫的, 會大幅更動採樣。因此如果你用新的方法,建議你最好不要用 V-Ray Quick Settings,但是這個快速設定,如果你還是使用local subdivisions setups 那麼還是有意義的。

[延伸閱讀]
 VRay之父vlado談V-Ray 3.0參數設定(影片逐字稿)

Lele談 V-Ray 3.3新增功能 (逐字譯稿)
Post a Comment