2018年8月6日 星期一

死者之書:(三)環境資源與特效製作

作者:Zdravko Pavlov 原文
潤稿:Wei J

系列作品:
死者之書:(一)概念美術
死者之書:(二)角色資源製作
死者之書:(三)環境資源與特效製作
死者之書:(四)Quixel、風、場景地形和優化技巧



揭秘《死者之書》之環境資源及特效創作

今天將由Unity的Demo團隊的CG和VFX藝術家Zdravko Pavlov帶領大家瞭解攝影製圖資源、樹木以及VFX的創作過程,
Zdravko曾在《Viking Village》、《The Blacksmith》和《ADAM》專案中參與過粒子效果、剛體動力學和布料模擬的創作。

然而《死者之書》則有些不同,這個專案中我需要使用攝影製圖法創建多個環境資源,這是一個全新的領域。戶外攝影是我的興趣, 所以我很樂意接下這份任務,創造一棵樹?我的意思是.......能有多困難是吧?在接下來的內容我會試著描述在前期製作跟開發階段我所學習到的事物。


攝影製圖法(Photogrammetry)工作流程

幸運的是,網絡上有很多關於使用攝影製圖法的有價值的資訊,多數文章會說,你需要任何一台數位單眼及50mm定焦鏡頭。
當時沒有這樣的設備,所以我決定使用自己的2400萬像素 Sony a7II無反相機來做初步測試,這個相機有16mm-35mm變焦鏡頭。但這一切讓我告訴你,是可行的!

寬的鏡頭越會帶來更多的失真,但這些問題總是可以在軟體內修正的,例如使用Lightroom來修,但事實上用不著因為攝影製圖軟體優雅地處理掉了。理論上定焦鏡頭會較為僵硬,並帶來較清晰的圖像。如果你在一個受控的工作室環境中進行掃描,定焦鏡頭的效果很棒。然而在戶外的時候,使用高質量變焦鏡頭妥善地拍攝物體將有助於之後的製作。 












攝影製圖法的一些早期探索。 

我嘗試了多數熱門的攝影製圖軟體,其中一些效果不錯。我選擇的是RealityCapture,因為它具有明顯較優秀的效能,能夠處理大量圖片又不會使記憶體不足。驚人的是還能從圖片中重構大量細節。我由此得到了多個模型,有的模型多達1.85億個三角面,都成功地以PLY格式輸出。





這個數目已經超出了預期,甚至有點極端。多數重構後大約有5000萬~9000萬個三角面。我一開始使用的是GeForce 980Ti顯示卡,後來換成GeForce 1080顯
示卡,為我帶來一些性能的提升。 

我還將相機換成了
4200萬像素的Sony aRII 及PlanarT*FE 50mmF1.4ZA鏡頭。然而兩倍的解析度並使用高級清晰的定焦鏡頭並沒有帶來所期待的驚艷效果。 

一方面,更長也更狹窄的定焦鏡頭意謂著需要退後幾步,才能拍攝重疊的能夠用來重建的畫面。在森林中並不總是能夠往後踏幾步拍攝,因為樹林中還有其它樹木、灌木等障礙。這還代表我們必須管理、存儲和處理原有2倍的GB等級的圖片檔案。儘管如此,還不一定能得到更精確的掃描結果。
精確的掃描來自於更多的圖片,使用2400萬像素將更容易管理。也許這聽起來很理所當然,但我也是親手嘗試後才真正理解這個狀況。


花時間盡可能地獲得更多數據將是值得的

如先前所提到我
輸出的是PLY格式的高密度幾何體。我傾向使用PLY而不是FBX,即使RealityCapture的PLY輸出沒有縮放功能和坐標軸方向控制功能,所以不像FBX,PLY格式文件總會過大、旋轉方向不對。但我選擇自己解決PLY的問題,因為我使用FBX做貼圖烘培時遇到了許多錯誤。 

多數軟體不能處理幾千萬這個數量的多邊形,所以我僅僅存儲文件,使用RealityCapture的抽取功能製作出相同模型的低模版本。得到的模型大概有100萬個三角面。這樣的模型能在Zbrush、MeshLab或其它建模軟體中打開進行重拓撲(retopologized )及展開(unwrapped)。根據不同模型,需要使用了不同的重拓撲方法。經常使用的是Zbrush的ZRemesher,有時候則手動處理。







