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,如果有顯示inactive或者missing的話,代表該renderer feature並沒有在當前URP renderer data中啟用,
請照著 1️⃣ 1.安裝說明、前置設定(重要) 將URP Asset與URP renderer data設定好。

Image

3.接著,確認人物本身的material均已改為使用ASP/Character作為Shader。

只要目標Shader使用ASP/Character或者是ASP/Eye的材質,都會渲染進ASP的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 檢視與設定當前人物底下所有material是否接收來自ASP的Character shadow map以及深度偏移陰影

💡 從ASP 1.3版之後,新增了設定立方體剔除自陰影的方式,相較於使用額外的shadow map,這是一個易於設定,同時節省效能的方法,以下頁面中我會將這兩種方法的設定步驟區分開來
請讓你的專案只選擇其中一種來設定

(新) 2-1 開啟立方體剔除以及設定陰影接收/投射

有綁定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,調整剔除用立方體中心與大小

  1. 打開Editor中的Gizmos Toggle

  2. 調整Character Center Position Offset來控制剔除用立方體的中心

  3. 調整AABB Size來控制立方體的大小

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

Image

Image

(新) 2- 3關閉ASP Shadow Map

  1. 最後別忘了關閉ASP Shadow Map (因為使用立方體剔除法不需要額外的Shadow Map就能避免人物的自陰影了) Image

(舊)2-1 關閉人物對內建shadow map的陰影渲染。

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

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

Image

(舊)2-2讓場景的其他static物件能顯示人物陰影

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

我們需要將原本的 Universal Render Pipeline/Lit 改為 ASP/UniversalPBRLit。
ASP/UniversalPBRLi 不論是材質編輯器或是功能都與內建PBR一模一樣,唯一的差異就是在code中會額外去採樣進ASP的Character-Only Shadow Map,

Image

(舊)2-3 控制指定材質接收人物陰影

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

Image

(舊)2-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