Anime Shading Plus
Show / Hide Table of Contents

〰️ 螢幕空間描邊(輪廓線)Post Process Screen Space Outline 參數說明

在Volume中加入ASP Screen Space Outline 後可以設定螢幕空間描邊的詳細參數。

此頁依據目前UI上的分類,列出各個分類中的參數說明。

Image


一般


參數名稱 說明
Enable Outline 是否啟用螢幕空間描邊。請注意此項目的預設值是關閉,必須在Volume中將override打勾並設為true才會生效。
OutlineWidth 描邊寬度
OutlineColor 描邊顏色
Enable Scene Object Outline 是否讓非ASP角色的場景物件也能套用螢幕空間描邊。開啟後,Depth / Normals類型的輪廓線也會作用在有有效scene depth與normals的場景物件上。

各類型輪廓線


參數名稱 說明
Enable Material Edge 是否啟用基於Material ID的輪廓線。這一類edge需要ASP角色的Material Pass資料,因此只會作用在ASP角色像素上。
Material Edge Threshold 偵測Material Edge的閾值。數值越低,越容易被判定為輪廓線。
Enable Albedo Edge 是否啟用基於Albedo顏色的輪廓線。這一類edge會利用角色材質的Albedo資料判斷像素是否屬於輪廓線。
Material Albedo Threshold 偵測Albedo Edge的閾值。數值越低,越容易產生較細碎的內部輪廓線。
Enable Depth Edge 是否啟用基於深度差異的輪廓線。這一類edge會比較目前像素與周圍像素的scene depth差異。
Depth Edge Threshold 偵測Depth Edge的閾值。數值越低,越容易偵測到細微的深度變化。
Enable Normals Edge 是否啟用世界空間法線的輪廓線。此類型透過當前的 _CameraNormalsTexture 來判斷像素上的輪廓線。

請注意ASP的人物shader有特別修改過DepthNormal Pass,因此人物身上的法線貼圖資訊不會納入此計算,以避免產生過多不需要的edge。
Normals Edge Threshold 偵測Normals Edge的閾值。數值越低,越容易根據表面法線差異產生輪廓線。

💡 目前公開UI中的edge設定主要是「開關 + Threshold」。 舊版文件中提到的 Outerline、FXAA、Weight、Bias、分開的 Color / Weight / Width Distance Fade 等設定,已經不是目前版本的主要公開流程。

💡 使用者可以在透過控制模型vertex color的 B 通道的值來對輪廓線出現的區域做額外的mask,vertex color.b的值為0時會完全不顯示輪廓線,1則是不做任何mask。 舉例來說 - 不想要出現輪廓線的部分(比如眼珠、臉部鼻子周圍),可以在第三方DCC(blender/substance painter)中直接將這部分的vertex color.b設為0

Distance Falloff


參數名稱 說明
Enable Distance Falloff 是否依照相機距離淡出最終輪廓線。
Distance Falloff StartEnd 開始淡出與完全淡出的距離範圍。

目前版本的 Distance Falloff 會直接影響最終輪廓線的可見度。 如果希望近距離保留清楚的輪廓,但中遠距離逐漸減弱,建議先把近距離的edge與Outline Width調整到滿意後,再設定這一組Start / End距離。

Debug


參數名稱 說明
Enable Debug Mode 是否開啟debug顯示模式。
Debug Background debug模式下的背景顏色。
Screen Space Outline Debug Mode 選擇目前要檢視的debug結果類型。

Screen Space Outline Debug Mode 目前提供下列模式 :

  • Material Edge
  • Albedo Edge
  • Depth Edge
  • Normals Edge
  • Vertex Color Mask
  • Combined Result And Vertex Color Mask
  • Combined Result

關於Material ID的規則


每一個ASP Character Panel下,獨立的Material在runtime時會被賦予一個Material ID,假設一個角色物件內,總共有5個Skinned Mesh Renderer,與5個Material, 且這5個Material是不同的Material Asset,則該角色的Material分別會有1至5的ID。

有時候這會造成一些困擾 - 比如說單一mesh上可能有多個Material,而我們並不想讓這些Material有不同的ID,只要將Material的Asset命名為同一個名稱(因為命名相同,你會需要將他們放到專案中的不同資料夾下),ASP Character Panel會將同名稱的Material Asset視為單一一個ID的Material。

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