如何設定Unity高清渲染管線製作高階視覺化內容

遊資網發表於2020-02-06
先前在2019年9月的Unite哥本哈根大會上,Unity與雷克薩斯及其代理團隊Team One展開合作,使用高清渲染管線(HDRP)展示了一款實時車型配置器,展現了Unity作為一種自帶實景攝像機控制的寫實影像製作工具所表現出的能力。

Unity位於英國的Spotlight團隊在此專案中的主要職責是確保環境和光照的品質,讓汽車能更真實地展現在最佳的光照下。

在本文中,我們將詳細解釋根據此類汽車場景如何設定HDRP,以及在Unity製作中,如何通過矯正光照和攝像機設定來實現既高清又精美的高階視覺化內容。

軟體和資料

這個展示專案使用Unity 2019.3早期版本和HDRP 7.1.x製作。汽車材質來自於Unity擴充套件庫中的Measured Materials,該庫提供了具有金屬質感的逼真車輛塗漆著色器,而在環境中使用的是標準的HDRP Lit著色器。請注意:在本演示專案中,並沒有使用HDRP的光線追蹤功能,因為製作時該功能仍處於早期預覽階段。

專案中的精細車輛模型是由製造商提供的。而環境中高質量的阿美琳堡宮則是由外包商elite3d使用諸如Maya(主要用於資源匯出)、3ds Max(硬表面建模)、Zbrush(在Domeble提供的掃描資料基礎上進行雕刻)、Substance工具組(製作、繪製材質)和Marmoset Toolbag(烘焙)製作而成。最後,Unity的Spotlight團隊為環境製作光效,為上百個汽車部件新增材質,優化影象品質。

和大多數其他車型配置器不同,我們的環境不是靜態的天穹或背景板,而是建模出的完整3D庭院。車輛可以被放置在任何地方,光照和一天中的時間段也能隨意更改。使用靜態HDRI的主要短板就是由於天穹和背景板中景物都是固定的,光照和景物角度也是固定的。由此產生了諸如靈活性差、光照受限等問題,且車輛物體和鏡頭視角都不能遠離最初景物攝製的地點。從下方動畫中可以看出,完全由建模而成的環境擁有更大的靈活性。

HDRP設定

若不瞭解什麼是高清渲染管線,請檢視官方說明檔案瞭解詳情。其中的Volume Framework是控制HDRP效果的主要方式。

同時強烈建議大家看看“Window→Rendering Pipeline”中的HDRP Wizard,它能自動修正HDRP上如Color Space中的錯誤設定,因為如果使用Gama顏色空間而不是Linear顏色空間,會從根本上降低影象品質。

如何設定Unity高清渲染管線製作高階視覺化內容

此外,在處理此類高配置需求場景時,本文所做的設定在高階PC以外的一般平臺會出現幀率較低的問題。因此,若想在幀率100毫秒,解析度1440p或4k解析度的情況下仍有較好的工作表現,建議使用GTX 1080 TI或者更高配置的顯示卡。

渲染設定

首先,在“Edit→Project Settings→Quality”下找到“HDRP”進行品質設定,按下圖修改設定:

如何設定Unity高清渲染管線製作高階視覺化內容

  • “R16G16B16A16”:在較大螢幕空間中展現的光照和體積霧上的漸變效果中,此類16浮點精度格式可減少不顯要的色帶產生,減少其產生的額外記憶體和頻寬耗費。此外,建議在Camera的檢視窗勾選Dithering來啟用8位抖動選項,進一步減少色帶。
  • “Forward Only”:前向渲染通常比延遲渲染的畫質要高。此外,迄今為止,前向渲染是唯一一個能快速使用更優陰影過濾技術的模式。關於陰影過濾將在下文討論。
  • “MSAA 2/4/8x”乘數:該選項會在專案中啟用多重取樣抗鋸齒功能。乘數越高,影象越清晰,效能耗費越大。


同時在能夠渲染場景的每種遊戲物件型別上,即攝像機和反射探針上,我們需要手動在Frame Settingns(幀設定)中啟用MSAA。在“Edit→Project Settings→HDRP Default Settings”的預設幀設定中,勾選“MSAA within Forward”為攝像機和各種反射新增效果。

如何設定Unity高清渲染管線製作高階視覺化內容

在處理如合金表面、車輛噴漆表面這類具有高度反光性質的材質時,在反光上應用MSAA非常必要,任何可見的鋸齒都會破壞幀的逼真寫實效果。攝像機和反射探針各自的檢視窗中使用的是不同的幀設定:比方說,我們可以為Baked Reflection Probes(烘焙反射探針)啟用MSAA,而在Realtime Reflections Probes(實時反射探針)上禁用它,以降低效能消耗,轉而使用一種更快的攝像機抗鋸齒。

