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


🏦 台灣Pay 銀行轉帳 💙 PayPal
用 Grease Pencil 線條貼附 mesh,並讓線條跟著變形幾何移動的自製 modifier 方法
- 23:47 發現 Grease Pencil 線條穿進 mesh,解法是加上 snap to mesh modifier,target 設為 Suzanne,接著就能繼續畫
- 30:00 Demo 流程:按一個按鈕,把 snap to mesh modifier 換成 bind to mesh modifier,並自動複製距離、target 物件或 collection 等屬性
- 35:15 這些步驟很多,講者打算寫成 script。使用者只需點擊、畫、再點擊,或許再選擇是否合併到既有的 Grease Pencil layer
💡 你可以怎麼用:想讓手繪線條貼在會動的 3D 角色上,可以先用 snap to mesh,並把線的粗細設成離表面的距離,把線吸好。接著確認模型 UV 沒有重疊、啟用 rest position,並用 smooth 取代再細分;嘴角這類側邊凸出來的線,可以用 Layer Weight 往內推。
看全部 39 條重點
🧑🏫 這段講怎麼讓 Grease Pencil(Blender 裡在 3D 空間畫 2D 手繪線條的工具)畫的線,乖乖貼在 3D 模型表面上,而且模型動起來、變形時,線也會跟著走。講者分享自己做的一套 modifier,也比較了其他做法的優缺點。想做「3D 模型配手繪線條」漫畫風的人,看這段很實用。
- 23:47 發現 Grease Pencil 線條穿進 mesh,解法是加上 snap to mesh modifier,target 設為 Suzanne,接著就能繼續畫↳ 在 Suzanne(Blender 內建的猴頭模型)上畫線,線會穿進 mesh(點線面組成的模型)。解法是加 snap to mesh modifier(疊在物件上的效果),target 指向 Suzanne,線就會吸在表面上。
- 23:47 這個階段還不需要讓 Suzanne 動畫或變形,變形的部分之後才處理↳ 這一步只處理「畫在不動的模型上」。模型怎麼動、怎麼變形,後面再處理,先把問題拆開。
- 24:22 講者會分享這組 modifier。它是很基本的設定、不深入講解,但可以當基礎,再自己加更多 modifier 繼續發展↳ 講者會把這組 modifier 分享出來。它是基本款,他不細講。重點是拿它當起點,你可以自己再往上疊 modifier 延伸功能。
- 25:00 modifier 第一部分負責把 Grease Pencil 線條 snap 到 mesh 上,第二部分負責設定距離↳ 這組 modifier 分成兩塊:前半把線吸到模型表面,後半決定線要離表面多遠。
- 25:30 距離選項一:固定距離,每條 Grease Pencil 線跟 mesh 的距離都一樣↳ 第一種距離設法:所有線離表面的距離都一樣,不管線是粗是細。
- 25:30 距離選項二(講者的預設):用線條的 radius(也就是粗細)當作跟幾何的距離,效果很好↳ 講者預設用第二種:拿每條線的 radius(半徑,就是線的粗細)當離表面的距離。線越粗浮得越高,整條線剛好露在表面外,效果很好。
- 26:05 讓 Grease Pencil 跟隨變形幾何有很多方法,這裡分享的是講者自己的方法;他跟 Grease Pencil 開發者 Falk David 談過↳ 讓線跟著模型變形的做法不只一種,這裡講的是講者自己的方法。他也跟 Grease Pencil 開發者 Falk David 討論過。
- 26:36 Cowboy 動畫 demo 中展示了 sticky GP,也就是投影到 mesh 上的 Grease Pencil。Falk 表示它會進 Blender,但講者不確定原理是否類似↳ Cowboy 動畫 demo 出現過 sticky GP,就是直接投影到模型表面的 Grease Pencil。Falk 說這會加進 Blender,但講者不確定它的原理跟自己的方法像不像。
- 26:36 另一種做法是 Surface Deform Modifier:先把 Grease Pencil 轉成 mesh,套用 Surface Deform,再轉回 Grease Pencil↳ 另一條路是 Surface Deform Modifier(讓物件黏著另一個模型一起變形)。做法是先把線轉成 mesh,套上它,再轉回 Grease Pencil。
- 27:06 Surface Deform 的做法可行也不錯,但比較 tricky、比較僵硬。因為有 binding 程序,綁定後無法再重畫、修正或微調↳ 這方法能用,但要先做 binding(綁定,記下線和表面的對應關係)。綁完就定死了,想重畫、修一筆或微調都不行,用起來很僵。
- 27:06 講者方法的基本原理是準備兩個物件。第一個是 rest/static 物件,它不會動,是用來在上面畫線的物件或 collection↳ 講者方法的核心是準備兩個物件。第一個是 rest/static 物件,擺著不動,專門讓你在上面畫線;可以是單一物件,也可以是 collection(一組物件)。
- 27:44 第二個是會動畫、會變形的物件。兩者技術上可以是不同物件,重點是都要有 UV,因為是把位置資訊從一組 UV 傳到另一組↳ 第二個是真正會動、會變形的物件。兩者可以是不同物件,但都要有 UV(把 3D 表面攤平成 2D 的座標),因為線的位置是透過 UV 從一邊搬到另一邊。
- 27:44 因此可以在某一面上畫,讓線條出現在完全不同的面上↳ 既然是靠 UV 對位置,就可以在某個面上畫,讓線出現在完全不同的面上,只要兩邊的 UV 對得上。
- 27:44 UV 不能重疊,否則線條會亂跳↳ UV 如果重疊,同一個座標會對到兩個位置,程式不知道該放哪裡,線就會亂跳。
- 28:18 用 Sample UV Surface 節點比對兩組 UV,並指定要傳遞的資訊,例如 position 或 normals↳ 用 Sample UV Surface 節點比對兩組 UV,再指定要搬哪些資料,例如 position(位置)或 normals(法線,表面朝向的方向)。
- 28:18 這個方法的問題是需要兩個物件,所以講者想讓變形物件同時也當作 rest 物件↳ 缺點是每次都得多準備一個物件,很麻煩。所以講者想讓會變形的物件自己兼當 rest 物件。
- 28:55 Blender Artists 上有人提到 rest position attribute:它能取得頂點在任何 modifier、任何 shape key 之前的原始位置↳ Blender Artists 論壇有人提到 rest position attribute。它記下每個頂點在套用任何 modifier、shape key(預做的形狀變化)之前的原始位置。
- 28:55 問題一:rest position 會套用到已經 subdivide 過的 Suzanne 上↳ 問題一:rest position 會套在已經 subdivide(細分,把面切多讓表面變圓滑)過的 Suzanne 上,抓到的原始形狀是沒細分、比較粗糙的版本。
- 29:27 問題二:畫 Grease Pencil 時需要平滑的表面,但不能再 subdivide 一次,否則等於對已細分的模型再細分↳ 問題二:畫線需要平滑的表面,但不能再細分一次,否則等於對已經細分過的模型重複細分。
- 29:27 講者發現改用 smooth 幾何,得到的結果會很接近原本的形狀。雖不完美,但效果很好↳ 講者改用 smooth(把表面磨順、讓稜角變柔和),得到的形狀跟原本很接近。不完美,但夠好用。
- 30:00 Demo 流程:按一個按鈕,把 snap to mesh modifier 換成 bind to mesh modifier,並自動複製距離、target 物件或 collection 等屬性↳ Demo:按一個按鈕,就把 snap to mesh 換成 bind to mesh modifier。距離、target 物件或 collection 等設定會自動複製過去,不用重設。
- 30:30 一開始線條沒有跟著變形。步驟是在 Suzanne 上啟用 rest position,再替換 modifier↳ 一開始線沒有跟著變形,因為要先在 Suzanne 上啟用 rest position,再替換 modifier,順序要對。
- 30:30 黑色線條看起來不好,原因是沒有適當細分過的 rest position 或 rest 物件↳ 這時黑線看起來不好看,原因是 rest position(或 rest 物件)沒有經過適當細分,形狀太粗糙。
- 30:30 「show original」按鈕可以顯示未變形的原始線條,當作參考↳ 「show original」按鈕可以顯示還沒變形的原始線條,拿來對照變形後差在哪裡。
- 31:02 接著對幾何做 smooth,結果不完美但相當不錯,可以用↳ 接著對幾何做 smooth,結果不完美,但已經相當不錯,可以實際使用。
- 31:36 講者理解為何 Blender 官方無法內建這類功能,因為要考慮的事情太多↳ 講者也理解 Blender 官方為什麼沒辦法內建這種功能,因為要顧及的情況太多。
- 31:36 Grease Pencil 線條有體積,像圓柱或管子,有時會造成問題↳ Grease Pencil 的線其實有厚度,像一根根管子,不是紙上的平面線,所以有時會凸出表面造成問題。
- 32:06 例如嘴角邊緣的 Grease Pencil 線條會凸出來。講者用 Layer Weight 節點把線條推回 mesh 裡↳ 例如嘴角邊緣的線會凸出去。講者用 Layer Weight 節點(依表面朝向算出黑到白數值的工具)找出這些地方,把線推回模型裡。
- 32:06 Layer Weight:法線朝向攝影機時是黑色(講者說「我想是」),背向或朝側邊時是白色。白色部分往內推,朝攝影機的不動↳ Layer Weight 的邏輯:表面正對攝影機是黑,背對或朝側邊是白(講者自己說「我想是」)。白的部分往內推,正對攝影機的不動。
- 32:38 Geometry Nodes 沒有 Layer Weight 節點,但網路上找得到重建它的方法。這樣線條就不會從側邊凸出↳ Geometry Nodes(Blender 用節點拼出效果的系統)沒有現成的 Layer Weight 節點,但網路上找得到自己重建的方法。用上後,線就不會從側邊凸出。
- 33:08 講者加了一個可關閉此功能的按鈕,只作用於 viewport。放上 modifier 時會自動關閉↳ 講者加了一個按鈕,可以關掉這個功能,而且它只作用在 viewport(編輯時看的畫面)。剛放上 modifier 時,這個功能會自動關閉。
- 33:08 這樣做是為了避免不是從攝影機視角看時,搞不懂線條為何跑進去↳ 這樣設計是因為不從攝影機角度看時,會看到線陷進模型裡,使用者會搞不懂原因。
- 33:39 節點可能變得有點複雜。功能包括:target 可選物件或 collection、可 clamp 側邊↳ 節點組變得有點複雜。功能包括:target 可以選單一物件或整個 collection,也可以 clamp(限制)側邊。
- 33:39 節點裡有很多錯誤訊息、資訊與警告,因為可能出錯的地方很多,這些訊息就像一份讓它正常運作的檢查清單↳ 節點裡放了很多錯誤訊息、提示和警告。因為能出錯的地方很多,這些訊息就像一張檢查清單,照著排除就能讓它正常運作。
- 34:09 新增 relative transformation 選項。例如角色頭上的帽子不在 0 0 點且有旋轉,可以把這個相對變換設為起始預設↳ 新增 relative transformation(相對變換)選項。例如帽子不在 0,0 原點又有旋轉,可以把它當下的位置和角度設成起始預設。
- 34:39 設定完仍然可以用 Grease Pencil 在物件上繼續畫↳ 設定好之後,照樣可以用 Grease Pencil 在物件上繼續加線。
- 34:39 缺點是必須在 rest position 才能畫,無法直接在變形後的位置上畫↳ 缺點是只能在 rest position(沒變形的原始姿勢)上畫,沒辦法直接在變形後的樣子上畫。
- 34:39 有人問能否在變形幾何上畫。講者嘗試的步驟:新增 Grease Pencil layer、把它排除在其他 modifier 之外(以免被變形)、在變形或動畫物件上畫↳ 有人問能不能畫在變形後的模型上。講者試過的步驟:新增 Grease Pencil layer(圖層),把它排除在其他 modifier 外以免被變形,再直接在動畫中的物件上畫。
- 35:15 這些步驟很多,講者打算寫成 script。使用者只需點擊、畫、再點擊,或許再選擇是否合併到既有的 Grease Pencil layer↳ 步驟太多,講者打算寫成 script(自動化腳本)。之後只要點一下、畫、再點一下,也許再選要不要併進原本的圖層。
📘 術語
Grease Pencil(蠟筆(2D 繪圖工具)):用來畫線條的工具。字幕提到它的線條有體積,像圓柱或管子
snap to mesh modifier(吸附到網格修改器):把 Grease Pencil 線條 snap 到 mesh 上,需設定 target(例如 Suzanne)
radius(半徑):Grease Pencil 線條的 radius,基本上就是線條粗細,可當作與幾何的距離
sticky GP(黏附式 Grease Pencil):投影到 mesh 上的 Grease Pencil,曾在 Cowboy demo 中展示
Surface Deform Modifier(表面變形修改器):GP 轉 mesh、套用後再轉回 GP。可用但較僵硬,綁定後無法再修改
binding(綁定):Surface Deform 的綁定程序,會導致之後無法重畫或微調
rest / static object(靜止物件):不會動的物件,是用來在上面畫線的物件或 collection
UV(UV 座標):位置資訊從一組 UV 傳到另一組,所以兩物件都要有 UV,且不能重疊
Sample UV Surface(取樣 UV 表面節點):比對兩組 UV,並指定要傳遞 position、normals 等資訊
rest position attribute(靜止位置屬性):取得頂點在任何 modifier、shape key 之前的原始位置
subdivide / smooth(細分/平滑):不能對已細分模型再細分,改用 smooth 可得到接近原始的結果
bind to mesh modifier(綁定到網格修改器):講者用按鈕替換 snap to mesh 後使用的 modifier,會複製原本的屬性
show original(顯示原始線條):顯示未變形的原始線條,當作參考
Layer Weight(層權重節點):法線朝攝影機為黑、背向或朝側邊為白,用來把線條推回 mesh
Geometry Nodes(幾何節點):字幕提到它沒有 Layer Weight 節點,需上網找方法重建
clamp(限制/夾住):可 clamp 側邊的功能,有按鈕可關閉,只作用於 viewport
relative transformation(相對變換):讓物件(例如不在 0 0 點、有旋轉的帽子)以某個相對變換作為起始預設
snap to mesh modifier(吸附到網格修改器):把 Grease Pencil 線條 snap 到 mesh 上,需設定 target(例如 Suzanne)
radius(半徑):Grease Pencil 線條的 radius,基本上就是線條粗細,可當作與幾何的距離
sticky GP(黏附式 Grease Pencil):投影到 mesh 上的 Grease Pencil,曾在 Cowboy demo 中展示
Surface Deform Modifier(表面變形修改器):GP 轉 mesh、套用後再轉回 GP。可用但較僵硬,綁定後無法再修改
binding(綁定):Surface Deform 的綁定程序,會導致之後無法重畫或微調
rest / static object(靜止物件):不會動的物件,是用來在上面畫線的物件或 collection
UV(UV 座標):位置資訊從一組 UV 傳到另一組,所以兩物件都要有 UV,且不能重疊
Sample UV Surface(取樣 UV 表面節點):比對兩組 UV,並指定要傳遞 position、normals 等資訊
rest position attribute(靜止位置屬性):取得頂點在任何 modifier、shape key 之前的原始位置
subdivide / smooth(細分/平滑):不能對已細分模型再細分,改用 smooth 可得到接近原始的結果
bind to mesh modifier(綁定到網格修改器):講者用按鈕替換 snap to mesh 後使用的 modifier,會複製原本的屬性
show original(顯示原始線條):顯示未變形的原始線條,當作參考
Layer Weight(層權重節點):法線朝攝影機為黑、背向或朝側邊為白,用來把線條推回 mesh
Geometry Nodes(幾何節點):字幕提到它沒有 Layer Weight 節點,需上網找方法重建
clamp(限制/夾住):可 clamp 側邊的功能,有按鈕可關閉,只作用於 viewport
relative transformation(相對變換):讓物件(例如不在 0 0 點、有旋轉的帽子)以某個相對變換作為起始預設
✏️ 小考一題
講者設定 Grease Pencil 線條與 mesh 的距離時,他的預設做法是什麼?
A. 所有線條使用相同的固定距離B. 用線條的 radius(粗細)當作與幾何的距離C. 依 UV 的大小決定距離D. 依據攝影機到物件的距離自動計算看答案
答案:B。[25:30] 講者說可以直接用線條的 radius 當作與幾何的距離,「that is my default」;固定距離是另一個選項,不是預設。
💛 覺得有幫助?支持一下


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