###### tags: `Unity Camera`
[toc]
# Cinemachine
Cinemachine可以使用在運鏡上還有camera輕鬆切換,配合timeline可以輕易控制所有物件出現的時間以及動畫轉變。
# 安裝
Cinemachine 現在可以在 Package Manager 裡面下載。
下載好cinemachine套件後視窗上方會多一個選項


**上方的cinemachine需要先完成安裝才會顯示。**

# -------------------------------------------
# 建立 virtual camera

預設MainCamera會自動在Inspector新建一個CinemachineBrain物件,**一定要有cinemachineBrain物件**。
> 這個virtual camera是幹嘛用的呢?剛剛不是已經有創個camera brain了嗎。 可以想像成virtual camera是路上的監視器,而brain則是監控室中的螢幕,可以隨時切換成某一支監視器的觀看畫面!
>
> [name=blueremedy]
[參考資料:[Day9] 攝影機設定](https://ithelp.ithome.com.tw/articles/10236268)

如果沒有出現的話,也可自行新增

- 在Hierarchy出現CM vcam1
即是我們剛建立的virtual camera

---
## 新增一個空物件專門管理timeline

- 在空物件新增timeline

---
## 調整virtual camera後加入timeline
- 將timeline軸上(timelime管理空物件)沒用到的先刪掉

timeline這個工具就像由開發者寫的劇本,我們可以自由決定所有物件出場的時間,以及動畫何時播放?跟攝影機的切換以及先後順序。
- 在timeline先新增cinemachine Track,並把Main Camera(物件底下有cinemachineBrain)拉進去

- 在timeline的時間軸上右鍵新增cinemachine Shot,並把CM vcam1拖到右方



這樣timeline上就有一個相機了! 不過只有一個相機的鏡頭並不夠看,所以我們可以用相同的方法在建立一個新的virtual camera,或是利用Dolly & track來製作類似攝影軌道的拍攝手法。
---
# 相機晃動
每個virtual camera底下有一個CinemachineVirtualCamera的component,這個元件下有一個Noise屬性

對Noise選擇Basuc Multi Channel

在Noise Profile有多種選擇可以選,一定要選才有效果

這邊我選擇「Handheld_normal_extreme」,當然這些都要看開發者想做出什麼樣的效果來決定,「6D Shake」也是熱門選擇! 我個人認為它的特效很適合做遊戲中地震或是打擊晃動的效果。

- **Amplitude Gain:** 可以調整晃動的強度
- **Frequency Gain:** 可以調整晃動的頻率

最後記得把相機加到timeline上面
---
# Follow 和 LookAt 的不同和應用
Follow是相機跟著我們選定的目標用移動的方式跟進,而LookAt是相機停滯在原地用旋轉的方式跟進。
- 我們用Body來移動camera,Aim來轉動camera。

選擇Follow的話,我們的virtual camera主要是在Body進行調控。
Follow Offset是控制virtual camera的位置: x軸是左右,y軸是上下,z軸是遠近。
Damping是在控制鏡頭挪動時的順暢度(數字越大越順暢)。

選擇LookAt的話,我們的virtual camera主要是在Aim進行調控。
Offset和Damping的部分,和Follow相同。
- Dead Zone
是一個呈現在Game的小方框(理論上,是在畫面正中央的無色區塊),如果目標移動出了Dead Zone,鏡頭才會旋轉跟進。
換句話說,Dead Zone越小,鏡頭就必須越為頻繁地跟進,我們看到的畫面就會越流暢。
- Aim的流暢度需要注意兩個部分:Dead Zone劃出範圍,超出範圍就會造成鏡頭旋轉;Damping控制超出後的誤差,值越小,就會越為即時性地關注目標是否超出Dead Zone。
---
# 利用相同手法在做幾個virtual camera
## 小技巧 Statis:Live Solo
當有多個virtual camera在場景時,我們若想馬上查看其中一個camera的攝影範圍而不想透過執行遊戲查看,我們可以直接點solo,就可以直接查看該相機。

## 小技巧 Align With View
當新增一個virtual camera在場景時,我們若想先找好一個合適的角度(直接挪動鏡頭有點麻煩~),可以先用滑鼠右鍵和滾輪找到合適的位置,然後點選其中一個camera,選擇GameObject的Align With View,鏡頭就會自動切換成我們事先找到的合適位置。

- 快捷鍵:找好位置,滑鼠留在Scene,然後按Ctrl+Shift+F
---
# 依照上述相同的方式建立第二個virtual camera並放上timeline上

- 先來看看兩個相機分別拍攝哪先範圍

- blend兩個相機後

- blend後的結果

---
# -------------------------------------------
# Dolly & Track
可以製作出拍攝軌道的效果

## 建立Dolly & track

建立後會一次產生兩個物件
- virtual camera
- DollyTrack

---
## LookAt 、Follow
virtual camera有兩個屬性可以讓攝影機跟隨物件或是看著該物件。這兩個屬性並非Dolly & Track才能使用,只要是virtual camera都可以使用。
- 將想拍的物件拉近LookAt欄位

會看到game視窗呈現下方的效果

> 在virtual camera 中有個Aim欄位,能針對追蹤工能做細節微調。比較常用到的是Dead Zone Width 及 Dead Zone Height。調整後的結果會即時顯示在Game視窗中,各顏色範圍分別表示
>
> **透明:** 自由區,主角在這範圍移動,攝影機不會跟隨。
> **藍色:** 軟跟隨區,主角移動到這個區域時攝影機移動,使主角保持在透明區。
> **紅色:** 死區,主角無法到這個區域,攝影機移動使主角強制保持在紅色區域外。
>
> [name= blueremedy]
> [資料參考來源:[Day9] 攝影機設定](ht tps://ithelp.ithome.com.tw/articles/10236268)
## 在DollyTrack新增軌道
- 在DollyTrack的WayPoints新增

- 新增軌道後會看到0,就是我們第一個軌道,且與我們的virtual camera距離很遠

- 調整0軌道跟virtual camera的位置,讓0軌道在virtual camera的位子
- 繼續新增軌道
目前我新增了5個軌道,最後一個Path編號為4

在Scene的樣子

## 將軌道上的畫面錄成Animation
- 首先在timeline上加上一個Animation Track,並將Dolly & track的virtual camera加上去


- 運用Amination Track來將我們的軌道錄起來,點選紅色按鈕錄影


接下來要特別留意自己建立了幾個軌道,像我就是建立了5個軌道,因此我在想要結束的時間軸上利用virtual camera 的CinemachineVirtualCamera元件下的Body屬性 : Path Position 來錄影。在想要的timeline時間軸上做變更,每次變更成功會發現時間軸上多了一個key。
在開始的地方新增一個 Path Position 為 0 的 key
在結束的地方新增一個 Path Position 為 4 的 key

透過在下方圖片欄位的調製來讓錄影錄進去。

- 先新增結尾的key,Path Position 為 4

- 新增初始的key,Path Position 為 0,必須新增初始key軌道才能從0開始出發!

- 最後最後 ! 把 Dolly & Track 的 virtual camera 拉到對應的動畫時間軸上

# 完成一個Dolly & Track了!
恭喜發大財!
---
# -------------------------------------------------------
# 做出一個粗糙的小劇場
某個人想去某間小屋裡面,但突然發現後面有人跟蹤他!!所以他頭猛一轉
> 請大家不要抨擊我,窩也素剛學55555
> [name=朱妍穎]
前面提過timeline可以放任何的物件,於是我就加了點音效進去
{%youtube D4BgI9Z3lnU %}
---