揭秘《Sherman》:使用Unity制作影視級光照效果

來源:Unity官方平臺
作者:Unity
時間:2019-11-26
2935
現(xiàn)今影視動畫行業(yè),正在進行著重大變革-實時制作的興起。實時動畫現(xiàn)在不僅僅是一個渲染解決方案,它還革新了整個創(chuàng)作流程。

Unity媒體與娛樂創(chuàng)新團隊的光照主管Jean-Philippe Leroux參與制作了一些優(yōu)秀影視動畫項目,包括:《ADAM 2》和《ADAM 3》,以及《大白的夢》。

1.jpg

現(xiàn)今影視動畫行業(yè),正在進行著重大變革-實時制作的興起。實時動畫現(xiàn)在不僅僅是一個渲染解決方案,它還革新了整個創(chuàng)作流程。

實時創(chuàng)作引擎最初是用于游戲開發(fā)的工具,隨著畫面質(zhì)量的提高和技術(shù)的不斷成熟,如今實時創(chuàng)作引擎已經(jīng)能夠作為創(chuàng)作工具,制作影視級的內(nèi)容。

那么實時渲染與離線渲染有什么不同呢?我們是如何把大型渲染農(nóng)場上數(shù)小時的處理過程,轉(zhuǎn)變?yōu)樵趲酌雰?nèi)實現(xiàn)的即時反饋和4K畫質(zhì)結(jié)果呢?這里沒有使用任何魔法,而是許多簡化操作、近似處理、優(yōu)化過程和小技巧結(jié)合起來的結(jié)果。

我們制作的實時渲染動畫短片《Sherman》的目標之一:展示HDRP制作高級實時渲染效果的能力。

本文,Jean-Philippe Leroux將重點介紹如何在Unity實現(xiàn)《Sherman》的實時光照解決方案,并提供實用的建議與技巧。不論你是3D動畫專家還是傳統(tǒng)光照藝術(shù)家,本文都將提供需要的工具,幫助你在Unity中為實時內(nèi)容創(chuàng)建豐富而細膩的光照效果。

解析《Sherman》

在下圖的畫面中,光照部分進行了很多處理,我們將詳細講解所有元素是如何結(jié)合起來的。在這個鏡頭中,我們可以梳理出幾乎所有Unity光照效果方面的知識,以便你在自己的項目中活學活用。

2.jpg

我們可以把實現(xiàn)該畫面的光照效果分為四類,然后分別介紹如何控制這些光照類型。

3.jpg

掌控環(huán)境光照

如下圖所示,展現(xiàn)了間接漫反射光照即全局光照對畫面的影響。

4.jpg

首先,我們定義場景的環(huán)境光照。在《Sherman》中,環(huán)境光照并不是簡單地使用一個環(huán)境光來模擬光線散射,而是利用了Unity漸進式光照貼圖,將全局光照的結(jié)果烘焙到光照貼圖中,制作出局部的環(huán)境光照。

5.jpg

光照貼圖

我們的項目使用了多場景設(shè)置,所有靜態(tài)場景元素保存在episode_set場景游戲?qū)ο蟆?/span>

6.jpg

場景光照元素保存在Unity的活動場景episode_set_lighting中。這點非常重要,因為活動場景決定生成的光照數(shù)據(jù)保存在什么位置。

了解多場景工作流程:

https://docs.unity3d.com/Manual/MultiSceneEditing.html

我們不需要使用001_timeline場景來構(gòu)建場景光照,因此在制作過程中,我們會卸載該場景。如果仔細觀察,我們可以看到名稱為ToHide的部分,其中包含一個攝像機和一個太陽定向光的實例。

一些后期處理效果對光照很重要,例如:色調(diào)映射和環(huán)境遮蔽,但我們需要攝像機來呈現(xiàn)這些效果。在給場景添加光照時,我們使用一個臨時的攝像機,而在項目完全加載后,應(yīng)該只會留下一個攝像機。當烘焙完成后,ToHide調(diào)試攝像機和光照會被再次隱藏起來。

