Unity2017.1版本中推出了全新的Timeline技術。Timeline不僅僅只是一個可被游戲行業應用的工具,它可以為各個行業(影視制作、廣告、建築等)的互動內容開發者提供支持。下面本人就TimeLine &Cinemachine 以及Frame Recorder等三個方面簡介一下相關技術,希望大家能有所收獲。
一: TimeLine 時間線
TimeLine
是一種影視動畫與游戲強交互內容的開發工具。一開始的開發目的僅僅是為了游戲中“轉場動畫”而設立的開發工具,但是后來隨着開發的進展開發人員發現可以不斷加入更多的功能,使其更加的強大。TimeLine
就像導演一樣在Unity
中控制序列、使用真實世界相機的設置來合成鏡頭、自動跟蹤指定位置。
目前基於Unity2017.1
版本,總結Timeline
功能可以分為如下四部分:
- 預渲染過場動畫(類似3DMax 、Maya軟件中的預渲染)
- 實時渲染過場動畫
- 影視制作(FrameRecorder)
- 可交互動畫片段(timeline基於assets, 可被重復使用)不僅僅限於游戲使用。
雖然TimeLine 隨着版本的提升,一定會不斷加入新的功能實現,但是目前(2017年)其主要作用還是做“過場動畫”(或者說“轉場動畫”)。 TimeLine 的操作界面類似 時間線,但是本質不同是它可以控制模型、粒子、音頻、攝像機鏡頭、腳本等諸多內容,甚至可以開發完整游戲,見圖1_1所示。

圖1_1
本章配套演示項目TimeLine
截圖
與TimeLine 技術配合使用的還有 “Cinemachine”插件(高級虛擬攝像機系統)、“FrameRecorder“幀錄制工具。 前者是虛擬攝像機系統,提供了豐富功能的影視專業級場景跟蹤與拍攝控制技術。后者直接把TimeLine工程場景效果輸出到自定義格式貼圖中,最終利用幀動畫技術完成游戲場景之間的動畫過度,即“過場動畫”。
提示:這里Cinemachine虛擬攝像機系統,以及Frame Recorder 並不是直接集成在Unity編輯器中使用,而是需要分別通過Asset Store 、Github進行下載安裝后使用。 這樣安排是因為Unity公司認為以上功能的實現還不是最終完善版本,更多內容還在研發之中。所有就把完成度高的部分以插件形式提供廣大研發人員使用,相信后續版本會做到無縫整合在一起。
因為TimeLine
在內的三大技術規范與內容較多,所以筆者決定以小項目演示的形式,分為若干步驟的講解,帶領讀者學會其核心技術。首先我們先來了解Timeline
的使用與基本功能
第1步驟:
新建項目(必須使用Unity2017.1 以上版本),導入必要資源。 因為本演示項目需要用到角色的動畫演示,所以我們打開Asset Store 窗口,在搜索框中點擊“Mecanim Locomotion Starter”查找插件模型。點擊“導入”按鈕后,系統會彈出導入內容確認窗口,我們默認點擊“Import”導入即可。見圖1_2所示。

圖1_2
下載Mecanim LocomotionStarter
模型
第2步驟:
項目視圖中建立TimeLine(鼠標右鍵彈出窗口àCreateàTimeline),然后拖拽到層級視圖中。然后我們建立一個簡單的演示場景,在一個平面上建立一個紅色Cube與黃色Sphere ,如下圖1_3所示

圖1_3
建立演示基本場景
第3步驟:
現在我們建立Timeline 的“Activation Track”軌,學習游戲對象的隱藏與顯示基本控制技術。首先點擊Unity頂部菜單Windows-->Timeline Editor ,新建Timeline窗口。然后點擊Timeline左上角的“ActivationTrack”選項,建立“Activation Track”軌(圖1_4),同時把層級視圖的Cube對象拖拽到本軌道控制物體中,見圖1_5所示。

