*對我們而言,風格化渲染的一大挑戰始終在於陰影的處理。以下是我們針對《過度生長》計畫所採用的解決方案。 *
TL;DR(簡而言之):如果您只想看乾貨,請直接跳轉至“具體做法”部分。
風格化渲染——更具體地說是「繪畫風格」渲染——面臨著許多挑戰。若要讓畫面完美呈現預期的藝術風格,必須考慮3D渲染的各個面向。然而,往往總有那麼一兩個環節會暴露電腦生成影像那種過於精確的特質,從而破壞整體觀感。
對我們來說,「投射陰影」的處理往往就是這種破壞風格統一性的痛點之一。完美的3D渲染陰影會將物件的精確輪廓與細節投射到背景上,這種效果極易破壞原本優美的繪畫風格氛圍。
這是一個相當棘手的問題,因為陰影效果取決於光源、投射陰影的物體以及承接陰影的表面。我們不能僅僅透過調整被渲染物件的形狀、紋理或表面材質來實現風格化,而必須設法介入渲染流程本身。
先前,我們曾嘗試將這種繪畫風格的陰影效果融入我們的藝術追求中,但要么難以實現,要么因優先級不高而不值得投入過多精力。
在《Wing It》計畫中,我們透過嚴格篩選哪些物體投射陰影、哪些不投射,來實現陰影的風格化。在某些情況下,我們甚至創建了「陰影代理(shadow proxy)」——也就是用一個簡化版的物體來取代原始物體進行陰影投射。這種做法去除了大量細節,使陰影形狀變得更加簡潔。
在《Project Gold》計畫中,我們對整體藝術風格的呈現相當滿意:破碎的輪廓、表面處理以及漫反射與高光著色都營造出了理想的繪畫質感。唯獨陰影部分,我們始終未能將其調整至與整體風格完全契合。不過,最終呈現的效果倒也還算過得去。我們保持了投影相對柔和,並利用筆觸幾何體(brushstroke geometry)凹凸不平的表面來打破陰影的完整性。然而,這些陰影並未真正與整體美術風格融為一體。
到了《過度生長》項目,那種極其乾淨、完美的 CG 陰影問題再次出現了。這一次,解決方案似乎顯而易見:與其試圖讓陰影本身呈現出繪畫質感,不如直接讓投射陰影的物體邊緣具備繪畫風格。事實上,Andy 已經對投射陰影的物體(shadow casters)進行了大量塑形,以確保產生美觀的陰影形狀。我們只需更進一步,在物體邊緣仔細生成能投射出繪畫風格筆觸的幾何體即可。
為此,我們可以直接利用先前為《Project Gold》開發的 Brushstroke Tools(筆觸工具)設定。只需沿著想要投射陰影的物體的輪廓繪製一條曲線,這些筆觸就能為物體的陰影增添豐富的筆觸細節。
在我們的製作流程中,許多陰影都是透過「陰影投射體」手動放置的。這是一種簡單的網格模型(通常是平面),對攝影機不可見,其唯一作用就是投射特定的陰影。這是手動控制明暗區域的重要光照工具。
由於《過度生長》的美術風格包含非常銳利的陰影,陰影投射體的形狀會清晰可見。因此,Andy 利用幾何節點(Geometry Nodes)設定將矩形平面進行了圓角處理,甚至嘗試賦予其帶有紋理的邊緣,以略微柔化邊緣效果。於是,將邊緣轉化為筆觸線條的想法便順理成章地產生了。這就像提取邊界邊作為曲線,並將其輸入到「筆觸工具」(Brushstroke Tools)的節點組中一樣簡單。
這種方法效果極佳,對於我們現有的投影體(shadow casters)而言,幾乎無需額外工作。但處理任意 3D 幾何體則要複雜一些,尤其是涉及動畫的情況下。
首先,我們需要根據光源位置,沿著 3D 網格(mesh)的輪廓產生一條曲線,這樣筆觸才能沿著陰影的邊緣排列。
幸運的是,利用幾何節點(Geometry Nodes)可以輕鬆實現這一點。我可以沿用之前在 Wing It 專案中製作輪廓線時所使用的技術。唯一的差別在於,產生輪廓線的參考視點不再是攝影機,而是光源。
這種方法的一個主要問題在於,如果直接在網格表面產生筆觸,筆觸本身也會在網格上投下陰影。還好解決這個問題並不難:只需在投射陰影的物件的著色器節點(shader nodes)中稍作設置,根據光線距離來控製筆觸陰影的淡入效果即可。
這樣一來,陰影只會投射在較遠的位置。當然,接觸陰影(contact shadows)也會受到影響,但我們可以微調距離範圍,在保留所需陰影的同時,剔除不想要的陰影。
當幾何體發生移動或變形時,陰影的形狀也會隨之改變,因此筆觸也需要相應地變化。然而,若要透過程式化方式產生筆觸,並確保它們在變形過程中保持連貫、不出現突兀的閃爍或消失,難度實在太大,甚至可能導致工作量激增。
有時候,為了推動項目,適時放棄某些想法、轉而採用實際可行的方案反而是明智之舉。所以,很遺憾,這種方法並不能提供那種「一鍵生成、且看起來像手繪筆觸一樣穩定」的完美解決方案。
不過,如果你願意多按一個按鈕,在我看來,這個方案的效果其實已經相當接近理想狀態了。
只要動作不是特別劇烈或複雜,陰影其實並不需要太大的變化;它們主要需要跟著網格(mesh)一起移動。因此,一個合理的解決方案是:選取鏡頭中的某一幀作為代表,產生筆觸效果,然後在鏡頭的其餘部分讓這些筆觸隨幾何體一起變形。
另一個方案是利用「模擬區域」(simulation zone)來更動態地更新陰影。例如,可以設定每隔 4 幀觸發一次更新。這種做法雖然仍會產生「跳變」(popping)現象,但這種跳變可能會讓人感覺是刻意為之的藝術效果。
對我們而言,最佳方案是挑選合適的一幀並將其應用於整個鏡頭,因為我們的美術風格不希望出現任何跳變現象。此外,也可以針對不同畫面上的不同光照角度,烘焙兩組或多組陰影。這樣既能涵蓋不同的角度,又能避免跳變問題。
在製作《過度生長》的預告片時,我們決定選擇性地添加這種具有繪畫感的陰影,只在能產生顯著效果的地方使用。這樣一來,逐一添加陰影的工作量適中,我們無需費心建立一套複雜的程式化系統——畢竟那類系統往往容易出故障。
可下載檔案:
Blender 文件 - 6.5 MB - CC-BYshadow_outline-resources.blend
(相容於 Blender 5.2 LTS 及更高版本)
LGT-shadow_outline 物件追加(Append)或連結(Link)並覆蓋(Override)到您的場景中。
找到一格能體現場景陰影特徵的畫面。
調整設置,直到獲得滿意的效果。
開啟「幾何節點」(Geometry Nodes)編輯器,找到標示為「Bind Single Frame」(綁定單幀)的烘焙節點,將產生的筆觸烘焙並綁定到表面。此時,筆觸應已附著在表面上,並將在動畫的後續部分跟隨表面移動。
在設定渲染參數時,需要注意一些事項,以避免奇怪的偽影。
大功告成!
同樣的技術也可以用於其他場景。本質上,該設定是根據光源的視角產生輪廓線。但也可以根據攝影機的視角產生筆觸風格的輪廓線。
這不是我最推薦的輪廓線製作方法,而且需要一些額外的設定。請知悉!
只需將攝影機物件選作光源物件(設定為點光源),並確保物件及其著色器在攝影機視野中可見即可。
就是這樣!不妨試試資源檔案中的陰影輪廓,並在自己的場景中營造出繪畫般的視覺效果。請務必使用 Blender 5.3 Alpha 版本。
加入 並發表評論。