〰️ 螢幕空間描邊(輪廓線)Post Process Screen Space Outline 參數說明
在Volume中加入ASP Screen Space Outline 後可以設定螢幕空間描邊的詳細參數。
此頁依據目前UI上的分類,列出各個分類中的參數說明。

一般
| 參數名稱 | 說明 |
|---|---|
| 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 EdgeAlbedo EdgeDepth EdgeNormals EdgeVertex Color MaskCombined Result And Vertex Color MaskCombined 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。