《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

遊資網發表於2019-07-03
在《CF穿越火線》引擎動畫案例分享(上)中,喜悅娛樂副總經理兼技術總監弓振濤分享了製作《CF穿越火線》引擎動畫案例過程中人和資產的排程,以及並行分工和分級稽核二個案例。

本文將分享第三個案例-迭代整合和使用引擎做動畫時的一些誤區。

演講內容

我們分享了並行分工和分級稽核二個案例,現在分享第三個案例:迭代開發。這是關於Timeline內容,也是後半
場的重點。

我們還是分二個角度來分析,從人的排程,主要是二個關鍵的角色:數字資產管理員和Timeline管理員。

在傳統動畫中也會有數字資產的管理員。但對於引擎動畫,進入到引擎之後,很多資產是需要二次加工的,例如我們要在Model Importer中做一些設定,包括製作的動畫也要在FBX Importer中設定,製作預製體。

從資產排程,製作的原始資產,DCC的資產,在工程目錄中怎麼去組織?怎麼去放置?Timeline怎麼去設計?

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

從下圖右邊的迴圈可以看出,從起點DCC工具製作的資產開始,跟傳統動畫是一樣的,按照美術規範和技術規範,去製作每項內容。不管你用什麼樣的工具,並不會有特別多的要求,你喜歡用Maya製作角色都沒關係,只需要最後按我們的規範匯出內容。

例如,使用Maya製作的鏡頭,匯入攝像機的時候,需要按照FBX格式匯出,然後只有攝像機的資訊。不要像傳統做鏡頭,這個鏡頭有鏡頭動畫、角色動畫、道具動畫都在一起,我們肯定不需要這種。

按照要求匯出蒙皮骨骼動畫時,需要把焦距,包括使用的鏡頭是35毫米的學院派鏡頭,還是70毫米的IMAX鏡頭,都要設定好,還有感測器,Sensor Size,包括後鏡的偏移量,Lens Shift等。

Marvelous Designer匯出布料模擬的時候,要Alembic這種格式提供,包含裡面只能有動畫資訊,不要包含其它的東西。因為這個檔案非常大,隨便模擬一個東西時,在磁碟上,幾十TB或上百TB就沒了。

使用Substance Designer製作材質,現在這個工具也非常時髦和主流,因為它做的程式化材質非常棒,而且體積非常小。我們可以在Unity中進行二次的修改、引數的修改。

當匯出FBX格式的時候,在SD裡匯出的時候,設定的引數型別一定是Unity能夠識別的。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

作為數字資產管理員,第一個責任肯定是稽核驗收資產。資產管理員需要對資產做一些必要的改動,然後製作成預製體,放到Unity引擎裡面。

例如在工程中,Assets是最原始的資產管理目錄,資產管理員收到的一些AE特效和NUKE製作的特效,包括一些Alembic的檔案、布料的模擬、音訊等內容。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

數字資產管理員的角色更像一個配菜師,把菜洗好、切好放在案板上。這時要等待我們的大廚Timeline管理員出場。Timeline管理員需要考慮的是,我以什麼樣的方式把資產放到Timeline裡,會製作出什麼樣的效果?

數字資產管理員和Timeline管理員是二個完全不一樣的工種,思考方式也不一樣。Timeline管理員是基於引擎的,我怎麼設計Timeline的結構,從而讓這個結構更合理,讓傳統團隊中動畫師和特效師都能夠很開心的同時工作。這是Timeline管理員要去思考的問題。

Timeline管理員要設計Timeline場景,專案中的組長場景,導演場景、每個Timeline場景的軌道、軌道的資產要怎麼去設計,才能符合我們拍攝的需求。

我們通過組長或執行導演去選拔Timeline管理員,他們需要對製作流程非常熟悉,並且具備一定的美感,也要知道如何跟人員協調,包括和外包對接的時候,知道痛點在什麼地方,知道哪個地方會導致專案停滯。

需要說明這不是什麼標準,只能說是每一個團隊策劃專案的時候,選擇出一個適合自己的,大家還是要按照自己實際專案情況進行。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

我們先看Timeline場景的設計,設計Timeline場景的時候,我們的思維要先回到遊戲。

Unity是擅長製作遊戲的工具,那麼遊戲裡面如果是程式設計師,一定是想到藉助一個概念:全域性變數和區域性變數。

我們套用一下全域性變數,例如有一個全域性Post-Processing Stack,在上面有一個Is Global的選項。勾選後,只要在設定好Layer的層,所有的Post-Processing Stack都會生效,尤其是is Global。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

我們的思維是什麼?在Timeline場景中會有全域性的Post-Processing Stack,例如拍攝場景在一個黃昏,我希望設定光線也好、天空也好,包括顏色校正都是正常的情況。