對于光照貼圖中的任何對象來說,相應(yīng)的UV不應(yīng)該發(fā)生重疊,每個表面都需要有特定的UV。大部分情況下,我們可以在導入時讓Unity自動生成光照貼圖UV。

了解更多UV內(nèi)容:

https://docs.unity3d.com/Manual/LightingGiUvs-GeneratingLightmappingUVs.html

對于復(fù)雜的有機對象,最好讓美術(shù)使用數(shù)字內(nèi)容創(chuàng)作DCC軟件來制作UV2。如果想要在光照貼圖中不連續(xù)的邊緣上,實現(xiàn)更加平滑的結(jié)果,拼接縫隙是一個簡單的方法。

下圖為Unity Lighting設(shè)置面板。

7.jpg

我們來看看Lighting光照標簽頁,了解制作《Sherman》場景的光照設(shè)置:

首先,我們在CPU漸進式光照貼圖中使用了Mixed Lighting Bake Indirect。由于HDRP不支持Realtime Global Illumination(實時全局光照),因此我們沒有使用該功能。

每次發(fā)布新版本的Unity時,GPU Lightmapper都有很大的改進,但在制作《Sherman》時,它仍缺少我們需要的關(guān)鍵功能。

我不喜歡使用Shadowmask模式,該模式會將陰影和大部分光照烘焙到光照貼圖中,以進行動畫制作。

通過使用Bake Indirect,光照計算會非常簡單,但分辨率較低,這意味著烘焙時間更短,而且我們可以靈活地矯正每個鏡頭的光照方向。

Direct Samples設(shè)置和所選模式?jīng)]有任何關(guān)系,因為我們沒有烘焙任何直接光照,因此可以無視該設(shè)置。

一開始可以將Indirect Sample的數(shù)值設(shè)置得小一點,例如:250左右,在確定場景設(shè)置后,我們可以提高該數(shù)值。

對于Bounces設(shè)置,一般設(shè)為2就夠了,但如果是室內(nèi)場景,我建議設(shè)為4。

在設(shè)置Lightmap Resolution時,可以先設(shè)置較小的數(shù)值,隨后逐漸增大。在此場景中,我們最后選擇的分辨率為10,因此每平方米有100個紋素。

請注意:在光照和物理方面的設(shè)置中,我們要把1個Unity單位等價于真實環(huán)境中的1米。

在場景中,了解和利用網(wǎng)格的Scale In Lightmap參數(shù)非常重要。如果小型對象的三角面太小,無法覆蓋多個光照貼圖紋素,我們可以提高Scale In Lightmap值,對于遠處的較大對象,我們可以減小該值。我們可以啟用Baked Lightmap視圖和Show Lightmap Resolution選項,輕松預(yù)覽光照貼圖的分辨率。

并非所有對象都適合添加光照貼圖。我們不應(yīng)該為光照貼圖標記多個表面的復(fù)雜對象,或是對全局光照影響不大的小型對象,例如:草、樹葉、小石子或碎片,否則渲染光照貼圖耗費的性能開銷會很大。為此,我們可以禁用Lightmap Static。

部分大型靜態(tài)對象也不適合使用光照貼圖,例如:短片中的籬笆,但我們?nèi)韵M鼈兡軌蛴绊懝庹战鉀Q方案。

為了讓對象對光照產(chǎn)生影響的同時,不必為其制作光照貼圖,我們在此使用了一個技巧:把該對象的Scale In Lightmap值設(shè)為0。例如:在籬笆的邊緣部分,我們可以清楚看到籬笆對光線的遮蔽效果,即使籬笆沒有制作光照貼圖。

下圖中展示了場景視圖設(shè)置,以及籬笆區(qū)域光照貼圖的近距離效果。

8.jpg

