3️⃣ 3. キャラクターレンダリング例 - セルシェーディング
このページでは、下のキャラクターモデルを例にして、ASP/Character Shader を使ってセルルックのキャラクターを描画する手順を簡単に紹介します。
下図は、Unlit Shader と ASP の Shader を使った場合の比較です。

0. Shader を差し替える
まず、すべてのマテリアルを ASP/Character に置き換えます(顔と目の部分は後で処理します)。
差し替えたら、上部の Toon Shading Style は CelShading を選び、顔用マテリアルは Face モードに設定します。
💡 金属やレザー系のマテリアル(たとえばバッグの金属ファスナーや金具など)には、
StylizePBRを使い、対応する Metallic マップを設定したうえでSpecular Lightingを有効にすると効果的です。
PBR マップの各チャンネルについては 3️⃣ アルベド / 法線 / エミッション / OSM マップ の後半を参照してください。
1. ASP Character Panel と影を設定する
2️⃣ 2. ASP Character Panel の設定(重要) と 🦇 7. キャラクター影設定 - ASP Character Panel で影の投射と受け取りを設定する(1.3 更新 / 2025年11月) を参考に ASP Character Panel を設定し、現在のキャラクターモデルが Built-In Shadow Map へ影を投射しないようにします。調整中に不要な self-shadow が出るのを防ぐためです。

2. Ramp Map の初期状態
マテリアルエディタの Diffuse / Lighting Behaviour にある Ramp Lighting Map には、初期状態で黒から白へのグラデーション画像が入っています。これを使うと、Lambert Lighting に近い見た目で描画されます。

3. 新しい Ramp Map を作る
Ramp Lighting Map エディタの + ボタンを押して、現在のマテリアル用に新しい Ramp Map を追加します。
セルルックでは、明暗境界がはっきり出る Fixed Mode が向いています。
Ramp Map の調整が終わったら、他のマテリアルにも同じ Ramp Map を適用します(実際には、必要に応じてマテリアルごとに別の Ramp Map を使うこともあります)。
これで、基本的な 2 step cel shading ができました。

💡 Ramp Map 編集中に
Fixed Modeを使うと、ASP は自動的に Ramp Map の Import 設定をPoint Samplingに切り替えます。Fixed Mode以外では、自動的にLinear Samplingに切り替わります。Unity - Manual: Using sampler states
Most of the time when sampling textures in shadersA program that runs on the GPU. More infoSee in Glossary, the texture sampling state should come from texture settings – essentially, textures and samplers are coupled together. This is default behavior when using DX9-style shader syntax:
4. アニメ風の肌に合わせたサブサーフェススキャタリング
次に、肌(脚、手、首、顔)のマテリアルに対して、
CelShading モードの Diffuse / Lighting Behaviour 内で Subsurface Scattering を 1 レイヤー追加します。
SSS Ramp Layer を有効にして、新しい Ramp Map を追加します。
Shader は法線情報と視線方向をもとに SSS Ramp Map をサンプリングし、間接光が皮膚内部を通って戻ってきたような赤みのある透け感を与えます。通常、この Ramp Map の色はかなり淡めになります(下図参照)。


SSS なし

SSS あり
5. 環境光をフラット化する
ライティングをフラットに寄せたセルルックでは、環境からの間接光もあわせてフラット化すると効果的です。Diffuse カテゴリ内の Indirect GI Source を SampleSH_Flatten に設定すると、立体感のある環境光を単色寄りにできます。


一般的な PBR 環境光(受光マテリアルのベースカラー)は、モデルの 3D 立体感を強調します。主光源が弱くなると環境光が特に目立ちます。

フラット化後の環境光
💡 環境光のフラット化は、Light Probe から受けるライティングにも適用されます。
6. 追加光源をフラット化する
シーン内の Point Light / Spot Light など、主光源以外のライトには Ramp Lighting は適用されません。そのままだと見た目が不自然になりやすく、各ライトごとに Ramp Map をサンプリングすると負荷も高くなります。ASP では、これらの追加光源を立体的な Lambert Lighting からフラットな光に変えるオプションを用意しています。
Diffuse カテゴリの最下部で Flatten Additional Lighting を true に設定します。

デフォルトの追加光源では、鼻まわりの明暗が立体的に出すぎる場合があります。

フラット化すると立体感が弱まり、2D らしい見た目を保ちやすくなります。
💡 フラット化した追加光源を計算する際は、光源までの距離と光源強度のみを考慮します。
法線情報は使われないため、背後にある光源でも距離内であれば表面を照らします。
これはアニメ風キャラクター向けに特化したロジックであり、セルルック以外のスタイルには向いていません。
7. Rim Lighting
特定のマテリアルに Rim Lighting を加えたい場合は、プロジェクトの要件に応じて、Fresnel ベースの視線依存 Rim Light か、Depth Buffer ベースのスクリーンスペース等幅 Rim Light を使えます。

Rim Lighting の詳しい説明は関連ドキュメントも参照してください。
8. Specular Lighting を有効 / 無効にする
Specular Lighting は初期状態で有効です。Specular Mask を使っていない場合、ハイライト範囲が広すぎることがあります。必要に応じて調整するか、マテリアル側で ON / OFF を切り替えてください。
9. 顔影マップを作成する
🙃 9. 顔影マップ - 作成とベイク手順 の手順に従って、顔影マップを作成し、顔用マテリアルへ適用します。
💡
Face Modeを使う場合、影色として使われるのは Ramp Map の最左端の色だけで、Ramp Map 自体は Ramp Lighting を作りません(ライティング表現は顔影マップに置き換わります)。

10. (クリックして展開)Depth Offset Shadow で前髪の影を額に落とす
🦇 7. キャラクター影設定 - ASP Character Panel で影の投射と受け取りを設定する(1.3 更新 / 2025年11月) の 2-4 にある Depth Offset Shadow の手順に従って、Rendering Layer Mask を設定し、髪の Renderer と Depth Offset Shadow の Mask 値を一致させます。
設定後、同じ ASP Character Panel 内の ASP Extra Shadow Receiver で、顔用マテリアルの Depth Offset Shadow を Received に設定します。


設定が終わると、顔に Depth Offset ベースの髪の影が表示されるようになります。

11. アウトラインを調整し、Vertex Color でアウトラインマスクを描く
〰️ 14. スクリーンスペースアウトライン(輪郭線)の使い方 を参照してアウトラインパラメータを設定し、DCC 上で Vertex Color Mask を描きます。
Screen Space Outline の Debug Mode で、このキャラクターのアウトラインとアウトラインマスクを確認します。

12. Tone Mapping
🔧 17. トーンマッピング後処理 を参照してポストプロセスを調整します。
最終レンダリング結果



⏭️ 次のページへ 4️⃣ 4. キャラクターレンダリング例 - 厚塗り / PBR ミックス