但是可能會有一些自己特殊的需求,例如順著我們的時間軸線性往前推進的時候,第一個鏡頭沒有什麼任何變化,就是黃昏暖暖的光照,但是光線沒那麼強。

第二個鏡頭,導演需要一個閃電劈了下來。那麼我們需要一個場景,如果使用新的版本,調溫度可以用色溫去調,把色溫調到一萬或者更高,色溫看上去是非常冷的,甚至發藍的光。這是特殊的需求,我們只需要在二號鏡頭改變場景燈光的色溫,其它景深、AO則不需要發生改變。

這個時候就產生了一個區域性的需求。當然第三個鏡頭閃電過後恢復平靜,第四個鏡頭時,鏡頭可能拆分成了04a、04b。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

例如閃電後,我們發現草叢中躲避的狙擊手,在04a鏡頭時,焦距的景深可能聚集在槍口上,也就是我們的焦點。04b的時候,景深會慢慢過渡到瞄準鏡,或者是狙擊手的臉部,這樣的一個動態的過程。

這個時候,當時間軸開始運動的時候,擊穿第一個鏡頭沒有變化,第二個鏡頭出現閃電,剛才的過程依次過去。這種思路是相對來說全域性和區域性的關係。

時間軸最本質的是:通過時間的線性擊穿不同的資源,然後這些資源,資產能夠控制表象的行為。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

類似像鏡頭也一樣,鏡頭可能做的FOV,FOV可能在20~25之間,不需要特別的大。但下一個鏡頭中,我們可能需要的是正常的35毫米的焦距,這是我們常規拍攝用到的鏡頭。

再下一個鏡頭可能是劉海或頭髮的特寫,我們需要特別大的8毫米的鏡頭拍攝。這個時候每一個鏡頭也會有各自的需求,就像Post-Processing Stack,天空盒,燈光都會有這樣的需求。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

這個時候把概念抽象出來,我們設計Timeline場景的時候,如下圖紅框部分,首先有一個區域是全域性變數,包括:Camera、Post-Processing Stack、Skybox、Light,可能以後還有其它全域性的東西我們希望剛開始預置的值貫穿拍攝影片的時間軸,但是每個鏡頭一定有特殊的值。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

下圖紅框部分的12號鏡頭,當啟用鏡頭的時候,我們希望鏡頭的目標發生一些改變,包括角色,燈光都會進行改變。但是Post-Processing Stack不需要改變,使用全域性的就可以了,這個時候可以定製每個鏡頭的需求。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

然後我們按照鏡頭劃分,以此類推。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

其次,Timeline管理員需要設計Timeline軌道和軌道資產。

下圖左邊紅框部分就是在Timeline視窗中看到軌道的區域,右邊是軌道資產的區域。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

原生的Timeline裡面,現在Unity官方推出的只有一些比較簡單的東西,包括:物件控制,動畫播放音訊,當然也有Cinemachine。Cinemachine的優點,只要用過的人都知道,我只說它的缺陷,因為這是經驗的分享。

例如前面提到的鏡頭,景深的焦點聚集在槍口的時候,這是鏡頭的前半程,後半程的焦點會跑到後面。如果我們使用Cinemachine要怎麼做呢?

Cinemachine有點像Add Component,可以新增一個效果。這個效果只要裝了Post-Processing Stack之後,都可以去新增。Post-Processing Stack的效果是跟虛擬攝像頭持續的時間是一樣的生命週期,也就是進這個鏡頭有這個效果,出這個鏡頭,效果就結束了。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

像剛剛說的狙擊手的鏡頭,製作的時候,我會建立二個虛擬攝像機。

第一個虛擬攝像機焦點就是在槍口,這時我已經調好景深了,各項數值,包括光圈和焦距。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

第二個虛擬攝像機的鏡頭,即6號鏡頭,06B,我可能就把焦距放在瞄準鏡上。這個時候中間做了一個過渡,不管是線性還是Curve的過渡,這時候非常的完美。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

但這時候有個問題,比如說導演有個需求,當景深從槍口推進到瞄準鏡的過程中,我希望加一個運動模糊Motion Blur,這個時候在下圖紅框鏡頭中間的三分之一段,在推進的過程要怎麼新增?

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

一些人說我可以按傳統的方法繼續拆,把二個虛擬攝像機鏡頭拆成四個。中間我拆出來這二個,在這二個鏡頭上,我會在後面放Motion Blur的一個指令碼。

如果有別的需求,例如我希望對燈光進行一個校驗,在快速推進的時候,這時又來了一個閃電需求,我又需要改變光線的強度。這時不可能無限制地拆下去。而且後面的難度是成指數的,基本上是拆不了。