在其它部分使用光照探針

在設(shè)置好環(huán)境光照和光照貼圖后,光照探針組將照亮剩余的小型動態(tài)對象。在《Sherman》中,我們創(chuàng)建了一組間距為1米的光照探針組。

9.jpg

通過巧妙使用光照探針代理體積,草坪等大型對象會從更為精細的探針光照中受益。通過這種方法,對象會被局部探針采樣照亮,而不是被單個探針照亮。

下圖中為在大型對象上使用光照探針代理體積的效果。我們可以看見,被不同探針照亮的草地會被分為大塊的區(qū)域。

10.gif

小提示:在多場景設(shè)置中,只有來自最近加載場景的光照探針會在光照中考慮。

環(huán)境遮蔽

現(xiàn)在我們已經(jīng)了解如何產(chǎn)生精美的局部環(huán)境光照,那么要如何才能避免環(huán)境光照填補不應(yīng)該影響的區(qū)域光,并讓對象接觸到地面呢?

首先,我們需要使用常用的DCC工具,為部分對象生成環(huán)境遮蔽貼圖,例如:狗窩內(nèi)部和浣熊的嘴巴。

11.jpg

然后,我們使用屏幕空間環(huán)境遮蔽(SSAO)后期處理效果來將元素結(jié)合在一起。我們會在之后的后期處理部分進行詳細介紹。

12.jpg

規(guī)劃反射效果

如下圖所示,左側(cè)畫面為使用間接鏡面反射光照的部分,右側(cè)畫面為結(jié)合環(huán)境反射和烘焙反射的效果。

13.jpg

在實時環(huán)境中,間接鏡面光照即反射效果是一系列技術(shù)結(jié)合的成果。這些技術(shù)包括:

  • 實時平面反射

  • 實時反射探針

  • 小型烘焙反射探針

  • 大型反射探針:較小探針體積的優(yōu)先級比較大探針體積更高

  • 天空

  • 平面反射效果示例

下圖展示了平面反射的效果。

14.gif

反射效果分辨率和緩存大小都通過HDRenderPipelineAsset資源來管理。平面反射就跟鏡子一樣,這類反射非常適合平坦表面,但也能夠用于較復(fù)雜的情況,例如:影片中浣熊和膨脹的水管表面上的反射。但須小心使用這類效果,因為它們會使用較多內(nèi)存。

15.gif

實時反射探針也可以用于展示光源上反射和遮蔽部分的重要細節(jié)。在影片中,我們使用了一個小的實時球型探針來包住食盆,在上面反射出即將爆炸的水管。

我們需要使用烘焙反射光照探針來覆蓋場景。我們應(yīng)該利用大小探針的不同優(yōu)先級,投射體積的視差矯正和高級混合模式。一個不錯的方法是:將光照捕捉點放在攝像機工作的平均高度上。

如果仔細觀察,我們會發(fā)現(xiàn)部分反射探針專門用于陰影區(qū)域。這些探針用來消除來自天空的定向光產(chǎn)生的多余鏡面反射效果。

16.jpg

使用Timeline

對于所有基于動畫的內(nèi)容而言,Timeline是實用的序列工具和管理中心。在Timeline上,我們可以為大部分對象添加動畫,而在制作每個鏡頭的光照時,我們使用的是Activation Track激活軌道。

相對于在各個鏡頭調(diào)整光照綁定的每個組件,我認為管理特定鏡頭的分組會更加簡單。下圖展示了跟隨攝像機變換的光照分組激活軌道。

17.jpg

下面是使用Timeline的一些小技巧:

  • 如果希望在Timeline上為某個對象添加動畫,對象一定要和Timeline本身在同一個場景。在《Sherman》中,Timeline所在的場景為001_timeline場景。當重新打開項目或進入運行模式時,指向其它場景的鏈接都會丟失。

  • 禁用Post-playback狀態(tài),否則在進行渲染時,場景會保留播放后的光照綁定。

  • 在修改鏡頭編輯內(nèi)容或時間設(shè)置時,可以將動畫軌道轉(zhuǎn)換為剪輯軌道,方便重新安排動畫。

  • 了解更多關(guān)于激活軌道的信息:https://docs.unity3d.com/Manual/TimelineActivationTrackProperties.html

