Blender 3D:從菜鳥到專業/Cycles 中的螢火蟲,續
|
|
適用 Blender 版本:2.68。 |
你 之前閱讀過 有關在使用 Blender Cycles 進行渲染時控制螢火蟲的技術,以及當所有其他方法都失敗,調整渲染器引數也無濟於事時,是時候推出去噪濾鏡了。有時在整個影像上應用去噪可能過於生硬,導致影像中沒有螢火蟲的部分出現不希望有的效果。
但不要害怕。Blender 的合成器中還有更多我們尚未探索過的選項,可以讓我們更精細地控制去噪的應用,並希望避免最後的手動修復(震驚!恐怖!)影像編輯程式中各個瑕疵的措施。
基本原理是,螢火蟲是由特定型別的材料和照明的相互作用引起的,因此它們只會出現在影像的特定部分。透過將有問題的材料/照明情況分離出來,我們可以有選擇地僅將濾鏡應用於它們,從而最大程度地減少對影像中看起來很好的部分的副作用。
我們將介紹一種進行分離的方法。
Cycles 渲染器能夠將不同型別的燈光路徑分離到單獨的通道中以進行單獨處理。考慮 Blender Wiki 上的圖表,展示了直接照明、間接照明和顏色計算是如何透過漫反射、鏡面反射和透射燈光路徑分解的,然後與發射和環境照明組合在一起。我們可以拆分所有這些通道,並使用合成器節點來重新建立如上面所述的標準組合。但我們也可以將自己的處理過程穿插到特定通道中,而其他通道保持不變。

要告訴 Blender 我們想要提取燈光通道,請轉到屬性
視窗中的渲染層
上下文,並查詢通道面板。注意“漫反射”、“鏡面反射”、“透射”和“次表面”下分別有四組三個按鈕,分別對應“直接”、“間接”和“顏色”?(根據您的 Blender 版本,“次表面”組可能不存在。) 單擊所有這些按鈕,並選中下面“發射”和“環境”框。

現在,如果您回到合成器視窗,您應該會看到 RenderLayers 節點生成了許多額外的輸出端點,每個端點對應您單擊的按鈕/複選框。
接下來,我們想要重新組合這些節點,以模擬 Blender 預設提供的行為。如果您回到上面的 Blender Wiki 圖表,您會看到,對於每種著色器型別(漫反射、鏡面反射等),直接和間接燈光通道加在一起,然後將總和乘以顏色計算結果。然後將所有通道的結果加在一起。

Blender 合成器有用於新增和乘以顏色的標準節點型別。有了這些資訊,您可能立即開始著手組建一個複雜的節點設定來實現該圖表中描述的公式,最終可能得到類似右側的結果。
向經驗豐富的計算機程式設計師展示它,他們會做出一個被稱為“facepalm”的手勢。是的,從技術上講,這將起作用,但它看起來相當複雜而且容易出錯。假設您連線錯誤:您將如何找到它?您將如何除錯您的節點程式?
因為,不要搞錯,節點是一種程式語言。組裝一個節點設定非常類似於編寫一個計算機程式。其中一個重要的原則是不要重複自己。也就是說,如果您發現自己重複執行相同的步驟不止一次,那麼將它寫出來一次,然後下次告訴計算機再次執行相同的操作是有意義的。
|
在程式設計中,懶惰是一種美德。程式設計師將大量時間花在想辦法避免工作上,透過讓計算機來完成它。 |

那麼讓我們看看程式設計師將如何處理同樣的問題。首先,考慮最基本的操作,即:新增直接和間接分量,然後乘以顏色。因此,建立一個 Mix 節點對,一個用於 Add,另一個用於 Multiply,並將它們適當地連線起來。將它們變成一個組 CTRL + G ,並像圖中一樣新增組輸入和輸出。
要更改輸入和輸出的名稱,可以在節點編輯器視窗中的屬性架 N 中出現的列表中選擇它們,然後在列表下方相應的欄位中輸入新的名稱。

