Anime Shading Plus
Show / Hide Table of Contents

〰️ 14.螢幕空間描邊(輪廓線)使用說明

只要使用ASP/Character或是ASP/Eye Shader,都能支援螢幕空間描邊。上圖是debug模式下僅顯示描邊及控制描邊的Mask(黃色像素)

只要使用ASP/Character或是ASP/Eye Shader,都能支援螢幕空間描邊。上圖是debug模式下僅顯示描邊及控制描邊的Mask(黃色像素)

1.將描邊用的Renderer feature與Volum Override加入專案與場景 (點擊展開)

首先,到專案目前使用的Universal Renderer Data中,加入ASP Screen Space Outline。

Image

接著,在場景的物件上上新增一個(或是用現有的)Volume,並且設定為Global Mode,

在Volume的inspector上選擇Add override,搜尋ASP Screen Space Outline並且將其加入。 加入後你的Volume應該會向下方截圖一樣,可以看到Screen Space Character Outline,

Image

於volume內展開screen space character outline,能夠看到關於outline的各種參數。

Image

這些參數代表了甚麼?

ASP目前的螢幕空間輪廓線,主要由下列四種edge偵測結果組合而成 :

  • Material Edge

  • Albedo Edge

  • Depth Edge

  • Normal Edge

根據專案需求,利用這四種edge結果的組合,在螢幕空間下渲染角色輪廓線。

其中 Enable Scene Object Outline 可以讓非ASP角色的場景物件,也套用以深度/法線為主的螢幕空間描邊。

同時也支援利用模型本身的vertex color B通道當成mask,進一步控制ASP角色像素上的輪廓線顯示區域與強度。

另外,為了避免遠距離角色的輪廓線過於顯眼,現在提供的是統一的 Distance Falloff 設定,用來依照相機距離淡出最終輪廓線。

左側的整排toggle代表了甚麼?

Unity的Volume使用一種叫做 Volume Override 的架構, 簡單來說必須將左側的override toggle打勾之後,在右側的toggle選項才會生效,不然皆會使用該後處理特效的預設值。

Image

請特別注意,目前 Enable Outline 的預設值是 false。 因此,將Renderer Feature加入Renderer Data之後,仍然需要在Volume中將 Enable Outline 的override打勾,並且把右側的toggle設為 true,描邊效果才會真正啟用。

2.調整Screen Space Character Outline的邊緣檢測參數 (點擊展開)


接下來,我將以此人物模型作為設定輪廓線的範例

Image

1.首先,於volume內確認outline開啟,並且為了方便demo,點擊左上角的ALL選項,會讓所有override toggle設為true,這樣後處理效果會以我們的參數為主。

Image

2.在面板的最下面找到Debug分類,將Enable Debug Mode設為true。

Image

這會開啟輪廓線的debug模式,遊戲畫面會僅顯示指定的背景色以及當前的輪廓線(以outline color為顏色)

Image

3.接著同樣在Debug中,透過 Sreen Space Outline Debug Mode 下拉式選單顯示指定類型的edge,並且調整對應的threshold直到結果滿意為止。

Image

目前可直接檢視的debug模式包含 :

  • Material Edge

  • Albedo Edge

  • Depth Edge

  • Normals Edge

  • Vertex Color Mask

  • Combine Result And Vertex Color Mask

  • Combine Result

4.針對每種類型的edge利用debug選項個別調整好之後,可以將 Sreen Space Outline Debug Mode 設為 Combine Result, 可以看到目前所有已啟用edge的組合結果。

Image

接著將Enable Debug Mode關閉,檢視最終渲染結果

Image

💡 Material Edge 與 Albedo Edge 需要依賴ASP角色的Material Pass資料,因此只會作用在ASP角色像素上。 Enable Scene Object Outline 主要影響的是非角色物件的Depth / Normals類型輪廓線。

3.調整Distance Falloff (點擊展開)

基於螢幕空間算出的輪廓線的一大難題是在輪廓線本身難以根據距離作出相應的放大縮小,導致在相同設定下,距離較遠的人物輪廓線會過粗。

為了保持視覺一致性,ASP目前提供的是統一的 Distance Falloff 設定。 開啟 Enable Distance Falloff 之後,可以透過 Distance Falloff StartEnd 指定開始淡出與完全淡出的距離。

這一組設定會直接影響最終輪廓線的顯示強度。 也就是說,目前不再區分舊版文件中的Color / Weight / Width個別淡出流程,而是以更簡單的方式控制整體輪廓線在遠距離時的存在感。

💡 建議先把近距離的輪廓線調整到滿意,再利用 Distance Falloff StartEnd 去控制中遠距離的淡出範圍,會比直接把近距離參數壓得很低更容易調整。

4.利用模型Vertex Color的B通道調整輪廓線權重 (點擊展開)

除了透過Volume調整全局輪廓線外,ASP仍然提供了透過vertex color的B通道值,進一步控制角色像素輪廓線顯示區域的方式。

將screen space outline volume內的debug mode設置為 Vertex Color Mask 或 Combine Result And Vertex Color Mask。 這可以同時檢查最終輪廓線與目前vertex color B通道的分佈。 舉例來說 : vertex color.b的值為0時會完全不顯示輪廓線(黃色區域),1則是不做任何額外的處理(非黃色區域)。

Image

接著在DCC(e.g Blender, Substance Painter)中,將希望降低輪廓線權重的地方的vertex color B通道中的值修改。 回到Unity在同樣的debug mode中檢查。

Image

💡 vertex color mask只會影響ASP角色本身的像素。 如果開啟了 Enable Scene Object Outline,場景中非角色物件的描邊不會讀取角色模型的vertex color B通道。

⏭️ 前往下一頁 〰️ 15.模型空間描邊(輪廓線)的設定

  • Edit this page
In this article
Back to top Generated by DocFX