天天看點

Unity2017版本TimeLine& Cinemachine 技術

Unity2017.1版本中推出了全新的Timeline技術。Timeline不僅僅隻是一個可被遊戲行業應用的工具,它可以為各個行業(影視制作、廣告、建築等)的互動内容開發者提供支援。下面本人就TimeLine &Cinemachine 以及Frame Recorder等三個方面簡介一下相關技術,希望大家能有所收獲。

一: TimeLine  時間線

是一種影視動畫與遊戲強互動内容的開發工具。一開始的開發目的僅僅是為了遊戲中“轉場動畫”而設立的開發工具,但是後來随着開發的進展開發人員發現可以不斷加入更多的功能,使其更加的強大。TimeLine就像導演一樣在Unity中控制序列、使用真實世界相機的設定來合成鏡頭、自動跟蹤指定位置。

目前基于Unity2017.1版本,總結Timeline功能可以分為如下四部分:

  • 預渲染過場動畫(類似3DMax 、Maya軟體中的預渲染)
  • 實時渲染過場動畫
  • 影視制作(FrameRecorder)
  • 可互動卡通片段(timeline基于assets, 可被重複使用)不僅僅限于遊戲使用。

    雖然TimeLine 随着版本的提升,一定會不斷加入新的功能實作,但是目前(2017年)其主要作用還是做“過場動畫”(或者說“轉場動畫”)。 TimeLine 的操作界面類似 時間線,但是本質不同是它可以控制模型、粒子、音頻、錄影機鏡頭、腳本等諸多内容,甚至可以開發完整遊戲,見圖1_1所示。

Unity2017版本TimeLine& Cinemachine 技術

圖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所示。

Unity2017版本TimeLine& Cinemachine 技術

圖1_2 下載下傳Mecanim LocomotionStarter 模型

    第2步驟:

    項目視圖中建立TimeLine(滑鼠右鍵彈出視窗àCreateàTimeline),然後拖拽到層級視圖中。然後我們建立一個簡單的示範場景,在一個平面上建立一個紅色Cube與黃色Sphere ,如下圖1_3所示

Unity2017版本TimeLine& Cinemachine 技術

圖1_3 建立示範基本場景

     第3步驟:

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

Unity2017版本TimeLine& Cinemachine 技術

圖1_4 建立“Activation    Track”軌

Unity2017版本TimeLine& Cinemachine 技術

圖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所示。

Unity2017版本TimeLine& Cinemachine 技術

圖1_6  Animation Track 錄制動畫中

    第6步驟:

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

Unity2017版本TimeLine& Cinemachine 技術

圖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所示。

Unity2017版本TimeLine& Cinemachine 技術

圖1_8  添加角色動畫剪輯到Timelin

層級視圖TimeLine對象所屬的Playable Director 元件,改變Wrap Mode屬性 為“Loop”可以不斷循環重複的預覽動畫效果直到滿意,比較實用。

二:  Cinemachine 虛拟錄影機

     Cinemachine 是虛拟錄影機系統,使用它可以像導演一樣在Unity中控制序列、使用真實世界相機的設定來合成鏡頭、自動跟蹤指定位置。Cinemachine虛拟錄影機功能強大,它即可以單獨使用也可以配合Timeline制作功能強大的影視視訊特效。

Cinemachine 目前(2017年)需要在AssetStore 下載下傳,打開Asset Store 視窗搜尋關鍵字“Cinemachine”,然後下載下傳安裝。(圖2_1)

Unity2017版本TimeLine& Cinemachine 技術

圖2_1  下載下傳Cinemachine 虛拟錄影機

關于Cinemachine錄影機系統筆者還是以小項目示範形式,分為若幹步驟進行講解。這裡為了友善起見,我們接着前面上一節内容的場景繼續示範開發。

     第1步驟:

     插件導入成功後,在Untiy頂部會多出“Cinemachine”菜單,點選“CreateVirtual Camera”建立第1個虛拟錄影機。在層級視圖上會出現“CM vcam1”的虛拟錄影機對象。"CM vcam1"屬性視圖中,把Sphere 對象指派給屬性“Look At”,這樣第1台錄影機就會一直“關注” Sphere對象。

Unity2017版本TimeLine& Cinemachine 技術

圖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所示。

Unity2017版本TimeLine& Cinemachine 技術

圖2_3  Create FreeLook Camera虛拟錄影機

    第3步驟:

Unity2017版本TimeLine& Cinemachine 技術

圖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 視圖看到最終的影像。

Unity2017版本TimeLine& Cinemachine 技術

圖2_5 完成Cinemachine Track軌編輯

三:  Frame Recorder 幀錄制器

Frame Recorder 幀錄制器是Unity公司開發的一個進階“截圖工具”。本質是從Timeline 中擷取最終輸出場景資訊,然後轉制為JPEG、PNG、EXR 三種格式的圖檔與視訊資訊。具體使用步驟如下:

Unity2017版本TimeLine& Cinemachine 技術

圖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所示。

Unity2017版本TimeLine& Cinemachine 技術

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