我使用xNormal來烘焙紋理貼圖。xNormal不會受到數以百萬的三角面影響,可以輕鬆處理它們。我使用頂點顏色(vertex color)資訊來烘焙漫反射紋理。高模的頂點密度完全足夠用來製作乾淨清晰的紋理,不需要任何兩頂點間的插值。 我從未用到RealityCapture的合併展開(integrated unwrapping )及材質功能。

話雖如此,如果因為某些原因你的密度雲不夠密集,或是有區域丟失,如下圖所示,從照片投射紋理可以給這些區域帶來更多細節。


有時候,總會有些區域是人到不了的

多數攝影製圖教學會告訴我們在掃描一個物體時,最好能避免直接刺眼的光照和陰影。如果你要捕獲的是塊小石頭,你可以將它帶到陰涼處或甚至是工作室里,使用柔光箱和轉盤來方便掃描。對於樹木來說則無法這樣做,所以我會查看天氣預報,希望能遇到多雲的天氣。然而即使在陰天,仍會有陰影和環境遮蔽。

這個問題可以通過Unity的DeLighting工具解決。只需要一個法線貼圖、彎曲的法線貼圖和烘焙AO即可。它可以在消除陰影的同時保持漫反射值不變。



Unity的DeLighting工具實際使用效果

處理後的資源接著輸入Unity中,測試動態光照和著色器。








有時候我們不一定能採集到模型的所有部分,也不一定能得到所有角度的畫面。也許會遇到時間不夠或是電量即將耗盡這樣的情況,或是忽略了一些東西,直到回到家開始處理檔案時才發現。我在這個過程中犯了很多這樣的錯誤,但我通過使用Substance Painter來克隆印章工具( clone stamp)試圖修復丟失的數據,挽救了一些作品。






實際遊戲資源

《死者之書》製作的大部分期間是沒有環境美術員工的,部分工作承包給了環境藝術家Tihomir Nyagolov,他對環境進行了初期探索及測試。但主要工作是由創意藝術總監Veselin Efremov和我負責,
我們在附近的森林中採集攝影製圖數據,這些工作自然地轉為最終遊戲資源上來。我沒有環境藝術的背景,對處理遊戲優化、LOD等都毫無經驗。Tihomir Nyagolov使用GrowFx預先創建了一些暫代替換用的樹木,所以我從這裡開始接手工作並從中學習。 

GrowFX做
為創建多種植被的工具是十分強大而功能全面的。它能夠與場景中的其它物件進行互動,所以能夠實現各種獨特而自然的效果。建構時這些物件並不是以資源的形式產生,但也已足夠可控並且足以勝任此項任務。 GrowFX是一個3DS MAX的插件,我做為3DS MAX使用者已經二十多年了,使用起來感到非常的自在。不幸的是,GrowFX依賴MAX中某些過時的組件(component),像是曲線編輯視窗( curves editing dialogs)這類並不是十分方便的功能,但目前來說它對於此項任務來說仍然是個好工具,只能接受這些問題。


《死者之書》中的樹林主要是由針葉樹組成,我家附近正好有些美麗的樹林跟公園,於是我尋找並掃描了一些樹木,然後將GrowFX創作縫合到掃描模型上。最後的樹幹由掃描的模型和獨特的紋理組成,較低部分縫合到了程序化生成樹幹,一直到頂部的剩餘部分則使用可平鋪的(tileable)紋理貼圖。


底部的一小部分被克隆到紋理頂部,使之變成可平鋪紋理

對石塊和樹幹進行攝影製圖是一回事,但掃描松樹的針葉完全又是另一回事了。在這裡便由Quixel介入,Quixel提供了精美的掃描圖集。Quixel的工作人員與我們合作,為《死者之書》製作了大量小型資源,例如:草地、灌木和破瓦殘礫等等。


如我在開頭提到的我擁有CG製作的背景,我曾製作過大型的森林,使用的是Multiscatter或Forest Pack Pro
(同樣是MAX的插件)以及用V-ray做渲染。在那些案例中我們可以使用Quixel 的Megascans圖集,但對於《死者之書》這樣的即時運算專案來說,我們需要多做一些優化。需要優化的內容包括構建大型元素,例如:樹枝、樹頂等等,將這些元素整理成新的紋理,為法線貼圖(normal)、位移(displacement)、透射(transmission)等等轉換初始掃描數據。 





