2015年11月12日 星期四

淺談THE BLACKSMITH製作流程:場景搭建、著色和光照


作者:SILVIA RASHEVA 原文連結

在本系列之前的文章中,我們介紹了The Blacksmith的創作團隊,與短片美感的製作流程。

由於打算用Unity5來開發這個專案,所以我們必須把更多的注意力轉移到技術問題上,在這篇文章中,我們將著重場景建設、著色和照明。

引擎版本和內部測試


The Blacksmith在很早版本的Unity alpha和 beta版本中進行開發,並在Unity 5.0.b22中最終穩定下來,並發佈。整個專案也跟著升級到了發佈時的Unity版本。

要知道使用一個研發中的引擎代表著會有許多不穩定因素,導致產品製作效率低下。所以我們每周都要面對兩難題,到底是要升級新版本更新?還是跳過一個版本避免打斷團隊現有的工作步調

此外,The Blacksmith中的動畫和鏡頭序列是基於Director系統的。它是Unity故事工具的一部分,而Unity故事工具在當時仍處在發展的早期階段(它的發佈日期迄今也沒有公佈)。

我們在專案進行到差不多一半時,為了添加故事工具功能,每次的Unity更新我們都得重新把系統集成到新版本。一直持續到我們最終發佈為止。

因為我們是Unity的內容製作團隊,我們會提出bug或功能需求給核心團隊,然後祈禱他們能快點搞定XD。假如他們搞不定,那我們就只好自己想辦法了:-(

事實上,我們提出的反饋會和廣大Unity用戶的需求放在一起被權衡,通常不會得到任何優先待遇。

場景搭建

在The Blacksmith的製片初期,我們便在Unity中利用白模搭建了一個場景。


我們從Asset Store找來了一些素材,比如Quantum Theory的Better Rocks and Cliffs,非常有助於原型的設計,同時這也能夠盡早開始視覺相關的開發工作。我們
很快做出了細節豐富的場景:


根據我們的故事情節,我們在前期製作過程中需要做的是,利用一組相機進行迭代,緩緩地接近所要拍攝的景象。在此基礎上,我們需要劃分好每一個鏡頭都需要的哪些資源。同時,角色的3D美術設計也正式開工。

對我們來說,盡可能地保留對每一個鏡頭中的藝術把控能力對我們而言非常重要。因此,我們基於Unity編輯器專門擴展了一個場景管理器,然後用它為每個鏡頭中的對象分組。

我們用它來啓用或禁用某些物件,或更改它們的屬性-地點,規模,材料等等-來求得一個特定的鏡頭,以獲得更好的構圖。同樣地,每一個鏡頭都可以擁有自己特定的光照設置,也多虧了實時全局光照系統,我們可以對鏡頭切換之間的光照做出即時改變。


著色


Unity基於物理的著色器使用和配置起來都相當容易上手。

我們對它的運用可謂貫穿了整個專案。這個專案中,我們並不打算開發一個專門的皮膚著色器,於是我們就直接採用了Standard Shader標準著色器:
挑戰者 - 從編輯器抓下來的圖

Unity 5中標準著色器最大的優勢之一就是:我們可以根據專案需求隨心所欲地擴展和修改它,因為它就是為此而生的。

標準著色器的源碼可以從這兒下載:http://unity3d.com/get-unity/download/archive(在對應平台的「下載」下拉選單中選擇「Built in Shaders」)。

有了源碼後,在此基礎上開發具有專案針對性的著色器是非常容易的,我們在The Blacksmith中做了很多這樣的工作。我們下面就來分享一些例子。

我們修改了標準著色器,使之能夠感知到我們已經在專案中添加的自定義著色器。我們對這種修改進行了兩個不同版本的運用:一個用在環境上(例如:讓它感知到我們的大氣散射)另一個更複雜一些的用在角色上(用來感知我們獨特的角色陰影和皺紋貼圖)。後者的界面用滑塊對鏡面貼圖選項做了小小的增強。




為了讓維京挑戰者的面部更加生動、擁有更多的細節,我們決定開發一個感知形狀融合的皺紋貼圖解決方案。基於判斷最為突出的形狀融合,我們在一個屏幕空間的預渲染通道內混合運算了法線和遮蔽紋理。

然後直接從這個屏幕空間將經過採樣和解包的法線和遮蔽數據輸入到一個標準的著色器變量中,從而取代了常規的材質。




標準著色器非常適用於絕大多數現實世界中存在的材質,可惜的是不包含頭髮。雖然頭髮的渲染從來都不是The Blacksmith的著重點,我們依然希望能做出各向異性的頭髮高亮,並使它們能正確地整合其他材質所用的物理的環境。
為了實現這一點,我們修改了一個標準著色器,使其在採用了一個不同的反射率分布模型的同時,保留了反射和光照探測的採樣。

頭髮著色器 - 一樣是從編輯器直接抓圖


我們希望鏡頭中有一些柔軟的植物,同時探索出在場景中繪制不同植物的簡單方法。這裡的解決方案是對Unity內置的植被功能分兩個階段進行擴展。

一個叫做PaintJob的小工具能生成一個臨時地形自動打包場景中的靜態幾何物件。加上一個簡單的打包規則控制,這使我們能夠圍繞地形和建築在地面網格上繪制植物地形。


渲染時,我們再將繪制好的數據放到一個自定義組件當中,這個組件專門用來處理視野依賴的排序、動態全局光照的採樣,管理遮擋關係和LOD層次。



光照

我們採用分層的方式來分離照明人物和環境,並為每個光源分別配置了各自的剔除遮罩。這樣一來,我們對人物和環境都有了更好的控制。這種方法常被運用在電影拍攝,會根據角色呈現的位置而設置特定的光照條件。

為了改進角色的外觀,我們使用了額外的局部光照來柔化他們面部的陰影部分(暗部)。




因為角色形象的呈現可謂是全片的重中之重,在DEMO中,我們有大量的特寫鏡頭,必須確保這些角色能夠以很高的分辨率接受陰影。為此,我們增加了一個獨立的陰影紋理,專門用來處理角色的陰影。




在鐵匠鋪中的光照被設定為是從牆壁和屋頂的鏤洞中透射進來的。這種效果是通過把一張恰當的圖案當成光打在場景來實現的。



對於海洋和海灘的淺窪,我們想要表現物體穿入水面的尖銳感表現,當其距離越深時所具有的散射效果就越強。

我們最終打造出了類似於水面反射的功能,採用了一個的深度感知的計算方式,來計算出一個變數給surface smoothness。最後輸出結果放入到一個標準的著色器,然後再用我們定制的反射紋理來替換反射的Cubemap(方塊貼圖)。




在The Blacksmith創作系列的下一篇文章中,我們將繼續探討DEMO團隊所做的一些接後期處理,包括動畫和音頻和視頻的製作方式。
所以欲知後事如何,請持續關心我們的The Blacksmith專案文章分享!

沒有留言:

張貼留言

關於我自己

我的相片
Unity台灣官方部落格 請上Facebook搜尋Unity Taiwan取得Unity中文的最新資訊