潤稿:Kelvin Lo
去年我們發了許多關於Adam開發的系列文章,接下來我們要把重點放在技術,從幕後一窺如何製作Adam影片裡的特效技術。
關於作者
本文作者是Zdravko Pavlov,一名擁有11年經驗的視覺特效美術,專注於CG動畫合成、遊戲特效、3D建模以及燈光與渲染。Zdravko Pavlov負責Adam的美術製作,包括粒子效果及動態模擬。
粒子特效
氣體
我用PhoenixFD來模擬煙的感覺。採用像是翻書的翻頁貼圖(flipbook texture)技術在Unity的粒子系統裡播放。
在3D Studio Max中的PhoenixFD模擬預覽
這些粒子體積霧的密度由場景中的區域光源影響。區域光源程式是由我們的GFX程式設計師Robert Cupisz做的,你可以在GitHub找到相關內容。
體積霧密度由粒子控制
水花
我還用PhoenixFD來做水花漣漪的模擬。
3DS Max視窗中模擬液態表面及渲染貼圖的預覽
粒子系統在Adam腳下觸發的效果
渲染序列被組合成翻頁的法線貼圖渲染在螢幕外暫存區。產生的結果用來修改水花的表面法線。水花特效在機器人的腳下呈現。
塵土和煙
射擊分鏡中子彈擊中混凝土時產生的火星和塵煙,以及其他一些效果像是空氣中流動的微塵顆粒以及城牆排氣口的煙柱,我都是用Unity中內建的粒子特效系統製作的。
部分環境效果
動態模擬
Adam裡所有角色都用了動作捕捉技術。但我們仍需要為無法用物理呈現的布料及配飾加一些動畫。而我們不是手拉動作,而是採用一種動態模擬功能來實現。
我們事先就預設好需要一些特寫及慢動作鏡頭。模擬效果需要在精度及視覺真實度有相當高的品質,因此我們使用了一些高階的離線模擬運算軟體,模擬物理計算並烘焙成動畫用來重播。
袖子
"袖子鏡頭",我們在整個製作過程都這麼稱呼它。實際上這是我第一個開始著手的鏡頭。我嘗試了幾個不同的布料演算器,及一些蒙皮特效的方法。
最後我選擇用3DS Max內建的布料修改器來做最終模擬。然後算一些簡單測試並展示給導演評估。
一些最初的布料模擬測試(3DS Max預覽窗口)
經過一些反覆修改後,我採取了Adam的模型和動畫來做最終版本的模擬。
布料模擬(3DS Max視窗)
布料模擬的結果烘焙完後,我用Alembic Importer將它匯入到Unity。這個工具是由Unity Japan開發,可在GitHub上免費下載。
Unity中展示以alembic導入不同版本的模擬
面具
我幫損壞的面具做了一個簡單的Thinking Particles設定。
面具碎片的Thinking Particles設定
Thinking Particles的程式性及整合的Volume Breaker能幫助我更快反覆測試,探索不同的可能性。我將完成的版本交給3D建模師Plamen(Paco) Tamnev,他以此為基礎製作最終模型。
不同的Thinking Particles模擬變體
主角扯破的袖子與破碎的面具不僅對劇情本身很重要,同時也能使Adam在後續群體情境中容易一眼就認出。
CARONTEFX
Caronte是由Next Limit開發的多重物理模擬引擎,Real Flow將它作為剛體及軟體動態演算器已有一些時日。通過與引擎無縫整合,CaronteFX為Unity提供了極高品質的物理解決方案,並幫我們在很短的製作時間中產出盡可能多的特效鏡頭。
在我們第一次使用時,它還處於Alpha階段,尚未整合繩子與布料的物理模擬,但我們與CaronteFX團隊進行了緊密合作。他們在整個製作過程中竭盡全力為我們提供所需的工具及功能。目前這些功能都已上架到Asset Store。
電纜
初期階段我們對於連接Adam與機器的電纜有些困擾。因為我們有些擔心電纜的物理表現及模型交錯等等無法達到令人滿意的效果。
還好CaronteFX的繩索模擬器非常精確,它可以基於模型三角面進行碰撞計算,因此會將繩索(電纜)的厚度計算在內。
Unity 5中CaronteFX的播放結果
烘焙一個這樣的複雜模擬會產生大量的暫存資料。我們使用了CaronteFX中的自動蒙皮功能。它會產生一個骨骼結構並且可將結果匯出為FBX檔。
Unity 5中蒙皮動畫回播
射擊
在這個動作分鏡中發生了很多事情。子彈的衝擊會在地面產生塵土與火花,伴隨混凝土四散飛濺。一個機器人的腿和手臂被打斷。
早期Thinking Particles原型
這個鏡頭也是我很早開始製作,在早期的版本中使用了Thinking Particles。Thinking Particles很方便好用,讓我能快速嘗試不同的情境。在後來我們正式流程中採用CaronteFX時,我重建了這個效果,好使用它便利的Unity整合性和自動蒙皮功能。
Unity中射擊分鏡早期的原型
CaronteFX擁有一個非常方便的分段系統。作為一名視覺特效美術,我可以在Unity裡直接把Asset拆成碎片。產生新的資源並和材質保存在一起。
預覽CaronteFX製作的地面子彈衝擊
Sebastian 和Lu
這兩個角色的製作很麻煩,不僅是因為有許多不同類型的動態結構(軟性、剛性物體和布料),而且有不少複雜幾何模型相互層疊,特別是Sebastian。
基礎動畫模型(左)以及設定好用於模擬的物件(右)
我將Sebastian的模型分為三個組。斗篷、披風和懸掛在皮帶上的飾品為一組。裙子、牌子和刀在第二組。頭巾與耳飾是第三組。然後我開始重新調整它們的位置避免交錯,並開始製作低模以減少計算量。
刀的替代碰撞體以及一些關節輔助器
Unity 5中Sebastian的模擬
我們已將Sebastian角色發佈到Asset Store,其中還包括一個Caronte player,讓你能瞭解模擬的設定方式。
Lu的處理也是差不多的過程,但需要模擬的物件沒那麼多,因此設定起來要更簡單和直接。
3DS Max中準備模擬的Lu模型
CaronteFX烘焙前的模擬預覽
我和我們的製作設計師Georgi Simeonov在Lu的裙子上花了不少功夫才找到厚重皮革的感覺。
最後使用了軟性材質而薄布料來模擬裙子。軟性材質能讓外形保持的更好,也不會像布料那樣波動太大,很符合我們所預期的那種外觀和物理表現。
我和我們的製作設計師Georgi Simeonov在Lu的裙子上花了不少功夫才找到厚重皮革的感覺。
最後使用了軟性材質而薄布料來模擬裙子。軟性材質能讓外形保持的更好,也不會像布料那樣波動太大,很符合我們所預期的那種外觀和物理表現。
沒有留言:
張貼留言