使用預(yù)制件

預(yù)制件非常適合對需要多次重復(fù)使用的對象進行分組,我們可以使用預(yù)制件修改分組的組成內(nèi)容,所有對應(yīng)實例會自動發(fā)生相應(yīng)變化。

在預(yù)制件實例上,我們可以選擇性撤銷任何改動,也可以將實例恢復(fù)原始預(yù)制件的樣子,即時應(yīng)用預(yù)制件的改動。此外,預(yù)制件系統(tǒng)也提供框架,實現(xiàn)無縫派生的工作流程,不僅可以調(diào)整實例,也可以快速創(chuàng)建和驗證變體。

從Unity 2018.2版本開始,Unity支持預(yù)制件嵌套功能,該功能非常適用于光照綁定的快速迭代。

下圖展示了第一個動畫的光照預(yù)制件結(jié)構(gòu),我們可以從中看到激活軌道上每個鏡頭的結(jié)構(gòu)。由于只展示當前鏡頭中存在的光照對象,因此其它對象都暫時被隱藏起來。

18.jpg

在場景層級窗口的光照部分中,我們可以看到:

  • 場景設(shè)置的重寫對象

  • 在鏡頭中嚴格用于構(gòu)成陰影的對象

  • 控制大氣效果的密度體積

  • 食盆的實時反射探針

  • 太陽光、補光與邊緣光等其它預(yù)制件

使用預(yù)制件系統(tǒng)還有另一個好處:當對象在場景中實例化后,在處理光照時,不必在版本控制工具中反復(fù)檢查場景。這意味著,團隊的其他成員也能夠在場景中進行制作。

需要注意的是:預(yù)制件上的部分屬性無法派生變化,需要使用自定義實例來實現(xiàn)變化,相關(guān)情況包括:體積配置文件、后期處理配置文件和Timeline等可編程對象。

添加太陽光

每個鏡頭分組都有一個太陽的實例,我們可以在每個鏡頭進行太陽朝向的微調(diào)。如下圖所示,我們還使用了樹木的裁剪貼圖,來制作有趣的陰影效果。

19.jpg

高質(zhì)量陰影

通過進行正向渲染,HDRP為我們提供了百分比近距離柔和陰影(PCSS),它可以模擬光線照射在對象上產(chǎn)生的半陰影。

20.gif

在實時環(huán)境下,光線沒有使用光線追蹤功能,我們使用陰影貼圖來產(chǎn)生陰影。陰影會耗費一定的性能,而且每個光線都需要啟用陰影。

HDRP的陰影圖集系統(tǒng)讓我們可以使用大量能夠投射陰影的光線。在《Sherman》中,我們盡可能使用了最大的陰影圖集。雖然較大的陰影圖集能夠極大地提升畫質(zhì),但由于所含的信息更多,因此計算時間也更長,

如果陰影圖集的信息變得飽和,該系統(tǒng)會動態(tài)地調(diào)整陰影大小。陰影分辨率會根據(jù)光線來定義。在我們的設(shè)置中,精準光源的分辨率設(shè)為1024,而定向光分辨率設(shè)為4x2048。注意:為了表示立方體,點光源的分辨率設(shè)為6x1024,因此它們非常消耗性能。

定向光陰影可以使用級聯(lián)陰影貼圖CSM技術(shù)來優(yōu)化。為了獲得最佳質(zhì)量,我們需要通過使用HD Shadow Settings組件的重寫,來調(diào)整每個鏡頭的級聯(lián)陰影分布。

