Anime Shading Plus
Show / Hide Table of Contents

🦇 7.人物陰影設定 - 利用ASP Character Panel設定投射與接收陰影。(更新1.3 - 2025/11)

這一頁將示範如何透過ASP Character Panel設定人物陰影的投射與接收。


1.準備工作

1.首先,根據 2️⃣ 2.設置ASP Character Panel (重要) 的步驟,將ASPCharacterPanel這一個component加入到人物的root gameobject上。

Image

2.接著確認ASP Render Feature Check List中的Required Pass皆為 Active。Required Pass目前是ASP Material Pass與ASP Depth-Offset Shadow。若顯示 inactive 或 missing,請依照 1️⃣ 1.安裝說明、前置設定(重要) 設定URP Asset與URP Renderer Data。

💡 ASP ShadowMap不是Required Pass。Unity 2022.3、6.0與6.3版本只有在此Renderer Feature存在且啟用時,清單才會顯示 ASP ShadowMap (Legacy);未加入時不會顯示為 missing。Unity 6.5版本不包含此功能。

Image

3.確認人物材質使用ASP/Character或ASP/Eye。ASP Character Panel會將Cube Proxy的啟用狀態、中心與大小同步到這些材質。只有選用ASP ShadowMap (Legacy)時,這些Renderer才會另外被繪製到Character-Only Shadow Map。

Image

2.設定陰影

到這一步,我們準備好開始設定人物陰影。回到當前人物的ASP Character Panel,往下會看到Shadow Behaviors分類,
此分類下總共有五個可展開項目。

項目名稱 說明
Rendering Layer Information 檢視與設定當前人物底下所有renderer各自的Layer與Rendering Layer Mask。
Built-In Shadow Casting Behaviour 檢視與設定當前人物底下所有renderer是否渲染陰影至Unity內建shadow map中。
Built-In Shadow Receive Behaviour 檢視與設定當前人物底下所有material是否接收來自至Unity內建shadow map的陰影。
ASP Extra Shadow Behaviour 設定材質是否接收Depth Offset Shadow。使用仍包含ASP ShadowMap的舊版分支時,也可設定Legacy Character-Only Shadow Map的接收狀態。
Simple AABB Cube to Remove Self-Shadowing 設定推薦使用的Cube Proxy啟用狀態、中心與大小,用來移除角色自陰影。

💡 建議所有新設定使用Cube Proxy。相較於Legacy Character-Only Shadow Map,Cube Proxy不需要額外的shadow texture、cascade或角色ShadowCaster draw call。Unity 6.5只提供此方法。

2-1 開啟Cube Proxy並設定陰影接收/投射

有綁定ASP Character Panel的角色上,在於Inspecotor上找到ASP Character Panel中的Shadow Behaviours分類

  1. 將 Simple AABB Cube to Remove Self-Shadowing 的 Enable 設為 true。

  2. 在shadow behaviours的其他選項中確認人物有確實跟投射Built-In Shadow (應全為綠色) Image

2-2 開啟Gizmos,調整Cube Proxy中心與大小

  1. 打開Editor中的Gizmos Toggle

  2. 調整 Character Center Position Offset 控制Cube Proxy中心。

  3. 調整 Self Shadow Cutoff AABB Size 控制Cube Proxy大小。

💡 盡量讓這個立方體的大小可以包覆整個人物,但又不會太大。請記住人物本身是不會接收到來自立方體內的物體投射出的陰影的

Image

Image

2-3 若有啟用ASP ShadowMap (Legacy),請將它關閉

  1. 使用Cube Proxy時不需要額外的Character-Only Shadow Map。若Renderer Data中仍啟用ASP ShadowMap,請將它停用。Unity 6.5沒有此Renderer Feature,也不會在Check List中顯示缺少項目。 Image

3. Legacy ASP ShadowMap設定(僅Unity 2022.3、6.0與6.3)

⚠️ 下列方法只適用於仍包含ASP ShadowMap Renderer Feature的分支。請勿與Cube Proxy同時使用。Unity 6.5不支援此方法。

3-1 關閉人物對內建shadow map的陰影渲染

先至Built-In Shadow Casting Behaviour分類中,我們可以在這裡檢視該人物底下所有renderer當下是否渲染至內建shadow map。

可以點擊各自的toggle也可以選擇下方的apply all一次開關所有shadow caster,這裡我們將所有內建shadow cast行為設為OFF。

Image

3-2 讓場景的其他static物件顯示人物陰影

只要目標Shader使用ASP/Character或者是ASP/Eye的材質,都會渲染進ASP的Character-Only Shadow Map中,為了讓其他非ASP材質能接收人物陰影(比如說場景上使用的標準PBR材質),

我們需要將原本的 Universal Render Pipeline/Lit 改為 ASP/UniversalPBRLit。
ASP/UniversalPBRLit 的材質編輯器與功能都和內建PBR相同,差異是Shader code會額外採樣ASP的Character-Only Shadow Map。

Image

3-3 控制指定材質接收人物陰影

在ASP Extra Shadow Behaviours中,靠左側的 Characater-Only Shadow Map分類,我們可以根據需求開啟少數接收人物自陰影也不會破壞美感的部分。比如說腿部與衣服。
大部分的情況下可以全都設為Not received。

Image

4. 指定特定部位投射與接收Depth Offset Shadow

首先,先確認專案的rendering layer mask設定與Depth Offset Shadow renderer feature。

1.設定專案的rendering layer mask與Depth Offset Shadow renderer feature


Image

  1. 首先,我們需要在 URP Global Setting 中設定 Rendering Layer Mask。 在 Edit > Project Settings > URP Global Setting 中,新增一個 Rendering Layer Mask( Rendering Layers(3D) )。輸入合適的名稱,例如 : DepthOffsetShadowCaster。

  2. 接下來,我們需要設定 ASP Depth-Offset Shadow。在 Project 視窗中,找到儲存 Renderer Feature 的 URP Renderer Data。展開 Renderer Features 列表,找到 ASP Depth-Offset Shadow。

  3. 在面板上可以設定指定的layer與rendering layermask。

💡 請注意,Layer只能設定單一Layer,不可複選,複選。Rendering Layer Mask則可以複選

Image


點擊展開Rendering Layer Information項目後,會看到如下畫面。

Image

項目名稱 說明
Layer 在Editor,於每個game object右上方可設定,每個game object只能有1種layer,並且與physics系統共用,彈性低。
Rendering Layer Mask 每個renderer可獨立設定,Rendering Layer Mask可複選,彈性高。

1.首先確認上方的Depth Offset Shadow的目標Layer與Rendering Layer Mask。

2.接著針對個別renderer去設定它的Layer值與Rendering Layer Mask值,

只要layer相符且自身rendering layer mask的組合”包含”Depth Offset Shadow所設定的值,則該renderer會投射depth offset shadow。

Image

⏭️ 前往下一頁 3️⃣ 3.人物渲染範例 - 賽璐璐

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