# 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up