Anime Shading Plus
Show / Hide Table of Contents

🦇 6. キャラクター影設定 - ASP の影ソリューション(1.3 更新 / 2025年11月)

このページでは、影の設定に入る前に、ASP が Cube Proxy でキャラクターの self-shadow を除去する仕組みと、旧リリースラインで追加の Character-Only Shadow Map を使用していた理由を説明します。

💡 新規設定では Cube Proxy を使用してください。Unity 2022.3、6.0、6.3 には ASP ShadowMap が Legacy オプションとして残っていますが、1 体のキャラクターではどちらか一方だけを使用します。Unity 6.5 では Cube Proxy のみを提供します。


トゥーンレンダリングにおける self-shadow の問題


通常、標準の Shadow Map を使うと、キャラクター上の self shadowing はあまり理想的な見た目になりません。これは Shadow Map の解像度が限られているためです。
1 枚の Shadow Map でシーン全体をカバーする必要があるため、シーン中のキャラクターが占める領域はごく小さくなります(Unity 標準の 4 段 Cascaded Shadow Map を使っても十分でないことがあります)。

Image

上の例では、髪や顔のメッシュが落とす影が、Shadow Map の解像度不足によってキャラクター自身に不自然な self shadowing を生んでいます。

髪や顔の Mesh の ShadowCaster を Off にすれば self-shadow 自体は避けられますが、その代わり地面に落ちるキャラクターの影からも髪や顔の形状が失われます。

Image

推奨する self-shadow 解決方法 - Cube Proxy

Image

原理:
GRAVITY DAZE(PS Vita 版) のキャラクター影アルゴリズムでは、キャラクターは「現在のピクセルのワールド座標」をそのまま使って Shadow Map をサンプリングしません。
代わりに、キャラクター全体を包み込む 仮想的な立方体(proxy cube) を外側に配置します。
描画時には、光源方向と AABB の交点を計算し、Cube Proxy 表面の位置で Shadow Map をサンプリングします。 この方式では、立方体の内側にあるキャラクター自身の表面は self-shadow 計算に参加しないため、次の利点があります。
✔ キャラクター自身に self-shadow が発生しない

影のサンプリング位置は常に立方体表面から取得されるため、キャラクター自身の表面が自分を遮蔽しません。
✔ 外部環境や他オブジェクトからの影は受け取れる

立方体の外にある物体は依然として光を遮るため、キャラクターには外部オブジェクトから投影された影が正しく表示されます。

💡 一般的なゲーム、特にカメラが比較的遠い三人称視点のタイトルでは、この方法をおすすめします。追加の Character-Only Shadow Map を描画する必要がなく、負荷を抑えやすいためです。

Legacy の self-shadow 解決方法 - Character-Only Shadow Map

💡 このワークフローは、ASP ShadowMap Renderer Feature を含む Unity 2022.3、6.0、6.3 のリリースラインでのみ利用できます。Unity 6.5 ではサポートしていません。

ASP では、self shadowing を効果的に解決する方法として、キャラクターだけを独立した Shadow Map に描画する方式も用意しています。
キャラクター自身は、人物を含まない Unity 標準の Shadow Map からのみ影を受け取り、
一方で通常のシーンオブジェクトは、キャラクターを含む Shadow Map と標準 Shadow Map の 2 枚から影を受け取ります。
あらゆるケースに万能な方法ではありませんが、二次元らしい見た目を重視するトゥーンレンダリングでは十分に説得力のある結果が得られます。

Image

キャラクター自身は、引き続き Unity 標準 Shadow Map からの影を受け取れます

Image

また、必要に応じて特定のマテリアルだけにキャラクター影の受け取りを有効にすることもできます。たとえば脚部だけをキャラクター影の受け取り対象にする、といった使い方が可能です。

Image


スクリーンスペース Depth Offset Shadow


2 枚の Shadow Map を使うことで低解像度の self-shadow は避けられますが、その代わりキャラクター自身の影ディテールは失われやすくなります。ASP では追加 Pass を用意しており、
オフセットした深度バッファを使って、セルアニメ調の顔や身体に出る影に近い表現を作れます。これにより、たとえば髪が顔に落とす影のような細部を補えます。

Image

次のページでは、Character Panel を使って Unity エディタ上でキャラクターの影パラメータを素早く設定する方法を紹介します。

⏭️ 次のページへ 🦇 7. キャラクター影設定 - ASP Character Panel で影の投射と受け取りを設定する(1.3 更新 / 2025年11月)

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