# 動畫:火箭發射台

接續前一次的主題,接著透過骨架、相機與粒子系統來製作火箭發射動畫。
## 骨架
- 建立Armature,調整bone位置和旋轉角度
- 將Support物件綁定至該Armature,分配權重
- 加入Rotation Constraint以方便製作動畫
在Support物件底部建立一個Armature,將之設為穿透顯示、並顯示軸向

透過Extrude長出骨頭,建立main、rotate、hand_outer_0/1、hand_inner_0/1六根骨頭
1. 使用3D cursor來使骨頭端點都調整到在理想的位置。
2. 如果骨頭旋轉位置歪掉,可以按N打開輔助面板調整Item->Roll,或者按Shift+N重新設定
3. 如需重新設定parent關係:
Alt+P為清除parent、Ctrl+P為設為parent(成為active者之children)

調整完畢後,先選擇Support再選擇Armature,按Ctrl+P->With Empty Groups,即可綁定
綁定完成代表:
1. Armature可以使Support產生形變
2. Support可以進入Weight Paint模式(定義如何影響、程度)
3. Armature可以進入Pose模式(決定某個影響狀態)

我們需要改變其初始定義(Empty Groups代表沒有定義)
在edit mode選擇欲影響的mesh,然後再到object data中assign給相對應的骨頭1的權重

將每個需要改變的部分都assign好權重
可以透過選擇Armature+Support後進入weight paint模式查看(按Ctrl+左鍵選擇)

進入Pose Mode,然後加入bone constraint以限制旋轉角度或縮放程度

## 影格動畫與相機
- 改變屬性後按I插入關鍵影格
- 如果在3D viewport上按的話,可以選擇想要interpolate的屬性
- 如果在properties的值上按的話,會直接加入關鍵影格
- 若想讓一切更動都成為關鍵影格,可以在timeline editor中間處打開Auto Keying功能
- 使用Timeline Editor控制動畫
- 播放/暫停:Space
- 前進/後退一格:左右鍵
- 到開頭/結尾:Shift+左右鍵
- 快速移動:左鍵點擊或拖曳(按住Ctrl可以以一秒為單位移動)

- 使用Dope Sheet Editor控制關鍵影格的行為
- 使動畫變快/變慢:拉近/拉遠關鍵影格之間的距離,可以使用scale來縮放多個關鍵影格
- 使動畫延遲/提早開始:左鍵拖曳移動關鍵影格
- 改變動畫的預設平滑行為:選擇關鍵影格後按T,然後選擇自己想要的行為
- 另外,如果想精準控制interpolation曲線,可以打開Graph Editor(預設沒有,要自己開)

理解工具使用方式後,來開始練習製作分鏡動畫吧!
1. 建立數個相機,對其location & rotation加入關鍵影格來控制運鏡動畫
(可以按N->View->Lock Camera鎖定相機視角,使用Ctrl+Num_0來切換不同相機)
2. 在pose mode下轉動/縮放Support的Armature來控制Support的動畫
3. 移動rocket body來控制火箭升空動畫


## 推進器粒子(火與煙)
- 使用particle system來製作推進器的火焰與氣體
- 使用particle texture來控制粒子大小
- 改變base particle的材質來控制顏色與光亮程度


首先,將所有火箭的mesh合併(選取後按Ctrl+J)
接著建立一個圓盤放到火箭底部(可以從火箭的mesh複製),並將其設為parent
最後加入一段上升的動畫,以便稍後加入粒子系統模擬

照之前建立岩石的方法建立一顆小球(代表煙粒子),作為
然後選擇emitter,加入particle system(Emitter):
- Render section(控制粒子外型)
- 選擇render as [Object],選擇該小球
- Scale調整至合適的大小並提高一點Scale Randomness
- Emisson section(控制粒子系統模擬參數)
- 將Frame Start設為上升動畫即將開始的frame、Frame End設為上升動畫結束時
- 將Life Time設為合適frame數,並提高一點Randomness
- 若硬體允許亦可提高Number,使煙粒子再濃一點

接著設定隨機旋轉
- Rotation(勾選)
- 上半部設定控制初始旋轉狀態,記得勾選Dynamic
- Angular Velocity部分控制各自粒子的旋轉受力,設為Random並提高Amount

接著設定粒子大小隨時間減少(利用Particle Texture)
[Stack Exchange Link](https://blender.stackexchange.com/questions/114300/how-to-affect-particle-size-over-time)
最後設定粒子材質隨時間變化(利用Particle Info Node,只在Cycles有效)
[Stack Exchange Link](https://blender.stackexchange.com/questions/8052/how-do-i-get-particles-to-change-color-over-time?fbclid=IwAR2DI4MHG_G59LDvpGN6PYmiCZC0Ek2eQJcTBj7PygVQHQdFjudVI9TiAFQ)

## 輸出設定(Cycles)
輸出動畫的基本步驟:
1. 在最上方工具列選擇要渲染的Scene和View Layer
2. 在Timeline Editor選擇Start/End Frame
3. 在Render Tab選擇渲染引擎
4. 在Scene Tab選擇使用相機
5. 在Output Tab選擇解析度、FPS、輸出格式、檔名
6. 按下Ctrl+F12(或者在上排工具列的Render->Render Animation)
以下是需要注意的設定:
- Render Property
- Device:選擇顯示卡
- Sampling:調整render的sample數,對於Low poly風格的動畫可以調低一點(eg.32)
- Light Path:調整光線最高反彈次數,可以將default的12設為8
- Performance:主要調整Tiles,渲染時的工作單位,若使用Nvidia的GPU可以設為32x32
- Output Property
- Dimentions:Resolution底下的%代表最後解析度將會乘上的趴數
- Output:file format選擇FFmpeg video,encoding選擇MPEG-4,video中的品質視情況而定
- View Layer Property
- 勾選Denoising,由於Cycles是採用ray tracing演算法,會產生噪點
若需要更詳細的渲染設定資訊,這邊提供兩個參考
https://www.youtube.com/watch?v=zqK4m8a52U8
https://www.youtube.com/watch?v=eIHbzzvwQWo
關於Cycles渲染加速,可以參考:
https://www.youtube.com/watch?v=8gSyEpt4-60