圖1_4
建立“Activation Track
”軌

圖1_5 Cube
賦值給Activation Track
軌
現在定位Active 軌道段,快捷鍵Ctrl+D復制一份,點擊Timeline 左邊的控制三角按鈕“Play”,預覽場景。此時我們會發現cube 立方體會隨着時間線的移動顯示與隱藏交替出現,這說明“Active”軌是用於游戲對象的顯示控制。
第4步驟:
現在我們來建立“AnimationTrack”軌,學習游戲對象與角色模型的動畫控制。首先建立“Animation Track”,把Sphere 拖拽到本軌中,此時會立即顯示“Create Animator on Sphere”彈出框,點擊后我們發現在Sphere 對象上添加了Animator組件,只有這樣“Animation Track”才能控制游戲對象錄制“方位”(Transfrom)動畫。
第5步驟:
點擊Sphere所屬的“AnimationTrack”右邊的“紅色”點進行錄制,此時會發現本軌道發紅顯示“Recording...”字樣,如圖圖1_6所示。

圖1_6 Animation Track
錄制動畫中
第6步驟:
拖動Sphere 物體,此時錄制軌會留下白色的“幀點”,然后在錄制狀態下移動時間線。再次拖動Sphere 就會再次留下“幀點”,這樣不斷循環可以記錄下所有位移信息。點擊Timeline 的“Play”三角按鈕,可以在不運行項目的情況下,直接預覽錄制的位移動畫效果。如果認為這種方式比較簡單,則可以點擊紅色錄制按鈕右邊的白色按鈕,顯示其方位曲信息。讀者可以通過拖拽鼠標的方式,進一步調節出更加復雜的方位動畫,見圖圖1_7所示。

圖1_7
曲線方式調節游戲對象方位動畫
第7步驟:
“AnimationTrack”軌除了一般的方位(位移、旋轉、縮放)動畫制作,更多是用在角色模型上。現在把角色模型DefaultAvatar.fbx (項目位置:Locomotion Setup-->Locomotion-->Animations-->DefaultAvatar.fbx)拖拽到場景視圖中。然后再建立一個“Animation Track”,把層級視圖中的DefaultAvatar 拖拽到本軌道控制物體中。
第8步驟:
點擊“AnimationTrack”右邊(顯示三條橫線Logo的)按鈕,在彈出框中點擊“Add From Animation Clip”,在彈出窗口中添加Idle 、Walk、Run等角色動畫,播放預覽效果。參見圖1_8所示。

圖1_8
添加角色動畫剪輯到Timelin
提示:
層級視圖TimeLine對象所屬的Playable Director 組件,改變Wrap Mode屬性 為“Loop”可以不斷循環重復的預覽動畫效果直到滿意,比較實用。
二: Cinemachine 虛擬攝像機
Cinemachine 是虛擬攝像機系統,使用它可以像導演一樣在Unity中控制序列、使用真實世界相機的設置來合成鏡頭、自動跟蹤指定位置。Cinemachine虛擬攝像機功能強大,它即可以單獨使用也可以配合Timeline制作功能強大的影視視頻特效。
Cinemachine 目前(2017年)需要在AssetStore 下載,打開Asset Store 窗口搜索關鍵字“Cinemachine”,然后下載安裝。(圖2_1)

圖2_1
下載Cinemachine
虛擬攝像機
關於Cinemachine攝像機系統筆者還是以小項目演示形式,分為若干步驟進行講解。這里為了方便起見,我們接着前面上一節內容的場景繼續演示開發。
第1步驟:
插件導入成功后,在Untiy頂部會多出“Cinemachine”菜單,點擊“CreateVirtual Camera”創建第1個虛擬攝像機。在層級視圖上會出現“CM vcam1”的虛擬攝像機對象。"CM vcam1"屬性視圖中,把Sphere 對象賦值給屬性“Look At”,這樣第1台攝像機就會一直“關注” Sphere對象。

