# ANUT Studio 角色動畫工作坊   ## Goal **用Blender做出一隻熊熊遇見你(We Bear Bears)裡面的Panda,並輸出一個簡短動畫。**  在短時間內盡量概括角色動畫的基礎和製作流程,讓大家可以在成發專案、Animation Battle時可以有能力製作完整的角色動畫,一起發揮巧思以及創作力! ## Prerequisite * 熟悉blender的基本操作 * Box Modeling建模法 * Material & Texture概念 * [常用工具熱鍵](https://docs.google.com/document/d/1vIPCIMwlUQ0QNcPvswR_JgthiLN6IQla_9hwhdU3UiY/edit) ## Schedule | 時間 | 預計規劃 | 難度 | | -------- | -------- | -------- | | 10:00-10:30 | 雕刻工具介紹 | normal | | 10:30-11:30 | base mesh+雕刻 | hard | | 11:30-12:00 | retopo工具介紹 | normal | | 12:00-13:00 | 午餐&午休 | easy | | 13:00-14:30 | retopology |challenging | | 14:30-15:00 | unwrap+baking貼圖 | normal | | 15:00-15:10 | 小休息 | easy| | 15:10-15:40 | texture painting | normal | | 15:40-16:00 | rigging | normal | | 16:00-17:00 | weight paint & set controllers| hard | | 17:00~ | animation | hard | ## Sculpting ### 何時使用? 當模型的表面有大量流線型、不規則形狀(通常是有機體、非工業製品)時,box modeling通常較不容易實現。 例如:青蛙、衣服、受侵蝕的石頭...,這些模型如果要透過extrude和loop cut建出是非常不直覺且繁雜的,因此,我們必須仰賴sculpting的技術來達成。 ### 基本Setup 1. 將物件模式從Object mode切換為Sculpt mode 2. 按N打開輔助面板,在shading下勾選MatCap、Ambient Occlusion,在Display下勾選Only Render 3. 關閉或縮小其餘面板,讓空間整潔舒適  ### Dynamic-topology vs. Multi-resolution 數位雕刻就像是在三維空間畫畫,其操作不外乎就是用筆刷來對mesh做直覺式的局部更動,技術上是透過在原本的mesh新增多餘的(或減少)許多三角面來達成,而在Blender裡有兩種改變mesh的機制: * Dynamic-topology:按T打開工具面板勾選(hotkey:ctrl+D) 動態的決定改變mesh的細緻程度,彈性差但適合做細部雕刻 * Multi-resolution modifier:在modifier tab新增(hotkey:ctrl+上數字鍵) 加入雕刻版本的subdivision modifer,彈性佳(可切換解析度),但解析度為統一的 ### 主要雕刻筆刷介紹 選取方塊,按下ctrl+4來新增multires modifier,按T來查看可用的雕刻筆刷  把每個常用的筆刷都試過一遍吧 1. 快捷鍵: * 在任何筆刷下按住shift為平滑化 * 按住ctrl再塗會進行該筆刷的負運算(某些沒有) * F改變筆刷大小、shift+F改變強度 2. 拉起或生長 * **Grab**:改變大範圍形狀 * **Snake**:延伸出新的mesh 3. 加厚 * **SculptDraw**:畫出突起形狀 * **Clay Strips**:疊加一層厚度 * Inflate:充氣式的加厚 4. 製造溝槽或拉起尖端 * **Crease**:使下陷出一條溝槽 * Pinch:捏起產生尖銳邊緣 5. 抹平或削平 * **scrape**:將較凸者削減 * flatten:將表面抹平 ### 雕刻基底 雕刻之前通常會建立雕刻基底,最好能在一開始就比較接近完成形狀,減少不必要的大範圍新增及修正。 使用多個Metaball來建立base mesh  將對稱部分複製鏡射  全選合併、從metaball轉成mesh,並調整位置  ### 開始雕刻Panda 重置transform後,切為sculpt mode,按下ctrl+D開啟Dyntopo,並調整測試精細度  先使用Clay+Smooth來接合大體連接處  利用Grab微調不滿意的形狀,像是手腳掌、肩膀、身體、嘴型的形狀比例  使用Crease修正四肢連接處、耳朵處的凹陷及尖端  最後利用SculptDraw來加上眼睛鼻子、四肢肉球,並做最後微調  ## Retopology ### 為什麼要重新組mesh? 雕刻完的mesh主要都是破碎的三角形所組成,並且其構成的幾何結構非常雜亂,如果我們需要替模型上材質、做UV拆解、骨骼綁定,那麼重新建構topology是必須的,雕刻出來的mesh只不過是用來輔助等一下所建構出低面數mesh的參考而已(當然我們也會擷取高面數的凹凸資訊來製作normal map...等)  ### Setup 1. 安裝F2(快速補面)、BSurfaces(畫筆轉面)、Relax(點分布平均化)三個插件 2. 將雕刻Mesh命名為PandaHP重置transform; 新建一個plane叫PandaLP,移至臉部,然後重置原點至與PandaHP相同位置 3. 使LP自動貼合HP之設定 * 底下工具列設定snap:選surface、closest,勾選project individuals * 加入mirror modifier * 加入subdivision modifier:選simple * 加入shrinkwrap:設定target、offset,勾選keep above 4. 取消MatCap、更改LP的material:viewport color選其他顏色  ### 良好的topology retopo時一定要遵守三項原則: 1. 從大範圍edge flow開始,參考別人的flow或想像mesh在何處須分割 2. 盡量保持平均分布,細節處密度稍微較高 3. 想辦法以四邊形+3-Pole/5-Pole組成,嚴禁N-gon、避免三角形 ([進階文章](https://topologyguides.com/)) ### 畫出edge flow 設定好grease pencil,沿著眼睛處畫出向外的edges(盡量偶數)  使用Tool中BSurfaces的add surface來完成loop  完成其他edge flow  ### 連接並製造Pole 開始extrude邊或點來連接,可使用連續F和bridge loop來提高效率、並適時使用relax(按W)  完成頭部  完成身體  完成四肢  ## UV unwrap & Baking textures ### 最後處理 在拆解之前,先把嘴巴和眼睛關起來(此處省略了舌頭、眼皮)  加上雙眼  取消隱藏HP,使用proportional往normal方向微調LP,使之不要被HP突出,因為等等需要bake其資訊 ### UV拆解 記得再重置一次transform,然後ctrl+E->mark seam標記,按U->unwrap拆解完到UV視窗按N,勾選stretch->area檢查變形,並反覆標記與拆解  ### 將HP資訊轉移回LP 欲將雕刻Mesh的資訊存成貼圖,再丟到重製版低面數的材質裡,這個動作就叫baking,在blender中一般我們會bake三種不同資訊的貼圖後,再組成一個材質。 以下為基本流程 1. 切換為Blender renderer:baking貼圖目前以原始引擎效果較佳,記得要刪除從cycles轉過來的materials 2. 按T打開工具面板,將HP、LP都設定為smooth shading 3. 在UV editor依序新增不同種貼圖,切換至相機屬性之bake欄位,勾選Selected to active,表示只要渲染一個物件的資訊至另一物件 4. 先選取HP再選取LP後,決定bake貼圖種類 5. 進edit mode確認是否有選到目標貼圖(有時候會跑掉,blender的小bug,全選可改善) 6. Bake並儲存貼圖,需要Normal、Ambient Oclussion(normalized+調高res)、Cavity(vertex paint)三種 ### 使用cycles並設定materials 有了貼圖之後,切換至cycles engine,加入新材質。 在場景中加入三向光源後,拉出node editor設定材質: 1. 把AO map接到multiply的MixRGB(要跟等一下畫的paint map搭配成底色) 2. 把CAV map接到overlay的MixRGB(要用陰影及亮部修飾底色),接至Base Color接口 3. 可以在CAV map後面加入color ramp來調整陰影及亮部的區間 4. 把NORM map接到Normal接口,並在中間加入Normal map node來轉換資訊 另外,可以安裝插件"node wrangler"來方便做最後微調。 (用法:ctrl+shift+左鍵點選欲查看之node效果)   ## Texture Painting 有了光影的資訊後,正式進行手繪材質的階段。 首先在Image Editor新增一張與各個map同樣大小的空白貼圖(作為手繪貼圖)並儲存之,在Node Editor中與AO接至同一個MixRGB,最後再到3D View切換至Texture Paint模式。 可以按T打開工具面板,調整幾項推薦設定。  ### 使用筆刷塗色 開始使用各種筆刷來在3D view中塗色: 1. T->tools選擇筆刷:Fill填底色,TextDraw做細部變化,Soften/Smear做模糊與混和 2. 調色盤可以自己新增或刪除顏色 3. 按s+左鍵可以sample場景中的顏色作為調色盤選項,方便來回切換不同顏色 4. 在底下可選擇Face selection masking以限定在選取區域塗色,可按C、L(選擇island)來選取  ### Bake出最終Color貼圖 當繪製完成後,記得去Image Editor再儲存一次圖片。 現在把所有的color information存成一整張圖片做輸入: 1. 新建COL_COMBINE貼圖 2. 到Bake選項,取消勾選selected to active(非hp轉lp,僅bake目前材質進圖片) 3. 到world tab調整default背景光至亮白色,再Bake貼圖(注意不要使用三點光源bake) 4. 把貼圖直接連到base color接口,其他舊的nodes可以刪除  接上後可以再做微調,像是眼睛的部分有些glitch。  ## Rigging 接著替Panda上骨架,讓他有動的能力~ ### Armarture與骨骼 armarture是一種特殊物件,由許多bones組合而成,透過不同的骨骼關係,來形成類似人類或動物的肢體結構,讓mesh跟著armarture變形即可達到角色動畫的效果。 1. 在原點新增armarture,並移動至骨盆位置(傳統上會將root設定為骨盆位置) 2. 到armarture tab來開啟x-ray透視效果,以便在mesh內調整骨骼 3. 按tab進入編輯模式,透過E來長出新骨頭,慢慢拉出脊椎、頭部、肩膀骨骼,並調整位置 4. 到Panda的物件tab,勾選顯示edges,以便將骨頭的頂點調整至最佳位置(關節最好位於欲轉折處之中央loop處) 5. 繼續長出右半邊的手、腳骨頭,可以搭配snap with volume來自動置頂點於體積中點 6. 按N可以至物件名稱處命名各骨頭(右側骨骼習慣使用.R做為後綴) 7. 反轉至左側:選取右側骨骼-->shift+D複製--> 翻轉(設定pivot後在x方向scale -1)-->armarture-flip names 8. 全選所有bones,按ctrl+N來統一骨頭的旋轉方位      ### Inverse Kinematic bones / Control bones 為了方便移動骨骼,通常會設定以手腕、腳踝處的IK bone,也就是以這兩點做控制點,當移動這兩個控制點,可以自動使整隻手臂或整隻腳做合理的移動(這樣就不必先移動大的parent、小的parent、children bones...)。 設定簡易IK bones: 1. 在手腕與手肘處extrue出骨頭,分別取作ctrl和poll之後綴名稱,poll bone可向外拉出 2. 並按ctrl+P清除parent、到右側骨頭面板中取消變形作用 3. 切換至pose mode,在arm2 bone上面加入IK constraint,設定好剛剛加入的兩個control bone和IK chain的長度,必要時可以調整Pole Angle 4. 在hand bone上面加入child of constraint,設定其為ctrl bone的附屬骨頭 5. 可以試試看只使用ctrl bone來擺出動作     6. 完成右腳的IK 7. 進入edit mode按ctrl+N再整理一次方向後,複製至左側,並完成左半身IK   ### Weight Painting 有了可以方便移動的骨骼之後,我們將設定Armarture帶動Mesh的細節。 1. 切至object mode,先選mesh再同時選armarture後,按ctrl+P-->automatic weights 2. 移動看看骨骼,若自動分配不佳,再倒退回去(刪除modifier、清除vertex group)調整一下骨骼位置,再回到1. 3. 沒有太大範圍的瑕疵後,armarture進入pose mode、Panda進入Weight Paint模式,開始做各個骨頭的細節修正: - 使用筆刷可以增加/減少/平滑權重 - 使用底下的點選取模式可以自動賦予特定值 - 按Z可以透視骨骼,方便weight paint      通常在與身體連接處需要修正較多:肩膀、大小腿、脖子 ### Setting Controllers 為後期設置大量動畫,我們需要作便利性的控制物件,而不直接動到骨骼。 0. 重置Armarture的scaling(按ctrl+A) 1. 切回object mode,新增許多circle當作控制器:橢圓(控制關節)、三垂直圓之空心圓(控制ctrl bone),縮放至適當大小 2. 將控制球體放至四個control bone上、橢圓放至需使用關節處,所有地方放好後重置scaling 3. 從檔案安裝插件:[orient_custom_shape_V2.py](https://drive.google.com/open?id=1KJcjkxZ9SUj_G-_jeyZryzfyNQ1amvYE) 使用方式:切至pose mode後,選擇特定骨頭,在bone panel中的display底下,選取custom shape後按Orient Custom Shape,將每個形狀都設置完成 4. 另外新增Main Bone、controller來移動整隻Panda 5. 關閉Armarture的x-ray,控制器設置完成!      ### Shape Keys 細微mesh的變形 ## Animation 已經設定好角色前置工作,Your turn!
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.