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 コンポーネントをキャラクターの root GameObject に追加します。

Image

  1. 次に、ASP Render Feature Check List の Required Pass がすべて Active になっていることを確認します。inactive または missing と表示されている場合、その Renderer Feature は現在の URP Renderer Data で有効になっていません。 1️⃣ 1. インストール手順・事前設定(重要) を参照して、URP Asset と URP Renderer Data を正しく設定してください。

Image

  1. 続いて、キャラクターに使われているマテリアルが ASP/Character を Shader として使っていることを確認します。

対象 Shader が ASP/Character または ASP/Eye のマテリアルは、ASP の Character-Only Shadow Map に描画されます

Image

2. 影の設定

ここまで来たら、キャラクター影の設定を始められます。現在のキャラクターの ASP Character Panel に戻ると、下のほうに Shadow Behaviors というカテゴリがあります。
このカテゴリには、展開できる項目が全部で 4 つあります。

項目名 説明
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 と Depth Offset Shadow を受け取るかどうかを確認、設定します。

💡 ASP 1.3 以降では、立方体を使って self-shadow を除去する方法が追加されました。追加 Shadow Map を使う方法より設定しやすく、負荷も抑えやすいです。以下ではこの 2 つの方法を分けて説明します。
プロジェクトではどちらか一方のみを選んで設定してください。

(新)2-1 立方体除去を有効にして影の受け取り / 投射を設定する

ASP Character Panel が追加されているキャラクターの Inspector で、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 なしで self-shadow を防げます。 Image

(旧)2-1 キャラクターの Built-In Shadow Map への影描画を無効にする

まず Built-In Shadow Casting Behaviour を開き、キャラクター配下の各 Renderer が Built-In Shadow Map に描画しているかどうかを確認します。

各項目の Toggle を個別に切り替えることも、下部の Apply All で一括切り替えすることもできます。ここでは、すべての Built-In Shadow Cast を OFF にします。

Image

(旧)2-2 シーン内の他の Static オブジェクトにキャラクター影を表示する

対象 Shader が ASP/Character または ASP/Eye のマテリアルは、ASP の Character-Only Shadow Map に描画されます。シーン内の標準 PBR マテリアルなど、ASP 以外のマテリアルでもこの影を受け取れるようにするには、

もともとの Universal Render Pipeline/Lit を ASP/UniversalPBRLit に置き換える必要があります。
ASP/UniversalPBRLit は、マテリアル UI も機能も標準 PBR と同じで、唯一の違いはコード側で ASP の Character-Only Shadow Map を追加サンプリングする点です。

Image

(旧)2-3 特定マテリアルだけにキャラクター影を受け取らせる

ASP Extra Shadow Behaviours の左側にある Character-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))を 1 つ追加してください。名前は DepthOffsetShadowCaster など分かりやすいものにします。

  2. 次に ASP Depth-Offset Shadow を設定します。Project ウィンドウで Renderer Feature を保存している URP Renderer Data を探し、Renderer Features の一覧から ASP Depth-Offset Shadow を開きます。

  3. このパネルでは、対象となる Layer と Rendering Layer Mask を指定できます。

💡 Layer は 1 つしか選べませんが、Rendering Layer Mask は複数選択できます。

Image


Rendering Layer Information を展開すると、以下のような画面が表示されます。

Image

項目名 説明
Layer Editor 上では各 GameObject の右上から設定できます。各 GameObject は 1 種類の Layer しか持てず、Physics システムとも共有するため柔軟性は低めです。
Rendering Layer Mask 各rendererごとに個別設定でき、複数選択も可能なので柔軟性が高いです。
  1. まず、上部にある Depth Offset Shadow の対象 Layer と Rendering Layer Mask を確認します。

  2. 次に、各 Renderer ごとに Layer 値と Rendering Layer Mask 値を設定します。

対象の Layer が一致し、かつその Renderer の 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