圖2_2
給“CM vcam1
”對象賦值“Look At
”屬性
第2步驟:
依次點擊菜單“Cinemachine”-->"CreateFreeLook Camera" 創建第2台虛擬攝像機。先禁用“CM vcam1”, 把層級視圖的“DefaultAvatar”賦值給 "Create FreeLook Camera" 攝像機的Look At參數。再把層級視圖的“DefaultAvatar”模型下的“RightLeg”賦值給 "Create FreeLook Camera" 攝像機的Follow參數。運行游戲(或者點擊Timeline窗口的運行按鈕),這時我們發現,圍繞着“DefaultAvatar”角色對象, Create FreeLook Camera攝像機形成了上、中、下可隨玩家鼠標移動(上下左右)而自由旋轉的自由靈活攝像模式。見圖2_3所示。

圖2_3 Create FreeLook Camera
虛擬攝像機
第3步驟:

圖2_4
創建Cinemachine Track
目前為止各個攝像機應用還是各自為戰,如何有效按照開發意圖管理各種攝像機呢?這樣我們就想到了Cinemachine 與Timeline 結合使用,即用Timeline 管理各個虛擬攝像機。
首先建立Timeline 的“CinemachineTrack”軌,管理各虛擬攝像機。點擊TimeLine 的"Add" 按鈕,建立“Cinemachine Track”軌,把主攝像機賦值給“Cinemachine Track”,見圖2_4所示。
第4步驟:
點擊“Cinemachine Track”軌, 鼠標右鍵點擊彈出框“AddCinemachine Shot Clip”選項。點擊“Cinemachine Shot”編輯軌,在屬性視圖中對VirtualCamera 屬性添加我們上面建立的虛擬攝像機,見圖2_5所示。現在運行程序,我們發現兩台攝像機(“CM vcam1”與“CM FreeLook1”)已經按照事先定義的順序依次在Game視圖輸出場景信息了。
提示:這里的虛擬攝像機實際並不直接輸出場景信息,而是建立時給主攝像機加入了“Cinemachine Brain (Script)”腳本組件。Unity從而通過這個組件來管理各個虛擬攝像機,單一時間點只有一個虛擬攝像機把場景信息轉發主攝像機,玩家從Game 視圖看到最終的影像。

圖2_5
完成Cinemachine Track
軌編輯
三: Frame Recorder 幀錄制器
Frame Recorder 幀錄制器是Unity公司開發的一個高級“截圖工具”。本質是從Timeline 中獲取最終輸出場景信息,然后轉制為JPEG、PNG、EXR 三種格式的圖片與視頻信息。具體使用步驟如下:

圖3_1 Recorder
窗口
第1步驟:
從Github
下載FrameRecorder
幀錄制器。下載鏈接地址:https://github.com/Unity-Technologies/GenericFrameRecorder
或者也可以直接在本章節的配套資料中獲取。
第2步驟:
由於FrameRecorder是開源項目,所以直接把下載后的Zip包解壓縮,導入本項目中即可。導入成功后,Untiy頂部菜單會多出一項“Tools”,我們依次點擊“Tools”-->"Recorder"-->"Video"把彈出窗口停靠Unity編輯器一側,如圖3_1所示。
第3步驟:
對Recorder 窗口的如下參數賦值,它是錄制輸出信息內容的關鍵:
- Output format:輸出格式(JPEG、PNG、EXR)選擇
- Output Path: 輸出路徑
- File Name: 輸出文件名稱
第4步驟:
Timeline 中點擊“Add”按鈕,建立“RecorderTrack”軌。然后鼠標點擊選擇“Add Recorder Clip”,這時就會發現Recorder Track 上增加了“RecorderClip”。點擊Recorder 窗口的“Start Recording”開始正式錄制,見下圖3_2所示。

圖3_2
增加RecorderClip
,點擊“Start Recording
”錄制