我們也需要在Cinemachine的虛擬攝像機鏡頭設(shè)置中,調(diào)整近距離剪裁平面。這樣可以向前推動第一個級聯(lián)陰影,這步隨著當前鏡頭的時長增加,會顯得越來越重要。

使用體積(Volume)

在HDRP中,許多渲染和后期處理的屬性都使用帶有相關(guān)“配置文件”的體積來控制。在Unity 2019.1中,這兩類屬性被結(jié)合到相同的體積組件中,根據(jù)類別進行管理。

根據(jù)當前攝像機的位置,配置文件的數(shù)值會進行插值調(diào)整,如果攝像機不在任何體積中,那么這些屬性會使用全局配置文件。每個體積都有優(yōu)先級與權(quán)重值,配置文件的數(shù)值不能動態(tài)調(diào)整,但是優(yōu)先級和權(quán)重值可以動態(tài)調(diào)整。

如下圖所示,我們使用優(yōu)先級與權(quán)重值這兩個屬性來制作浣熊的觸電動畫。

21.gif

光照圖層

在Unity中,我們可以將對象指定到特定光照圖層上。如下圖所示,我們手動為浣熊的眼睛加入眼神光,讓其看起來更鮮活有趣。

22.gif

我們還可以使用該功能管理不合適的鏡面高光,這些鏡面高光來自本應(yīng)用于補光和邊緣光的精準光源。我們通過使用該功能,避免精準光源影響水面效果。

控制直接鏡面光照

HDRP有一個非常有趣的光照功能:可以調(diào)整光線的最大柔和度(Max Smoothness),該功能可用于模擬鏡面光源特定大小的色散效果。

23.gif

我們還能夠?qū)⒐庹赵O(shè)定為影響鏡面光(Affect Specular)或影響漫反射(Affect Diffuse),并在場景內(nèi)容中測試這些設(shè)置的效果。

體積光照

在場景中實現(xiàn)深度感時,大氣效果是我們的重要工具。HDRP高質(zhì)量體積光在HDRP設(shè)置中定義,它提供了穩(wěn)定可靠的解決方案,我們可以使用體積光照控制器(Volumetric Lighting Controller),來最大化效果的質(zhì)量。

在《Sherman》中,為了實現(xiàn)最佳局部效果,我們使用了密度體積,逐個鏡頭進行放置,從而實現(xiàn)對這些外觀的完整控制。

24.jpg

編輯器內(nèi)顏色分級和攝像機效果

顏色分級效果在任何制片過程中都是必不可少的部分。我們可以使用該效果在Unity實現(xiàn)出色的結(jié)果。自從Unity 2019.1開始,后期處理效果已經(jīng)完全集成到HDRP中。

下圖展示了《Sherman》使用顏色分級(Color Grading)效果的前后對比。

25.gif

本文,我將以《Sherman》的工作流程為基礎(chǔ)進行介紹,在《Sherman》中,我們使用的是Post-Processing Stack V2。

請注意:Post-Processing Stack V2和Unity 2019.1中HDRP的Post-Processing Stack V3互不兼容。雖然有部分功能發(fā)生了改變,但基礎(chǔ)概念還是一樣的。

后期處理效果在體積上使用,我們可以在光照場景的主要體積上定義顏色分級、環(huán)境遮蔽、膠片顆粒和影視級動態(tài)模糊效果。這些設(shè)置可能會被部分Timeline上擁有更高優(yōu)先級的體積所覆蓋。

我們也可以使用CinemachinePostProcessing擴展,為每個針對Cinemachine虛擬攝像機創(chuàng)建的自定義配置文件,定義所有攝像機相關(guān)效果,包括:泛光、景深和暈影。在某些情況下,因為當時Unity 2018.4還沒有預(yù)曝光處理功能,所以我們也使用了后期曝光重寫功能。

色調(diào)映射