完成所有佈線後, TAB 退出組,以便您可以為它命名。在這裡,我稱之為“通道合併”。看看命名輸入和輸出如何幫助澄清節點的作用?如果您想檢視詳細資訊,只需 TAB 進入節點以瞭解更多。這種技術稱為抽象,您從只看到概述開始,但您可以逐漸剝開層級以檢視更多細節,但僅限於您想要檢視的地方。這是一種處理複雜性的重要技術,程式設計師每天都在使用它。

我們將需要四個該組的例項,以及另一堆 Mix 節點將它們全部加在一起。我們正在新增 6 個量,因此我們需要 5 個 Mix 節點。同樣,我建立一個組來合併所有這些加法器,只是為了使事情更整潔。

我將結果組命名為“Add6”。Blender 只提供節點以一次新增兩個量,但我們在這裡建立了自己的自定義節點,可以一次接收 6 個輸入。整潔吧?

因此,現在我們將我們的構建塊組合成一個新的構建塊,計算所有通道的組合,看起來像這樣。
注意組輸入的排序,以確保我們在下面連線此節點時排列整齊。您可以透過從屬性架 N 中的列表中選擇一個輸入並使用列表旁邊的向上和向下箭頭按鈕來更改其位置來重新排列輸入。

然後,當我們將該構建塊(在這裡稱為“Combine All”)連線到所有 RenderLayers 輸出時,我們的完整節點設定現在看起來像這樣。
將此與最初簡單地重現通道組合演算法的結果進行比較:當您開啟 Blender 文件時,您更願意看到哪一個?
|
組中包含組:當您在一個組中包含另一個組時,您可能會對 TAB 鍵的行為感到困惑:它會退出當前組,還是帶您進入內部組?如果您選擇一個內部組,它當然會進入該組。但是,如果您試圖退出,單擊一個不是組的節點。您始終有兩個這樣的節點,即組輸入和組輸出節點,它們方便地用黃色的標題欄標記出來。因此,在按 TAB 之前,單擊其中一個,這會讓您退出該組。 |
無論如何,現在我們已經將照明通道分離出來,以便我們可以重新組合它們以生成原始影像,那麼我們究竟如何解決螢火蟲問題呢?

首先,我們必須確定哪些通道產生了螢火蟲。單擊合成器節點編輯器視窗標題中的“背景”複選框。現在, CTRL + SHIFT + LMB 單擊 RenderLayers 節點,您應該會看到一個新的 Viewer 節點自動出現並連線到該節點的第一個輸出端點。同時,視窗的背景會改變,顯示該輸出端點產生的影像。第一個端點應該顯示完整的影像,包括螢火蟲。
持續按下 CTRL + SHIFT + LMB ,檢視器節點將依次連線到每個輸出端。一些輸出端可能全黑或全白,別擔心,繼續操作即可。當您到達 Diffuse Indirect 輸出時,您應該會看到類似於右側的影像,大部分是黑暗的,但有明顯的螢火蟲。記下這一點並繼續操作;我發現 Glossy Indirect 輸出在這種情況下的另一個問題來源。

因此,我們需要在 RenderLayer 節點的 Diffuse Indirect 輸出和 Combine All 節點的對應 Diffuse Indirect 輸入之間插入一個 Despeckle 節點。但與其只建立一個簡單的 Despeckle 節點,不如建立一個自定義節點組。為什麼?因為我們將在兩個地方都需要它。所以與其設定兩次,不如只設置一次,並插入兩個例項。這樣,我們只需在一個地方調整去斑點設定,它就會自動生效,無論哪裡有例項。此外,我們可能想嘗試在 Despeckle 之外或代替 Despeckle 使用其他濾鏡;同樣,我們只需要在一個地方進行更改,它就會自動影響所有例項。
“不要重複自己”,還記得嗎?

所以現在,我們已經將自定義的“Fix Fireflies”節點組的幾個例項插入到最麻煩的光線路徑中。

這是渲染後的結果。
螢火蟲可能很麻煩,特別是沒有一種 100% 萬無一失的方法可以消除它們。畢竟,如果有,為什麼不直接將其作為每個渲染的自動部分內建進去呢?這兩頁介紹了一系列處理螢火蟲的技術,從簡單到複雜。當然,先嚐試簡單的方法是合理的,只有當這些方法不夠好時,才值得花時間在更復雜的方法上。
- Bartek Skorupa 的這段 影片,它啟發了這篇文章。