###### tags: `Unity Camera` [toc] # Cinemachine Cinemachine可以使用在運鏡上還有camera輕鬆切換,配合timeline可以輕易控制所有物件出現的時間以及動畫轉變。 # 安裝 Cinemachine 現在可以在 Package Manager 裡面下載。 下載好cinemachine套件後視窗上方會多一個選項 ![](https://i.imgur.com/AlapDaj.png) ![](https://i.imgur.com/kHKMBhn.png) **上方的cinemachine需要先完成安裝才會顯示。** ![](https://i.imgur.com/CXNLpeW.png) # ------------------------------------------- # 建立 virtual camera ![](https://i.imgur.com/CXNLpeW.png) 預設MainCamera會自動在Inspector新建一個CinemachineBrain物件,**一定要有cinemachineBrain物件**。 > 這個virtual camera是幹嘛用的呢?剛剛不是已經有創個camera brain了嗎。 可以想像成virtual camera是路上的監視器,而brain則是監控室中的螢幕,可以隨時切換成某一支監視器的觀看畫面! > > [name=blueremedy] [參考資料:[Day9] 攝影機設定](https://ithelp.ithome.com.tw/articles/10236268) ![](https://i.imgur.com/Na7nVWG.png) 如果沒有出現的話,也可自行新增 ![](https://i.imgur.com/j0L4gyp.png) - 在Hierarchy出現CM vcam1 即是我們剛建立的virtual camera ![](https://i.imgur.com/Uolbqcf.png) --- ## 新增一個空物件專門管理timeline ![](https://i.imgur.com/erFhapN.gif) - 在空物件新增timeline ![](https://i.imgur.com/7hwU8ck.gif) --- ## 調整virtual camera後加入timeline - 將timeline軸上(timelime管理空物件)沒用到的先刪掉 ![](https://i.imgur.com/6yXtUkk.gif) timeline這個工具就像由開發者寫的劇本,我們可以自由決定所有物件出場的時間,以及動畫何時播放?跟攝影機的切換以及先後順序。 - 在timeline先新增cinemachine Track,並把Main Camera(物件底下有cinemachineBrain)拉進去 ![](https://i.imgur.com/vtW5ed2.png) - 在timeline的時間軸上右鍵新增cinemachine Shot,並把CM vcam1拖到右方 ![](https://i.imgur.com/ZDl03wf.png) ![](https://i.imgur.com/IThnEHd.png) ![](https://i.imgur.com/d9UsZHg.gif) 這樣timeline上就有一個相機了! 不過只有一個相機的鏡頭並不夠看,所以我們可以用相同的方法在建立一個新的virtual camera,或是利用Dolly & track來製作類似攝影軌道的拍攝手法。 --- # 相機晃動 每個virtual camera底下有一個CinemachineVirtualCamera的component,這個元件下有一個Noise屬性 ![](https://i.imgur.com/GKYpHr6.png) 對Noise選擇Basuc Multi Channel ![](https://i.imgur.com/iCrK9Rr.png) 在Noise Profile有多種選擇可以選,一定要選才有效果 ![](https://i.imgur.com/cJdR0La.png) 這邊我選擇「Handheld_normal_extreme」,當然這些都要看開發者想做出什麼樣的效果來決定,「6D Shake」也是熱門選擇! 我個人認為它的特效很適合做遊戲中地震或是打擊晃動的效果。 ![](https://i.imgur.com/VUKttj5.png) - **Amplitude Gain:** 可以調整晃動的強度 - **Frequency Gain:** 可以調整晃動的頻率 ![](https://i.imgur.com/uTrX2Fq.png) 最後記得把相機加到timeline上面 --- # Follow 和 LookAt 的不同和應用 Follow是相機跟著我們選定的目標用移動的方式跟進,而LookAt是相機停滯在原地用旋轉的方式跟進。 - 我們用Body來移動camera,Aim來轉動camera。 ![](https://i.imgur.com/ZZIMVr8.png =50%x) 選擇Follow的話,我們的virtual camera主要是在Body進行調控。 Follow Offset是控制virtual camera的位置: x軸是左右,y軸是上下,z軸是遠近。 Damping是在控制鏡頭挪動時的順暢度(數字越大越順暢)。 ![](https://i.imgur.com/p3LO6AI.png =50%x) 選擇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,就可以直接查看該相機。 ![](https://i.imgur.com/L3DwnJW.png) ## 小技巧 Align With View 當新增一個virtual camera在場景時,我們若想先找好一個合適的角度(直接挪動鏡頭有點麻煩~),可以先用滑鼠右鍵和滾輪找到合適的位置,然後點選其中一個camera,選擇GameObject的Align With View,鏡頭就會自動切換成我們事先找到的合適位置。 ![](https://i.imgur.com/dPHzDpW.png =50%x) - 快捷鍵:找好位置,滑鼠留在Scene,然後按Ctrl+Shift+F --- # 依照上述相同的方式建立第二個virtual camera並放上timeline上 ![](https://i.imgur.com/vs5VORD.png) - 先來看看兩個相機分別拍攝哪先範圍 ![](https://i.imgur.com/rqW0Aqo.gif) - blend兩個相機後 ![](https://i.imgur.com/Zf5avia.gif) - blend後的結果 ![](https://i.imgur.com/5BX54kV.gif) --- # ------------------------------------------- # Dolly & Track 可以製作出拍攝軌道的效果 ![](https://i.imgur.com/DdkunCj.png) ## 建立Dolly & track ![](https://i.imgur.com/jtedRwM.png) 建立後會一次產生兩個物件 - virtual camera - DollyTrack ![](https://i.imgur.com/aIBjbLi.png) --- ## LookAt 、Follow virtual camera有兩個屬性可以讓攝影機跟隨物件或是看著該物件。這兩個屬性並非Dolly & Track才能使用,只要是virtual camera都可以使用。 - 將想拍的物件拉近LookAt欄位 ![](https://i.imgur.com/76dMtyF.png) 會看到game視窗呈現下方的效果 ![](https://i.imgur.com/vAtFUmJ.png) > 在virtual camera 中有個Aim欄位,能針對追蹤工能做細節微調。比較常用到的是Dead Zone Width 及 Dead Zone Height。調整後的結果會即時顯示在Game視窗中,各顏色範圍分別表示 > > **透明:** 自由區,主角在這範圍移動,攝影機不會跟隨。 > **藍色:** 軟跟隨區,主角移動到這個區域時攝影機移動,使主角保持在透明區。 > **紅色:** 死區,主角無法到這個區域,攝影機移動使主角強制保持在紅色區域外。 > > [name= blueremedy] > [資料參考來源:[Day9] 攝影機設定](ht tps://ithelp.ithome.com.tw/articles/10236268) ## 在DollyTrack新增軌道 - 在DollyTrack的WayPoints新增 ![](https://i.imgur.com/B2AURw0.png) - 新增軌道後會看到0,就是我們第一個軌道,且與我們的virtual camera距離很遠 ![](https://i.imgur.com/m7LLTmd.png) - 調整0軌道跟virtual camera的位置,讓0軌道在virtual camera的位子 - 繼續新增軌道 目前我新增了5個軌道,最後一個Path編號為4 ![](https://i.imgur.com/aCnNZdP.png) 在Scene的樣子 ![](https://i.imgur.com/mKafteh.png) ## 將軌道上的畫面錄成Animation - 首先在timeline上加上一個Animation Track,並將Dolly & track的virtual camera加上去 ![](https://i.imgur.com/RJlIfKn.png) ![](https://i.imgur.com/4N0MInJ.png) - 運用Amination Track來將我們的軌道錄起來,點選紅色按鈕錄影 ![](https://i.imgur.com/K0jhw40.png) ![](https://i.imgur.com/hLL8z88.gif) 接下來要特別留意自己建立了幾個軌道,像我就是建立了5個軌道,因此我在想要結束的時間軸上利用virtual camera 的CinemachineVirtualCamera元件下的Body屬性 : Path Position 來錄影。在想要的timeline時間軸上做變更,每次變更成功會發現時間軸上多了一個key。 在開始的地方新增一個 Path Position 為 0 的 key 在結束的地方新增一個 Path Position 為 4 的 key ![](https://i.imgur.com/wxsWSGO.png) 透過在下方圖片欄位的調製來讓錄影錄進去。 ![](https://i.imgur.com/UfND6Ms.png) - 先新增結尾的key,Path Position 為 4 ![](https://i.imgur.com/97I3uKB.gif) - 新增初始的key,Path Position 為 0,必須新增初始key軌道才能從0開始出發! ![](https://i.imgur.com/Bri6rU6.gif) - 最後最後 ! 把 Dolly & Track 的 virtual camera 拉到對應的動畫時間軸上 ![](https://i.imgur.com/xvRb0ng.gif) # 完成一個Dolly & Track了! 恭喜發大財! --- # ------------------------------------------------------- # 做出一個粗糙的小劇場 某個人想去某間小屋裡面,但突然發現後面有人跟蹤他!!所以他頭猛一轉 > 請大家不要抨擊我,窩也素剛學55555 > [name=朱妍穎] 前面提過timeline可以放任何的物件,於是我就加了點音效進去 {%youtube D4BgI9Z3lnU %} ---