由于整個渲染過程發(fā)生在HDR線性空間中,設(shè)定顏色輸出非常重要?!禨herman》項目一開始就決定使用ACES(學院色彩編碼系統(tǒng))輸出,ACES色調(diào)映射提供高對比度的圖像,帶有非常強烈的暗色調(diào)。

為了獲得色彩鮮亮的調(diào)色板,我們需要調(diào)整伽馬值。使用這種色調(diào)映射風格的大多數(shù)游戲也會進行同樣的調(diào)整。

軌跡球

我們的新Trackballs軌跡球工具,非常受人喜愛。對專業(yè)人員來說,軌跡球是非常熟悉的工具,它們易于操控。

下圖為顏色分級設(shè)置中的Trackballs軌跡球控制面板。

26.jpg

顏色分級曲線

雖然每次只能展示一條曲線,但我們可以使用許多顏色分級曲線。我們使用了Hue vs Sat、Sat vs Sat和Lum vs Sat三種曲線。

我們給主攝像機添加了Post Process Debug組件,我們可以在該組件上,啟用波形監(jiān)視器和顏色直方圖。波形監(jiān)視器是非常強大的工具,適合分析黑色與白色部分的適宜程度。

27.jpg

環(huán)境遮蔽

上文已經(jīng)提到過環(huán)境遮蔽,這里我們會詳細介紹部分設(shè)置。

在《Sherman》中,Intensity光照強度被設(shè)為0.75,而在部分鏡頭中,我們會減小該值,以減少大多出現(xiàn)在樹葉部分的噪聲圖案。

我們沒有使用任何不基于物理的渲染(PBR)選項,例如:Color顏色或Direct Lighting Strength直接光照強度。環(huán)境遮蔽效果取決于分辨率,因此我們需要調(diào)整該效果,來適應(yīng)預(yù)期的輸出分辨率。

景深效果

景深DOF不只是快速鏡頭的額外效果,它也是在敘事中轉(zhuǎn)移焦點的重要工具。圖像會快速變化,因此我們需要小心處理觀眾的注意力。

Cinemachine有非常實用的跟蹤焦點功能。新版本后期處理工具已經(jīng)完全重寫,不再取決于分辨率。

在Unity 2018中,Visual Effect Graph還沒有透明度渲染隊列功能。因此在《Sherman》包含水面效果的部分鏡頭中,我們必須避免出現(xiàn)較淺的景深效果。

好消息是,Unity 2019.2的Visual Effect Graph加入了透明度渲染隊列功能。

暈影

暈影會模仿真實鏡頭拍攝時產(chǎn)生的瑕疵,呈現(xiàn)鏡頭畫面邊角部分的光線丟失效果。為了實現(xiàn)逼真的感覺,該效果應(yīng)該總是偏圓形的。

請注意:暈影是非常強大的效果,但也容易被過度使用,請注意謹慎使用。

泛光

泛光是一種美觀的瑕疵效果,它是由攝像機傳感器和骯臟鏡頭漏出的強光產(chǎn)生的。我們可以在Unity模擬該效果,但也要記得合理使用。

結(jié)語

動畫的光照很復(fù)雜,而且難以掌控。本文,我們針對傳統(tǒng)光照藝術(shù)家講解了在實時渲染影片中添加光照的所有知識。希望你能夠喜歡本文,并主動嘗試文中介紹的一些技巧。

我們已經(jīng)回不到過去傳統(tǒng)光照制作的“美好時光”了,實時動畫制作正在革新創(chuàng)作方法,開啟了新的可能性。由于有更多嘗試和實驗的空間,我們不必承擔相應(yīng)后果,因此可以創(chuàng)作更多優(yōu)秀的作品。

立即登錄,閱讀全文
原文鏈接:點擊前往 >
文章來源:Unity官方平臺
版權(quán)說明:本文內(nèi)容來自于Unity官方平臺,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼關(guān)注
獲取更多出海資訊的相關(guān)信息
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家