如何設定Unity高清渲染管線製作高階視覺化內容

臨時性抗鋸齒(TAA)

當出現無位置資訊的鋸齒時,比如鏡面光照、紋理或透明效果中的鋸齒,MSAA將無法去除這些鋸齒,這時TAA就派上用場了。鑑於TAA與MSAA 4x或8x相比有更高的質量和更少的功耗,在部分情況下,TAA甚至可以單獨承擔攝像機的抗鋸齒。然而,由於此方法的臨時性,它依賴之前幀的資料和運動向量(Motion Vector),在處理快速運動的鏡頭和物件時,TAA可能會產生額外的重像,還會稍微柔化影象。幸而我們能在HDRP的攝像機元件中進行TAA影象銳度控制。

若想在場景檢視中也使用TAA,可在“Edit→Preferences→HD Render Pipeline→Scene View Anti-Aliasing”中勾選該功能,然後在場景檢視工具欄中啟用“Animated Materials”。

如何設定Unity高清渲染管線製作高階視覺化內容

紋理過濾

另一個需要考慮的重要因素是紋理的過濾。最佳的可行過濾效果為“各向異性過濾”,可以通過“Edit→Project Settings→Quality→Anisotropic Textures”強制應用到全域性。該功能可以確保表面與視線近乎平行,通常是地面和路面材質,在中等及更遠距離上保持較高的清晰度,同時在現代高階GPU上幾乎沒有對效能的影響。

如何設定Unity高清渲染管線製作高階視覺化內容

光照設定

在HDRP品質設定中的光照設定部分,建議啟用如下選項,以最大化光照渲染的質量,或讓工作流更加順暢。

光照層(Light Layers)

光照層(Light Layers)允許我們控制場景中的光照和反射探針所影響的物件。換句話來說,我們可以選擇性地在模型的各部分應用起不同的光照和反射效果,大幅簡化整個設定。比如,我可以使用它在輪胎和輪拱(輪胎上方的拱形)上製作出正確的反射效果,同時防止車主體產生不必要的黑色反射。步驟如下:

1、在每個輪內側擋泥板下放置一個反射探針,調整volume控制其會影響的空間。

2、在探針的檢視窗中,將四個探針指定到“Light Layer 1”。

3、將“Light Layer 1”新增到影響車輪和內測擋泥板的列表中。

如何設定Unity高清渲染管線製作高階視覺化內容

成果:車輪和內側擋泥板現在正確接收到了更暗的反射效果,而車輛主體並沒有受影響,依舊被其它外部反射探針照亮。

如何設定Unity高清渲染管線製作高階視覺化內容

在汽車許多其它部分中,我也使用了此工作流:

  • 防止車內光照和反射探針滲透到外部車體,或防止外部影響到內部;
  • 將平面反射探針限制在鏡面幾何形上;
  • 在不影響整個車體的前提下,為車前燈和尾燈的反光體和燈罩製作出逼真的反射效果;
  • 為如前格柵一類的標誌性金屬部件新增反射探針。


在處理複雜形狀時,我們再也不用(起碼能夠更少地)去調整反射探針的Blend Distance(混合距離)的邊界了!此方法唯一的小缺點是需要將模型分成幾個不同的遊戲物件。

陰影過濾

若想製作出逼真的影象,另一個需要考慮的因素是陰影的品質和半影(penumbra)的模擬。幸而,HDRP在此方面非常出色。在HDRP的品質設定中,我們可以選擇“High(高)”Filtering Quality(過濾品質),增加最大陰影解析度,以適應不同型別的光照(如定向性光照,點光和聚光燈這類精確光照和區域光源)。

如何設定Unity高清渲染管線製作高階視覺化內容

在實時圖形中,通常會有一個誤解,就是更清晰的陰影代表著更高的品質,因為如果沒有額外應用模糊效果,更高解析度的陰影貼圖會產出更清晰的陰影。但事實上,陰影從源頭投射出來的距離越遠,陰影會越模糊。總體來說,陰影其實要比大多數人以為的更為模糊一點。HDRP可以在高清晰度下模擬出陰影模糊效果:離源頭較遠的陰影會非常模糊,而較近的陰影會依舊清晰。

在下方示例中,宮殿前部廣場中心的雕像影子在投射到較遠位置後,會出現真實的模糊效果。同時從車投來的影子依舊清晰,車的陰影也會隨著距離的增加而逐漸模糊。

如何設定Unity高清渲染管線製作高階視覺化內容

我們可以在光照檢視窗的shadow(陰影)部分控制過濾品質。此外,HDRP還有Angular Diameter(定向光源)和Radius(點光源和聚光燈)的選項,可以模擬大型發光形狀。我們可以通過改變物理形狀來控制陰影的模糊度和鏡面高光效果:發光源的體積越大,其陰影和鏡面高光效果也就越模糊。