對已有的Megascans法線資料略有修改,偽造出具有體積感的外觀。





我使用不同的法線編輯技術,例如:Normal Thief 和其它自訂3DSMax腳本,用來將樹枝與樹幹混合起來。



修改頂點法線,使之能夠與樹幹混合

通過使用這個方法可以製作不同類型的針葉樹。







我們想要森林富有生氣,而風是一個關鍵元素。我們的環境藝術家Julien Heijmans設計了以頂點著色器為基礎的風動畫方案,樹林是基於這個方案去設置。

創建一個向量場(vector field )有很多不同的方法。在熟悉了Chaosgroup流體處理器和PhoenixFD之後,我決定看看能從中得到哪些可以用的資訊並輸入Unity。我輸出了場景幾何體,以FBX格式放進3DS MAX中執行一些流體效果,流體在植被周圍打轉然後產生了亂流。較大樹木會擋住小型植被,所以效果在這裡不會那麼突出。




PhoenixFD流速通道的一些片段

我使用集成的PhoenixFD回放控制,讓模擬的序列進行
循環

向量資訊通過PhoenixFD Texmap讀取,標準化處理後作為漫反射紋理插入程序化產生的等值曲面(isosurface)。


向量資訊經由PhoenixFD Texmap讀取,標準化處理後作為漫反射紋理插入


一個
水平片段模擬效果範例 

渲染圖像序列將組合成最後的紋理圖集後輸入到Unity中。我過去使用After Effects完成這個工作,但現在Unity擁有一個十分方便的Image Sequencer工具,它能自動完成這個工作。這是由Unity在巴黎的GFX團隊開發的全新VFX工具。


Image Sequencer的實際使用效果

創造出的紋理圖集會放到場景中,我製作了一個小方框用來定義模擬效果的邊界,並用來作為位置的參照(reference)。

這個實驗推動了預告片中一些鏡頭的視覺效果。如果你正使用Unity製作影視作品,我推薦使用這個方法。它會插入主程序的頂點著色器基礎的風動畫方案之中,這個方案是由我們技術主管Torbjorn Laedre開發,它用在預告片中的多個場景中,也有在GDC上展示的主機版本中使用。


後續文章中,Julien和Torbjorn將分享更多關於處理風和最後採用的解決方案。


Unity中的向量場


蜂巢

專案早期我開始對蜂巢的概念進行定調。




使用MultiScatter製作並用V-Ray渲染的概念驗證

在完成最初的設計後,開始建造大量可以在遊戲用的元素使 Unity資源。




使用pflow為蜂巢創建了一些群集




在Unity中組成的早期蜂巢原型

扭奇者(
Screwie)

對於扭奇者群體,我對軀體的變化進行了一些探索。我使用了Chaosgroup的PhoenixFD 進行了流體煙霧模擬。然後切開扭奇者形狀,並基於流體溫度創造了一個等值曲面。





使用PhoenixFD製作的一些形狀探索

這個方法可以快速預覽不同的形狀,做為常規的參考。 扭奇者最後版本的模型是由Plamen (Paco) Tamnev製作,想了解其中驚人的細節可以去看這篇文章

樹液流淌的效果

為了讓扭奇者面部的樹液能夠流動,我再度使用了PhoenixFD。我製作了一個小概念驗證,證明能通過粘稠液體所能實現的效果。


驗證PhoenixFD的翻動處理器能適用於製作液體流動效果

我對整體結果和流體動畫感到滿意,所以繼續對實際模型進行設定。我的目標是防止模擬效果形成太多分離部分。



不同版本的一些樹液流動模擬

我可以得到產生的幾何序列其中一幀,然後對它進行重拓撲,製作UV並使用WRAP3來將其投射到序列中剩下的形狀。最後我得到了一系列使用相同拓撲的blend shapes。


Unity中的Blendshapes

我也嘗試在一些樹幹上運行樹液模擬效果。




我們沒有在最終專案中使用這些效果。然而這是個不錯的方法,可以用來為掃描模型添加一些細節。


小結

《死者之書》中攝影製圖資源、樹木以及VFX的創作過程就分享到這裡,後續我們將深入瞭解《死者之書》中的環境藝術創作過程,盡請關注!

沒有留言:

張貼留言

著作人