在 3D 裡做 2D 漫畫風格:形體!線條!著色!— BCON26(第 4/4 段)


🏦 台灣Pay 銀行轉帳 💙 PayPal
講者展示 2D 漫畫風的角色鏡像、toon shading、Grease Pencil 填色轉網格與法線調整等技巧
- 35:36 proof of concept:物件變形中在新 layer 繪圖,先把名為 new 的 layer 排除,讓它不受前面 modifier 變形,再套用反向 bind to mesh
- 41:14 有快速按鈕可建立 key light、rim light 或 extra light,其實只是改顏色,但能快速建立打光
- 46:36 最後一張投影片;有問題可以在 LinkedIn 找到講者
💡 你可以怎麼用:如果你用 Blender 做卡通風,可以先試兩件事:在 Eevee 裡把 specular 關掉,並用 Map Range 取代 Color Ramp,用數字控制亮暗交界和軟硬。手繪的填色如果看起來像貼紙、不受光,就想辦法轉成網格,並讓它借用臉部的法線。
看全部 32 條重點
🧑🏫 這段是 BCON26 講者分享的收尾,示範怎麼在 Blender 的 3D 裡做出像 2D 漫畫的角色:嘴巴隨角度自動翻面、卡通式光影,還有讓手繪填色跟著光影變化。很多是他自己做的工具或還在實驗的點子,適合想做 3D 卡通風、又不想被寫實光影綁住的人參考。
- 35:36 proof of concept:物件變形中在新 layer 繪圖,先把名為 new 的 layer 排除,讓它不受前面 modifier 變形,再套用反向 bind to mesh↳ proof of concept(先手動試做看看可不可行):物件正被 modifier(疊在物件上、隨時可調的效果)變形時,要在新 layer(繪圖層)畫圖,先排除叫 new 的層避免被變形,再做反向綁定。
- 36:14 因此繪圖會先跳到奇怪位置,接著取消排除就能正常運作;講者覺得把這個做成工具或 modifier 會是有趣挑戰↳ 所以剛下筆時線會跑到奇怪的位置,取消排除後就正常了。步驟可行但手動很麻煩,講者覺得把它包成工具或 modifier 是值得挑戰的題目。
- 36:14 講者的角色設計很依賴角度,例如嘴巴,角色一旋轉就會出問題↳ 他的角色像 2D 手繪,五官畫在哪要看角度,例如嘴巴偏在臉的一側。角色一轉向,嘴巴就可能出現在錯的地方。
- 36:50 解法構想:做一個看角度(相對於攝影機的旋轉)的 mirror modifier,也可加 empty 來微調,旋轉 empty 就會切換到另一側↳ 構想是做一個 mirror modifier(鏡像效果),依角色相對攝影機轉了多少,自動把嘴翻到另一側。再加一個 empty(沒有形體、只當參考點的物件),轉它就能微調翻面的時機。
- 36:50 除了鏡像,還加入依旋轉角度做遮罩(mask)的選項↳ 除了翻面,也能依旋轉角度做 mask(遮罩,決定哪些部分顯示、哪些藏起來)。
- 37:22 Demo:旋轉攝影機後,嘴巴會自動鏡像↳ 實際示範:攝影機繞著角色轉,嘴巴轉到某個角度就自己翻到另一邊,不用手動改。
- 37:22 mask 用途是做 in-betweens:例如加第二個偏正面的嘴,依角度隱藏部分嘴巴;切換很生硬,但很適合 2D 動畫↳ mask 可以用來做 in-betweens(兩個姿勢之間的過渡畫面):多放一個偏正面的嘴,依角度藏掉部分嘴巴。切換是瞬間跳過去、不平滑,但這種跳換正好很有 2D 動畫的味道。
- 37:54 toon shader 是講者斷斷續續做最久的 shader;Eevee 改成 Eevee Next 後陰影走向寫實,NPR/toon shading 受影響,他期待 NPR 有新發展↳ toon shading(把光影做成一塊塊色塊的卡通著色)是他磨最久的 shader(決定表面怎麼受光上色的設定)。Eevee 引擎改版成 Eevee Next 後陰影偏寫實,NPR(非寫實風格)變難做。
- 38:25 使用的方法稱為 RGB light shading:燈光只顯示紅、綠或藍其中一個通道,再把通道分開;只有 Eevee 能用 Shader to RGB node 做到↳ RGB light shading:讓每盞燈只發紅、綠或藍其中一色,再把三色拆開,就知道每盞燈各照到哪裡。這要靠 Shader to RGB node(把光照結果轉成顏色的節點),只有 Eevee 有。
- 38:25 設定很簡單,使用 Principled shader;以前用 Diffuse shader,因為感覺比較輕、比較簡單↳ 設定很簡單,底層用 Principled shader(Blender 內建的萬用材質)。他以前用 Diffuse shader(只算柔和漫射光的基本材質),因為感覺比較輕巧、簡單。
- 39:02 Principled BSDF 若在 normal 接入 attribute 但該 attribute 不存在,會退回預設值,這點很重要;Diffuse shader 沒有這個特性↳ Principled BSDF 的 normal(表面朝向,決定光怎麼打上去)如果接了一個不存在的 attribute(物件上存的自訂資料),會自動改用預設值、不會壞掉;Diffuse 沒有這個保護。
- 39:02 唯一的調整是把 specular 全部關掉,specular 另外處理↳ 唯一的改動是把 specular(表面反光的亮點)全部關掉,高光改用別的方式另外處理。
- 39:35 用 Map Range 而非 Color Ramp:Color Ramp 無法控制、不能改參數數字;Map Range 能調整亮部/陰影位置,也能調柔或調硬↳ 他用 Map Range(把數值從一個範圍換算到另一個範圍的節點)取代常見的 Color Ramp(漸層色條)。Color Ramp 沒辦法用數字參數控制,Map Range 可以用數字調亮暗交界的位置和軟硬。
- 40:08 toon shading 需求一:能做出各種風格與氣氛,從無陰影的平塗到純黑陰影↳ 需求一:同一個 shader 要能做出不同風格和氣氛,從完全沒有陰影的平塗,到陰影是純黑的強烈風格都要做得到。
- 40:08 需求二:能覆寫基底色,例如進入藍光或黃光的房間時,可設定 0% 到 100% 覆寫↳ 需求二:能蓋過物件原本的顏色,例如角色走進藍光或黃光的房間,可以設定被染色的程度,從 0% 到 100%。
- 40:08 需求三:兩層色調的平塗陰影,講者舉 Dragon Ball Z 為例,效果很戲劇化↳ 需求三:陰影要能分成兩層深淺色塊,像《七龍珠Z》那樣,畫面很戲劇化。
- 40:43 需求四:可調整陰影與高光的顏色、柔和度、混合模式(mix 平塗、multiply 陰影、add 亮部),也能移動位置↳ 需求四:陰影和高光的顏色、軟硬、位置都能調,還能選 blend mode(顏色疊加方式):mix 直接蓋上平塗色、multiply 讓陰影變暗、add 讓亮部更亮。
- 40:43 Demo:把這個 shader 套在 Suzanne 上↳ 示範:把這個 shader 套到 Suzanne(Blender 內建的猴頭測試模型)上看效果。
- 41:14 有快速按鈕可建立 key light、rim light 或 extra light,其實只是改顏色,但能快速建立打光↳ 有按鈕可以一鍵建立 key light(主光)、rim light(從側後方勾出輪廓的邊緣光)或額外的燈。其實只是換燈的顏色,但打光快很多。
- 41:14 因為大量打光在 shader 內處理,需要一個按鈕把著色屬性轉移到其他物件或 collection,這是接下來的重點之一↳ 打光效果大多寫在 shader 裡,所以每個物件都得套同樣的設定。他需要一個按鈕,把著色屬性一次傳給其他物件或 collection(物件群組),這是下一步的重點。
- 41:47 Grease Pencil 的 fill 是平面,貼到表面很快就會穿插;另一個問題是眼睛、嘴巴、小鴨上的 OK 繃不受光影響↳ Grease Pencil(Blender 裡在 3D 空間畫 2D 線稿的工具)的 fill(填色)是平的,貼在曲面上很快就會互相穿插。而且眼睛、嘴巴、小鴨的 OK 繃都不會跟著燈光變亮變暗。
- 42:21 解法是把繪圖轉成幾何:講者做了一個把繪圖轉成 mesh 的 modifier↳ 解法是把畫出來的東西變成真的立體幾何:他寫了一個 modifier,把繪圖轉成 mesh(由點、邊、面組成的 3D 網格)。
- 42:54 此 modifier 可隱藏線條或保留原始線條,視想要的效果而定,也能改拓樸↳ 轉換時可以選擇藏掉線條或保留原本的線稿,看想要什麼效果;也能改 topology(網格的點、線、面怎麼排列連接)。
- 43:24 依變形需求調整拓樸:向內縮放、三角化(triangulate)、合併部分區塊↳ 拓樸依變形需要來調:往內縮一點、triangulate(把面切成三角形),或是把部分區塊合併。
- 43:24 新產生的幾何需要材質,此例直接給它與 Suzanne 頭部相同的材質↳ 轉出來的新幾何需要材質,這個例子直接給它跟 Suzanne 頭部一樣的材質。
- 43:54 因需要換色,可建立 mask;fill 的拓樸很亂導致著色不佳,只要取樣物件或 collection 的法線(normals)就能解決↳ 要換顏色可以用 mask 分區。但 fill 轉出來的網格排得很亂,光影會很怪;只要讓它取樣物件或 collection 的法線,就能照著臉的朝向受光,問題就解決了。
- 44:26 新的 fill 完全融入著色,仍可用 mask 分開處理,例如讓眼睛更突出↳ 結果新的 fill 跟臉的光影完全融在一起,但因為有 mask,仍然能單獨處理,例如讓眼睛更醒目。
- 44:26 以下仍在探索中,希望之後做成 modifier;其一是講者一直做不出漂亮的耳朵 rim light↳ 接下來是還在實驗中的做法,他希望之後做成 modifier。第一個問題:他一直做不出好看的耳朵 rim light。
- 44:58 耳朵有 rig,可取得 vertex group 當 mask,結合 rotate vector 調整光打到的位置;旋轉幅度有限,但足以做出想要的 rim light↳ 耳朵有 rig(控制變形的骨架),能拿 vertex group(被標記成一組的頂點)當 mask,再配合 rotate vector(旋轉方向向量)調整光打的位置。轉的幅度有限,但夠做出他要的邊緣光。
- 45:30 其二:把 Grease Pencil 線條(如皺紋)轉成 mesh,用 geometry proximity 在臉上做出黑白柔和 mask,再用它調整法線,嘴巴周圍輪廓更清楚↳ 第二個:把皺紋這類 Grease Pencil 線條轉成 mesh,用 geometry proximity(依離某個幾何多近來算數值)在臉上做出黑白柔和的 mask,再用它改法線,嘴邊輪廓就更清楚。
- 46:02 講者認為一定有更高品質的做法,但他追求較快速的方法;另一範例中額頭、下巴、眼下都更有立體感,耳朵 rim light 也更好↳ 他承認一定有品質更高的做法,但他追求的是快。另一個範例裡,額頭、下巴、眼下都更有立體感,耳朵的邊緣光也更好看。
- 46:36 最後一張投影片;有問題可以在 LinkedIn 找到講者↳ 這是最後一張投影片;有問題可以到 LinkedIn 找講者。
📘 術語
proof of concept(概念驗證):講者先手動試做步驟,之後再做成 operator 或其他功能
modifier(修改器):字幕未解釋;講者想把各種技巧做成 modifier,例如鏡像、fill 轉 mesh
layer(圖層):繪圖所在的層;示範中把名為 new 的 layer 排除,避免被前面的 modifier 變形
mirror modifier(鏡像修改器):講者構想依相對攝影機的旋轉角度自動鏡像,例如角色嘴巴
empty(空物件):用來微調鏡像,旋轉 empty 時會切換到另一側
mask(遮罩):依角度隱藏部分嘴巴;也用來分開 fill 顏色,或用 vertex group 控制打光
in-betweens(中間畫):例如加第二個偏正面的嘴,依角度切換顯示
toon shading(卡通著色):講者做最久的 shader,目標是各種 2D 漫畫風的光影
NPR(非寫實渲染):字幕與 toon shading 並列提到,Eevee Next 走向寫實後受影響
Eevee / Eevee Next(Eevee 渲染引擎):Eevee 改成 Eevee Next 後陰影更寫實,toon shading 因此受影響
RGB light shading(RGB 燈光著色):燈光只顯示紅、綠或藍一個通道,再把各通道分開
Shader to RGB node(Shader to RGB 節點):RGB light shading 只有在 Eevee 用這個節點才做得到
Principled BSDF(Principled BSDF 著色器):normal 接的 attribute 不存在時會退回預設值,講者認為很重要
Diffuse shader(漫射著色器):講者以前用它,因為感覺較輕、較簡單,但沒有上述退回預設值的特性
specular(鏡面反射):講者全部關掉,另外處理
Map Range(Map Range(範圍映射)):可用數字調整亮部/陰影位置,也能調柔或調硬
Color Ramp(色彩漸層):很多人用它,但無法改參數數字,缺乏控制
blend modes(混合模式):如 mix 做平塗、multiply 陰影、add 亮部
key light / rim light(主光/輪廓光):可用按鈕快速建立,實際上只是改變顏色
Grease Pencil(Grease Pencil(蠟筆)):有 fill 選項,但 fill 是平面,會穿插且不受光影響
fill(填色):Grease Pencil 的填色;講者把它轉成 mesh,讓它融入著色
topology(拓樸):可依變形向內縮放、三角化或合併;fill 的拓樸很亂會讓著色變差
triangulate(三角化):調整轉換後 fill 拓樸的方式之一
normals(法線):取樣物件或 collection 的法線,可修好亂拓樸的著色;也可用 mask 調整
vertex group(頂點群組):講者 rig 耳朵後可取得它當作 mask
rotate vector(旋轉向量):與 mask 結合,調整光打到的位置,但旋轉幅度有限
geometry proximity(幾何鄰近):用轉成 mesh 的皺紋線條在臉上做出黑白柔和 mask
Suzanne(Suzanne(猴頭模型)):示範 shader 與 fill 用的模型
modifier(修改器):字幕未解釋;講者想把各種技巧做成 modifier,例如鏡像、fill 轉 mesh
layer(圖層):繪圖所在的層;示範中把名為 new 的 layer 排除,避免被前面的 modifier 變形
mirror modifier(鏡像修改器):講者構想依相對攝影機的旋轉角度自動鏡像,例如角色嘴巴
empty(空物件):用來微調鏡像,旋轉 empty 時會切換到另一側
mask(遮罩):依角度隱藏部分嘴巴;也用來分開 fill 顏色,或用 vertex group 控制打光
in-betweens(中間畫):例如加第二個偏正面的嘴,依角度切換顯示
toon shading(卡通著色):講者做最久的 shader,目標是各種 2D 漫畫風的光影
NPR(非寫實渲染):字幕與 toon shading 並列提到,Eevee Next 走向寫實後受影響
Eevee / Eevee Next(Eevee 渲染引擎):Eevee 改成 Eevee Next 後陰影更寫實,toon shading 因此受影響
RGB light shading(RGB 燈光著色):燈光只顯示紅、綠或藍一個通道,再把各通道分開
Shader to RGB node(Shader to RGB 節點):RGB light shading 只有在 Eevee 用這個節點才做得到
Principled BSDF(Principled BSDF 著色器):normal 接的 attribute 不存在時會退回預設值,講者認為很重要
Diffuse shader(漫射著色器):講者以前用它,因為感覺較輕、較簡單,但沒有上述退回預設值的特性
specular(鏡面反射):講者全部關掉,另外處理
Map Range(Map Range(範圍映射)):可用數字調整亮部/陰影位置,也能調柔或調硬
Color Ramp(色彩漸層):很多人用它,但無法改參數數字,缺乏控制
blend modes(混合模式):如 mix 做平塗、multiply 陰影、add 亮部
key light / rim light(主光/輪廓光):可用按鈕快速建立,實際上只是改變顏色
Grease Pencil(Grease Pencil(蠟筆)):有 fill 選項,但 fill 是平面,會穿插且不受光影響
fill(填色):Grease Pencil 的填色;講者把它轉成 mesh,讓它融入著色
topology(拓樸):可依變形向內縮放、三角化或合併;fill 的拓樸很亂會讓著色變差
triangulate(三角化):調整轉換後 fill 拓樸的方式之一
normals(法線):取樣物件或 collection 的法線,可修好亂拓樸的著色;也可用 mask 調整
vertex group(頂點群組):講者 rig 耳朵後可取得它當作 mask
rotate vector(旋轉向量):與 mask 結合,調整光打到的位置,但旋轉幅度有限
geometry proximity(幾何鄰近):用轉成 mesh 的皺紋線條在臉上做出黑白柔和 mask
Suzanne(Suzanne(猴頭模型)):示範 shader 與 fill 用的模型
✏️ 小考一題
講者為什麼在 toon shader 裡選擇 Map Range,而不是 Color Ramp?
A. Color Ramp 無法改參數數字;Map Range 可調亮暗位置與柔硬B. Color Ramp 只有 Cycles 能用,Eevee 無法使用C. Color Ramp 無法搭配 Shader to RGB nodeD. Map Range 會自動關閉所有 specular看答案
答案:A。[39:35] 講者說 Color Ramp 的問題是無法控制、不能改參數數字;用 Map Range 能改變光或陰影的位置,也能調柔或調硬
💛 覺得有幫助?支持一下


課本免費、沒有廣告,支持與否都能照常讀 🐰