如何設定Unity高清渲染管線製作高階視覺化內容

如果場景中出現了一行行的瑕疵(陰影失真),增加Slope-Scale Depth Bias(坡度尺深度偏差)的值,讓多面體的背光面上有更高的偏差值。而多餘的陰影看起來會“沉”到表面之下。將近平面推向光源,減少光照距離可以產生更為精確的陰影,不多此類方法並不總是適用。

接觸陰影

Contact shadows(接觸陰影)非常適合處理定向性陰影貼圖在遠處表面上解析度過低的問題。不論是定向光照或精確光照,不論攝像機距離的遠近,接觸陰影可以大幅提高地面細節部分的自投影品質。宮殿前部使用此功能的受益較大:在外飾、窗臺、崗亭和窗戶上的陰影顯得非常真實。

如何設定Unity高清渲染管線製作高階視覺化內容

然而和其他螢幕影象技術一樣,不位於螢幕中的地形、透明的材料、隱藏在不透明物體後的物件不會產生任何接觸陰影,因為這些物件的資料並沒有儲存在螢幕空間深度快取中。這可能導致接觸陰影中出現許多的“洞”,同時在一幀畫面的邊緣並不會有陰影效果。總的來說,如果影象使用了此種效果來提高品質,尤其是加入了中距和長距陰影,則效果中會不可避免地出現這些缺陷。

光照設定

首先,建議各位使用ACES tonemapping(色調對映)從最初就加入電影級的光照。當然,在後期階段,通常是在設定光照通道後,我們還需要使用如下幾個Volume Overrides(體積覆寫)來實現最終圖片的顏色分級:

  • Color Adjustments(顏色調整)
  • Lift Gamma Gain
  • White Balance(白平衡)


後者在為太陽、月亮和人工光源新增基於物理的色溫時尤其重要,它可以產出人腦加工後的顏色效果,自動或手動調整攝像機的白平衡。比如,在3000 K燈具產生的白熾光如果不經修正,會有一種強烈的橘色光圈。白平衡同時也可以用在許多藝術性創作中;但是高階視覺化影象的顏色重現必須要認真對待,在處理汽車噴漆時不能有半點瑕疵。

環境光照

在本演示專案中,所有元素都是動態的,時間和車的位置都可以被改變。為此,我們使用一張multiplier為10000lux的陰天的HDRI天空,通過烘焙(Indirect Only)在阿美琳堡宮的凹陷部分製作出了剔除效果。

隨後,加入了一個Indirect Light Controller(間接光照調節器)來輕鬆調節尤其是低光照條件下烘焙間接光照的強度。得以建立起一個基於物理的光照佈景,可以將方向性光照強度在1lux(月光)到100000lux(強烈的日光)之間調節。

最後,加入了Volumetric Fog(體積霧)來製作更好的景深效果:每種光線,尤其是黃昏時的光線,都可以影響到體積霧,產生非常漂亮的效果。在街燈的處理上,我使用了此前釋出的Unity專家級指南中的Cookie烘焙技術,確保發光物件能有完美的自陰影效果。

得益於Unity泛用的GPU Progressive Lightmapper(PLM;GPU漸進式光照貼圖器),和Nvidia及Intel最近加入的機器學習影象降噪技術,整個庭院可以使用一張GeForce RTX 2080 TI在30秒內烘焙完成。而下方的設定可以為整個庭院製作出一種天空光遮蔽烘焙(sky-occlusion bake)效果:

  • 每米5紋素的解析度
  • 2條彈射光線
  • 未新增環境光遮蔽
  • Nvidia Optix人工智慧加速降噪器


環境光遮蔽

另一個重要的效果是包括螢幕空間或光線追蹤技術中的環境光遮蔽(Ambient Occlusion;AO):該功能會模擬場景凹陷部分的微量光遮蔽效果。如果先前沒有用外部方案烘焙AO,螢幕空間和光線追蹤兩種實時烘焙技術可以極大地改善氛圍光照的品質,此類效果在車內最佳,並且兩種方案可以有效地減少反射光側漏。請注意,過高的效果強度會導致區域性顏色對比過大,導致出現一種光暈效果,所生成的外觀也會變得卡通。

如何設定Unity高清渲染管線製作高階視覺化內容

在實時螢幕空間環境光遮蔽效果中,由於其在距離較近時並不能產出高質量的影象,而車廂底部通常都不在螢幕空間內,在處理車底黑暗部分時,我們依舊需要一個專門的陰影平面,來實現最佳效果。此類遮蔽效果可使用一個DCC包來烘焙,產出的紋理可通過兩種不同的方法應用到Unity中:

  • 將紋理新增到一個使用HDRP無光照著色器的平面上。
  • 將紋理新增到一個使用HDRP貼花著色器的Decal Projector(貼花投影)中。


