Blenderでセルルックの影が汚くなる原因は主に3つ——法線(ノーマル)の過剰平均化・EEVEEのサンライト角度設定・シェーダーノードの内積反転。この記事で各問題を根本から解決する手順を解説する。
「モデルに影を入れたら汚いグラデーションが出た」「サンライトを回転させると影が逆行する」——Blenderでアニメ調(セルルック)表現に挑戦すると、物理ベースレンダリング(PBR)との衝突で必ずこの壁に当たる。3DCGスクールでBlenderを学ぶ筆者も同じトラブルに直面したが、法線・ライティング・ノードの3層を順番に攻略することで解決できた。この記事では初心者でも即実践できるテクニックを網羅的に解説する。
なぜBlenderのセルシェーディングで影が破綻するのか?
根本原因は「物理法則に忠実なPBRエンジン」と「意図的に省略するNPR(非写実的)表現」の思想的対立にある。
Blenderは初期設定で物理的に正しい光の計算を行う。スムースシェード(Smooth Shading)はその典型で、曲面を滑らかに見せる代わりに頂点法線を周囲の面と平均化するため、本来フラットな平面にまで影のグラデーションが波及してアーティファクトを生む。また、EEVEEエンジンはリアルタイム性に優れセルルックに向いているが、デフォルトのライティング設定では半影(ペナンブラ)が発生しアニメ特有のくっきりした影が出ない。問題を3層に分けて解決することがポイントだ。
【Layer 1】メッシュと法線の最適化——影のアーティファクトを根絶する
ベベル適用後は「法線のハード化」で隣接面を守る
ベベル(面取り)モディファイアーを適用した直後に黒ずみが出る場合、モディファイアーのプロパティ内「シェーディング」セクションにある「法線のハード化(Harden Normals)」にチェックを入れるだけで解決できる。この設定を有効にするとBlenderはベベル面の法線のみを補間し、隣接する大きな平面の法線は面に対して垂直に保つ。ベベル追加直後にしかアクセスできない設定のため、最初に確認する習慣をつけること。
「重み付き法線」モディファイアーで全体をクリーンアップする
複雑なモデリングやブーリアン演算後に全体的にシェーディングが乱れている場合は、モディファイアースタックの末尾に「重み付き法線(Weighted Normal)」を追加するのがベストプラクティスだ。面積の大きなポリゴンの法線の影響力を強くして頂点法線の向きを自動補正するため、フラットな面は完全に平らに保たれつつ角の丸みだけが滑らかになる。非破壊で全体をクリーンアップできるセルシェーディング必須テクニックだ。
「シャープをマーク」と「面から設定」——手動オーバーライド
特定のエッジだけ影を断ち切りたい場合は編集モードで対象エッジを選択しCtrl+E → シャープをマーク(Mark Sharp)を実行。スムースシェードの影響がそのエッジで停止しアニメ的なシャープな影が生まれる。他ソフトからのインポート時など法線データが完全に狂ってしまった最終手段として、全選択後にAlt+N → 面から設定(Set from Faces)でカスタム法線をリセットして幾何学的に正しい法線を再計算できる。
【Layer 2】EEVEEのライティングを「セルルック仕様」に最適化する
サンライトの「角度(Angle)」を0にする——最重要設定
EEVEEでアニメ調のくっきりした影を出すために最初にやるべき設定がこれだ。サンライトを選択しオブジェクトデータプロパティの「角度(Angle)」を「0」に変更する。デフォルト(約11.4度)では太陽の視直径をシミュレートして半影(ソフトシャドウ)が発生するが、0にすることで光線が完全に平行となり半影を根本排除できる。これだけでセルルックの影が劇的に締まる。
ポイントライト・エリアライト使用時
ポイントライト等でハードシャドウを得たい場合は「光源サイズ(半径)を極限まで小さく、ワット数を高く」設定する。光源が小さいほど影はシャープになる——これが基本原理だ。
【Layer 3】シェーダーノードで影を数学的にコントロールする
太陽を360度回すと影が逆行する問題
ライトの方向ベクトルと法線の内積を使ったトゥーンシェーダーでは、サンライトを180度以上回転させた瞬間に影が逆行するバグが発生する。原因は三角関数(コサインカーブ)の性質で、角度が180度(π)を超えると内積の増減が反転するためだ。タイムラプスやターンテーブルアニメーションで影が破綻するのはすべてこれが原因だ。
「Greater Than 0.5」ノードで180度問題を完全解決する
数式ノードを「より大きい(Greater Than)・閾値0.5」に設定し、出力(0または1のスイッチング値)を減算(Subtract)ノードの上部インプットに接続する。これにより180度を境に演算ロジックが動的に切り替わり、360度どの角度にサンライトを回しても影がスムーズに追従する堅牢なシェーダーが完成する。Ctrl+Shift+Dで接続を保持したまま複製できるテクニックも覚えておくと作業効率が上がる。
ハーフランバートで顔の影を半減させる
通常のランバート反射では球体の下半分50%が影になる——キャラクターの顔に使うと暗くなりすぎる。ハーフランバートは内積値(-1〜1)を0.5倍して0.5加算(0〜1に圧縮)することで影の境界閾値をずらし、光の当たる面積を広げる手法だ。カラーランプの手前に組み込むだけで、アニメ特有の「嘘の影」が自在にコントロールできる。
BOOTHの外部シェーダーアセットで制作効率を大幅アップ
ノード構築を毎回ゼロから組み直すのは非効率だ。BOOTHなどで配布されている「お手軽セルルックシェーダー」のようなアセットをAppendで導入すると、ハーフランバートの閾値オフセットがスライダーで直感的に調整できる状態で利用できる。さらに優れたアセットは、影の発生方向とスペキュラー(ハイライト)の方向を別々のライトから独立計算できる「個別ライト方式」を内包しており、カメラ目線のキャッチライトとは別に主光源から影を落とすといったリッチな表現が短時間で実現できる。
バージョン互換性に注意
Blender 3.5で作成されたシェーダーはそれ以前のバージョンでは正常動作しない場合がある。アセット導入前に自分のBlenderバージョンとの互換性を必ず確認しよう。
まとめ:セルルック品質管理チェックリスト
アニメ調レンダリングは「物理法則を数学的・論理的に意図して壊す」作業の連続だ。以下のチェックリストを作業中に随時参照してほしい。
| 確認項目 | 発生条件 | 対処法 |
|---|---|---|
| 法線のハード化 | ベベルモディファイアー使用時 | モディファイアー → シェーディング → Harden Normals ✓ |
| 重み付き法線 | 複雑モデリング・ブーリアン後 | モディファイアースタック末尾にWeighted Normal追加 |
| シャープをマーク | 特定エッジだけ影を断ち切りたい | 編集モード → Ctrl+E → Mark Sharp |
| サンライト角度=0 | EEVEEでハードシャドウが出ない | オブジェクトデータ → Angle → 0 |
| 影の反転防止 | サンライト360度回転時 | Greater Than 0.5 ノードを減算の上部入力に接続 |
| ハーフランバート | 顔の影が広すぎる・暗すぎる | 内積値を0.5倍+0.5加算でカラーランプ前に挿入 |

コメント