這個時候應該回顧一下Timeline最簡單的需求,在Timeline軌道中,我們希望每個效果都是一個軌道,非常簡單獨立的,這些軌道可能是由不同角色的藝術家製作的。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

這個時候我可能會做一個景深的軌道,這個景深的軌道可能就是前半程交集在我的槍口,後面到了瞄準鏡。

這時候想做Motion Blur也可以,只要做一個Motion Blur的軌道就可以了。你的生命週期可以持續的不一樣。包括GO控制的,即GameObject控制的,都可以按自己的需要劃分,這樣就可以形成自己的導演工具。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

上圖是其中的一個軌道,這個比較簡單,在這個鏡頭時間內持續,出來這個鏡頭就消失。實際上我們使用的時候,可能角色走進屋子後開啟燈,燈亮的狀態是動態過程,就像Light GameObject被顯式啟用了。

但後面持續的很多鏡頭都會有這樣的效果,不可能每個都開一遍燈,尤其做一些特效的時候,它會有重新初始化的過程,非常繁瑣。這個時候可以定製自己的需求,像這個鏡頭持續多少時間內消失存在,或者一直消失,一直存在。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

同樣的思路,我們可以製作出別的軌道,例如:場景的軌道、景深的軌道、轉場的軌道、顏色校正、Light、Motion Blur,包括Speed子彈時間。根據我們的需求做各樣各種的軌道,這些軌道就組成了導演工具。

軌道的設計思路其實有二種比較簡單直接的。第一種是如果你的能力非常強,有很強的技術美術能力,技術也非常強,那你就把所有資源放一起就好了,因為這樣確實非常快,怎麼快怎麼來,這種思路適合小團隊。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

但是我們選取的是另一種方案,這種思路更適合大團隊。例如:在專案中,你是做鏡頭的,你就做好自己的鏡頭軌道就可以了,不要放其他的軌道。

因為當你的專案比較大、做的專案資產比較多的時候,還是逃不掉並行工作的事情,你還沒放好Playable,別人可能想放燈光了,別人就要等著你,所以我們是把所有角色工種的軌道全部分開。

最後有一些誤區。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

我們還是提到一次性成片的問題。其實我們更多的時候做一些落地的商業化專案的時候,更多的是多場景,不可能一集只在一個場景拍,鏡頭非常多、資產非常多。

這個時候千萬不要追求一次性成片,一次性成片確實可以做到非常的酷炫,但是我們建議Timeline時間軸不要超過50個鏡頭,或者根據拍攝場地區分,儘量不要載入比較大的場景,它還是非常費效率的。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

有的人問,如果使用引擎做動畫,很多東西可以在引擎裡做,是不是就可以放棄之前的東西?

但是導演可能還會拿Premiere串片,因為非常方便,他們已經用慣了,用來貼聲音和其它東西上去,可能我們後期還是要用NUKE去做合成,雖然引擎裡也可以合成非常酷炫的效果,但是這個成本對於過渡期間的製作還是有很大的成本。

所以不要拋棄傳統的動畫軟體,我們拿Unity也是做一個改進和升級。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

也不要追求單一的工程。因為Unity本身可以建立3D模板或HDRP模板,包括Unity版本更新的非常快。例如,我負責角色,我只關心角色製作好之後匯入引擎,附上了引擎的材質之後效果怎麼樣,我不需要更新其它更多的東西,我可以自建一個工程。

或者使用高清晰渲染管線HDRP的時候,我們可以做一些皮膚或植被,這種半透明效果非常好。可能有一些3D拍攝場景,我可以完全自建一個HDRP的工程去做這件事。

這和跟傳統做遊戲不同,傳統做遊戲會去找一個固定的版本,搭一個大工程就製作下去了。動畫的製作畢竟最後驗收的時候會讓鏡頭驗收。

尤其像Unity更新,比如Unity 2019更新完了之後,Post-Processing Stack全部改了,不能說做到20集的時候再去更換,這是非常不現實的一件事,所以不要追求單一的工程。

《CF穿越火線》引擎動畫案例分享(下):迭代整合和引擎動畫的誤區

最後是謹慎使用複製功能。使用複製功能的時候,像Post-Processing Stack的資料儲存在Profile裡面,Timeline的儲存資料在Playable裡面。

有時候我們建立新場景的時候,確實有非常大的工作量。這時候複製時一定要小心,它們共用的是一份資料資源,千萬不要在改後面的鏡頭時,把前面的資料給改掉,所以謹慎使用這個功能。最好的方式是讓技術美術程式化的,批量去建立這種指令碼。

謝謝大家!

前文:《CF穿越火線》引擎動畫案例分享(上)

作者:弓振濤
來源:Unity官方平臺

相關文章