如何設定Unity高清渲染管線製作高階視覺化內容

使用貼花效果的一個優點是紋理可以正確地投射到一個不平整的表面上,即便在表面中使用了諸如錯位貼圖(將畫素向下方偏移)這樣的先進貼圖技術;而無光照平面在檢視畫素時看上去像是漂浮著一樣。在車底佈置一個反射探針也可以防止多餘的反射漏光到路面和車底。

攝像機設定

HDRP的Physical Camera(物理攝像機)控制可以模擬許多真實鏡頭的特性,包括如下關鍵特性:

  • 焦距
  • 光圈
  • 感光度(ISO)
  • 快門速度
  • 葉片數
  • 變形鏡頭
  • 桶形畸變


如何設定Unity高清渲染管線製作高階視覺化內容

我們可以選擇將這些屬性應用在景深(DoF)和曝光率上。HDRP的另一個優點是我們可以輕易將曝光率從物理攝像機設定中分離出來,在保持DoF真實度的前提下,在光照和曝光率上有更多的自由。

如何設定Unity高清渲染管線製作高階視覺化內容

HDRP同時還提供手動調整DoF對焦的功能,可以調整不基於物理的近焦和遠焦模糊距離。不過,建議使用物理相機(Use Physical Camera)模式,以模仿現實中的汽車影像。傳統的攝影方法和鏡頭組合起來才有可能製作出令人信服的影像。例如,超廣角鏡頭只能在如動作鏡頭這類的情境下使用,因為鏡頭在近距離攝製物件時會產生透視形變。並且過淺的景深會破壞層次感,讓影象看起來不真實,更像視訊遊戲。此外,我們還能將攝像機的視場和焦距組合起來,利用兩種引數成反比的特徵,防止出現同時使用寬視場和遠焦距時產生的不真實景深。

如何設定Unity高清渲染管線製作高階視覺化內容

如果對攝影藝術不夠了解,這些攝像機知識可能需要一些時間才能消化。不過,學習攝像機和攝影的技術知識可以幫助我們創作出更好、更有趣的影象和影像構圖。即使沒有接受過藝術審美方面的訓練和學習,我們也能更容易地臨摹市場上現有的許多材料。

透明效果

在實時3D中,正確地渲染透明效果依舊是一個難題,因為此類材質通常需要在單獨的著色通道中處理,本身一般不帶深度資訊,導致透明表面的排序會較為棘手,並且透明畫素通常會繼承位於後方不透明物件的深度資訊。這些特點使其在與景深組合使用會出現問題,本應在焦距上的透明物體會變得和失焦的背景一樣模糊。

幸好,HDRP有一些隱藏殺手鐗:在HDRP光照著色器材質的監視器中,我們有幾種不同的表面選項,包括能防止普通影象處理產生的排序瑕疵的“Render Back then Front(從後到前渲染)”,能避免出現後期處理效果影象Bug的“Transparent Depth Postpass(透明深度後通道)。我們甚至能在Unity中手動為物件排序。

下方是一個最為棘手的場景,其中既有過淺的景深,頭燈和尾燈上又有好幾層玻璃。如果沒有透明深度後通道,部分燈罩會延用建築和道路的深度資訊,其模糊度也會與這些背景物件相同,如此高的模糊度會導致部分玻璃材質近乎“消失”在背景中。幸而透明深度後通道和更為關鍵的Write Depth(寫入深度)功能可以解決這個問題。

如何設定Unity高清渲染管線製作高階視覺化內容

但是,另一個較大的渲染問題依舊存在:透過頭光和尾光燈罩看見的建築和道路部分會出現在焦距中,這些屬於背景的部分並不會模糊。可惜的是,該問題在遊戲引擎中並沒有非常好的解決方法,不光是Unity,任何使用單深度快取的渲染管線都會有這個問題。

小結

HDRP是一種非常靈活的渲染管線,可支援主流主機到高階工作站的所有裝置。然而,靈活性也意味著管線有大量的設定和引數需要手動調整,才能找到滿足專案要求的效果。希望在閱讀本指南後,各位能對使用HDRP製作高階視覺化影象有更好的理解,能知曉如何大幅提升汽車、AEC、電影甚至是下一世代遊戲的影象質量。

如何設定Unity高清渲染管線製作高階視覺化內容

最後,HDRP中的光線追蹤功能一直在進步,實時和離線渲染之間的差距也在逐漸縮小,許多傳統的螢幕空間和基於圖片的技術可能不久就會成為過去式,至少在高階實時應用中應是如此。當然,這些“古舊”的技術在發揮到極限時,依舊能輕易博取主流大眾的眼球。

來源:Unity官方平臺
原地址:https://mp.weixin.qq.com/s/SVqiklklMZPO68xh5I-Qyw

相關文章