---
# System prepended metadata

title: ANUT Studio 角色動畫工作坊

---

# ANUT Studio 角色動畫工作坊
![](https://i.imgur.com/eU4sy65.png)
![](https://i.imgur.com/b7ilOrt.png)


## Goal
**用Blender做出一隻熊熊遇見你（We Bear Bears）裡面的Panda，並輸出一個簡短動畫。**
![](https://i.imgur.com/g6NhNmS.png)

在短時間內盡量概括角色動畫的基礎和製作流程，讓大家可以在成發專案、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. 關閉或縮小其餘面板，讓空間整潔舒適
![](https://i.imgur.com/NMMlU3m.png)

### 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來查看可用的雕刻筆刷
![](https://i.imgur.com/hPcyPSG.png)

把每個常用的筆刷都試過一遍吧
1. 快捷鍵：
   * 在任何筆刷下按住shift為平滑化
   * 按住ctrl再塗會進行該筆刷的負運算（某些沒有）
   * F改變筆刷大小、shift+F改變強度
2. 拉起或生長
   * **Grab**：改變大範圍形狀
   * **Snake**：延伸出新的mesh
3. 加厚
   * **SculptDraw**：畫出突起形狀
   * **Clay Strips**：疊加一層厚度
   * Inflate：充氣式的加厚
4. 製造溝槽或拉起尖端
   * **Crease**：使下陷出一條溝槽
   * Pinch：捏起產生尖銳邊緣
5. 抹平或削平
   * **scrape**：將較凸者削減
   * flatten：將表面抹平

### 雕刻基底
雕刻之前通常會建立雕刻基底，最好能在一開始就比較接近完成形狀，減少不必要的大範圍新增及修正。

使用多個Metaball來建立base mesh
![](https://i.imgur.com/r7P88X3.png)
將對稱部分複製鏡射
![](https://i.imgur.com/0KtLoZ8.png)
全選合併、從metaball轉成mesh，並調整位置
![](https://i.imgur.com/vCFRPJP.png)

### 開始雕刻Panda
重置transform後，切為sculpt mode，按下ctrl+D開啟Dyntopo，並調整測試精細度
![](https://i.imgur.com/wvwSGBq.png)
先使用Clay+Smooth來接合大體連接處
![](https://i.imgur.com/3rwJZ56.png)
利用Grab微調不滿意的形狀，像是手腳掌、肩膀、身體、嘴型的形狀比例
![](https://i.imgur.com/y1cik0K.png)
使用Crease修正四肢連接處、耳朵處的凹陷及尖端
![](https://i.imgur.com/p829YCa.png)
最後利用SculptDraw來加上眼睛鼻子、四肢肉球，並做最後微調
![](https://i.imgur.com/roK76LE.png)

## Retopology
### 為什麼要重新組mesh?
雕刻完的mesh主要都是破碎的三角形所組成，並且其構成的幾何結構非常雜亂，如果我們需要替模型上材質、做UV拆解、骨骼綁定，那麼重新建構topology是必須的，雕刻出來的mesh只不過是用來輔助等一下所建構出低面數mesh的參考而已（當然我們也會擷取高面數的凹凸資訊來製作normal map...等）
![](https://i.imgur.com/8UtrfXg.jpg)

### 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選其他顏色
![](https://i.imgur.com/PJiCIP0.png)

### 良好的topology
retopo時一定要遵守三項原則：
1. 從大範圍edge flow開始，參考別人的flow或想像mesh在何處須分割
2. 盡量保持平均分布，細節處密度稍微較高
3. 想辦法以四邊形+3-Pole/5-Pole組成，嚴禁N-gon、避免三角形 ([進階文章](https://topologyguides.com/))

### 畫出edge flow
設定好grease pencil，沿著眼睛處畫出向外的edges（盡量偶數）
![](https://i.imgur.com/t3dv9Ae.png)
使用Tool中BSurfaces的add surface來完成loop
![](https://i.imgur.com/VPZdfTa.png)
完成其他edge flow
![](https://i.imgur.com/W6lyuA1.png)

### 連接並製造Pole
開始extrude邊或點來連接，可使用連續F和bridge loop來提高效率、並適時使用relax（按W）
![](https://i.imgur.com/ZsUo854.png)
完成頭部
![](https://i.imgur.com/gkgDTzv.png)
完成身體
![](https://i.imgur.com/1jmuyY8.png)
完成四肢
![](https://i.imgur.com/br6vApO.png)

## UV unwrap & Baking textures
### 最後處理
在拆解之前，先把嘴巴和眼睛關起來（此處省略了舌頭、眼皮）
![](https://i.imgur.com/dWre19k.png)
加上雙眼
![](https://i.imgur.com/0E4KKl3.png)
取消隱藏HP，使用proportional往normal方向微調LP，使之不要被HP突出，因為等等需要bake其資訊

### UV拆解
記得再重置一次transform，然後ctrl+E->mark seam標記，按U->unwrap拆解完到UV視窗按N，勾選stretch->area檢查變形，並反覆標記與拆解
![](https://i.imgur.com/Uzx9omo.png)

### 將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效果）
![](https://i.imgur.com/f5ldYw8.png)
![](https://i.imgur.com/88M77dw.png)


## Texture Painting
有了光影的資訊後，正式進行手繪材質的階段。

首先在Image Editor新增一張與各個map同樣大小的空白貼圖（作為手繪貼圖）並儲存之，在Node Editor中與AO接至同一個MixRGB，最後再到3D View切換至Texture Paint模式。
可以按T打開工具面板，調整幾項推薦設定。
![](https://i.imgur.com/Kk2KP3P.png)

### 使用筆刷塗色
開始使用各種筆刷來在3D view中塗色：
1. T->tools選擇筆刷：Fill填底色，TextDraw做細部變化，Soften/Smear做模糊與混和
2. 調色盤可以自己新增或刪除顏色
3. 按s+左鍵可以sample場景中的顏色作為調色盤選項，方便來回切換不同顏色
4. 在底下可選擇Face selection masking以限定在選取區域塗色，可按C、L(選擇island)來選取

![](https://i.imgur.com/kM8e3l6.png)

### 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可以刪除

![](https://i.imgur.com/Db9COBX.png)

接上後可以再做微調，像是眼睛的部分有些glitch。
![](https://i.imgur.com/qRMbmyb.png)

## 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來統一骨頭的旋轉方位

![](https://i.imgur.com/2JFriNw.png)
![](https://i.imgur.com/Udt4M0P.png)
![](https://i.imgur.com/DP0C4et.png)
![](https://i.imgur.com/K6AVaR7.png)
![](https://i.imgur.com/fwlpiO2.png)

### 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來擺出動作

![](https://i.imgur.com/8sXyzve.png)
![](https://i.imgur.com/i40PMy4.png)
![](https://i.imgur.com/rQGXlJn.png)
![](https://i.imgur.com/vFTx0jC.png)

6. 完成右腳的IK
7. 進入edit mode按ctrl+N再整理一次方向後，複製至左側，並完成左半身IK

![](https://i.imgur.com/mq8sVSz.png)
![](https://i.imgur.com/K4TyJgl.png)



### 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

![](https://i.imgur.com/8HUnnFp.png)
![](https://i.imgur.com/CnDMEIC.png)
![](https://i.imgur.com/lCE1KQ2.png)
![](https://i.imgur.com/OMpwyE1.png)
![](https://i.imgur.com/1E9Yfzp.png)

通常在與身體連接處需要修正較多：肩膀、大小腿、脖子

### 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，控制器設置完成！

![](https://i.imgur.com/BQOFBx0.png)
![](https://i.imgur.com/mnd7dD5.png)
![](https://i.imgur.com/362Uwjb.png)
![](https://i.imgur.com/qQfA0sA.png)
![](https://i.imgur.com/oeLzLQo.png)


### Shape Keys
細微mesh的變形

## Animation
已經設定好角色前置工作，Your turn！














