Blenderでアニメ調の影が綺麗に出ない?セルシェーディングの解決策と設定まとめ【2026年版】

当ページのリンクには広告が含まれています。
blender cel shading shadow fix 2026 eyecatch
🎨 3DCG専門スクールで学習(2026年9月まで)
🖌️ Blender・Photoshop実務使用

Blenderでセルルックの影が汚くなる原因は主に3つ——法線(ノーマル)の過剰平均化・EEVEEのライティング設定・シェーダーノードの内積反転。この記事では、それぞれの原因と対処を、検証環境で撮った前後の比較つきで解説する(サンライトを回したときの明暗反転だけは再現構成が未確定で、検証中の扱いだ)。

「モデルに影を入れたら汚いグラデーションが出た」「サンライトを回転させると影が逆行する」——Blenderでアニメ調(セルルック)表現に挑戦すると、物理ベースレンダリング(PBR)との衝突で必ずこの壁に当たる。検証環境で法線・ライティング・ノードの3層を順番に対処すると、対処の前後で陰影がはっきり変わることを画素の比較で確かめた(サンライトを回したときの明暗反転だけは、再現する構成を確定できておらず検証中だ)。この記事では初心者でも即実践できるテクニックを網羅的に解説する。

目次

なぜBlenderのセルシェーディングで影が破綻するのか?

Blenderでベベル適用後、法線のハード化が無効なため隣接する平面に陰影が波及している状態
自動スムーズを有効にし、法線のハード化を切った状態。ベベルの周りから平面へ陰影が滲む(再現環境で撮影/NVIDIA GeForce RTX 4070 Ti SUPER (VRAM 16GB)・Windows 11 Pro)

根本原因は「物理法則に忠実なPBRエンジン」と「意図的に省略するNPR(非写実的)表現」の思想的対立にある。

Blenderは初期設定で物理的に正しい光の計算を行う。スムースシェード(Smooth Shading)はその典型で、曲面を滑らかに見せる代わりに頂点法線を周囲の面と平均化するため、本来フラットな平面にまで影のグラデーションが波及してアーティファクトを生む。また、EEVEEエンジンはリアルタイム性に優れセルルックに向いているが、ライトの設定次第では半影(ペナンブラ)が出てアニメ特有のくっきりした影にならない。問題を3層に分けて解決することがポイントだ。

【Layer 1】メッシュと法線の最適化——影のアーティファクトを根絶する

ベベル適用後は「法線のハード化」で隣接面を守る

法線のハード化を有効にしたBlenderのレンダービュー。無効時との差はベベル周辺に集中している
同じアングルで法線のハード化を有効にした状態。差はベベル周辺に集中し、実測ではモデル画素の5.1%が最大21%変化した(立方体+ベベル0.15・自動スムーズ30°・540px)(再現環境で撮影/NVIDIA GeForce RTX 4070 Ti SUPER (VRAM 16GB)・Windows 11 Pro)

ベベル(面取り)モディファイアーを適用した直後に黒ずみが出る場合、モディファイアーのプロパティ内「シェーディング」セクションにある「法線のハード化(Harden Normals)」が効く。この設定を有効にするとBlenderはベベル面の法線のみを補間し、隣接する大きな平面の法線は面に対して垂直に保つ。

先に「自動スムーズ」を入れる(2026年8月16日 訂正)

検証環境(Blender 3.6.11 / EEVEE)で確認したところ、オブジェクトデータプロパティの「自動スムーズ(Auto Smooth)」が無効のままだと「法線のハード化」は何も起こさない。自動スムーズを切った状態でチェックを入れ外しして同一シーンをレンダリングし、2枚の画素を比較すると変化した画素は0・最大差も0だった。対照として自動スムーズを有効にしたうえで同じ切り替えをすると、ベベル周辺を中心にモデル画素の5.1%が最大21%変化する(立方体+ベベル0.15/4セグメント・自動スムーズ30°・540×540ピクセル描画での実測。2026年8月18日に測り直し。当初は「約8.8%が最大12.5%変化」と書いていたが、同条件で再現しなかったため差し替えた)。「差が無い」側の測定は、差が出る対照とセットでないと測定器の故障と区別できないため、両方を載せている。本記事は当初「チェックを入れるだけで解決できる」と書いていたが、正しくは「自動スムーズを有効にしてから、法線のハード化にチェック」だ。

「重み付き法線」モディファイアーで全体をクリーンアップする

Blenderの重み付き法線モディファイアーをスタック末尾に追加した状態とレンダー結果
重み付き法線はスタックの末尾に置く。ベベルの後ろならモデル画素の5.1%が変わるのに対し、ベベルより先に置くと0.5%しか変わらない=ほぼ効かない(立方体+ベベル0.15・自動スムーズ30°・540px描画での実測)(再現環境で撮影/NVIDIA GeForce RTX 4070 Ti SUPER (VRAM 16GB)・Windows 11 Pro)

複雑なモデリングやブーリアン演算後に全体的にシェーディングが乱れている場合は、モディファイアースタックの末尾に「重み付き法線(Weighted Normal)」を追加するのがベストプラクティスだ。面積の大きなポリゴンの法線の影響力を強くして頂点法線の向きを自動補正するため、フラットな面は完全に平らに保たれつつ角の丸みだけが滑らかになる。非破壊で全体をクリーンアップできるのが利点だ。なお検証環境で実測できたのは「スタックのどこに置くかで結果が変わる」ところまでで(末尾なら画素の5.1%が変化、ベベルより先だと0.5%=ほぼ効かない)、ブーリアン後のような複雑なモデルで乱れがどれだけ減るかは、単純な立方体では測れていない。

「シャープをマーク」と「面から設定」——手動オーバーライド

特定のエッジだけ影を断ち切りたい場合は編集モードで対象エッジを選択しCtrl+E → シャープをマーク(Mark Sharp)を実行。スムースシェードの影響がそのエッジで停止しアニメ的なシャープな影が生まれる。他ソフトからのインポート時など法線データが完全に狂ってしまった最終手段として、全選択後にAlt+N → 面から設定(Set from Faces)でカスタム法線をリセットして幾何学的に正しい法線を再計算できる。

【Layer 2】EEVEEのライティングを「セルルック仕様」に最適化する

サンライトの「角度(Angle)」を0にする——半影を確実に断つ

サンライトを選択し、オブジェクトデータプロパティの「角度(Angle)」を「0」にすると、光線が完全に平行になり半影(ソフトシャドウ)が原理的に発生しなくなる。セルルックは影の境界がぼけた時点で成立しないので、この設定は入れておいて損がない。

実測: 既定値のままでも半影はほとんど出ない

本記事は当初この既定値を「約11.4度」と記載していたが、検証環境(Blender 3.6.11 / EEVEE)で実測したところサンライトの角度の既定値は0.526度だった。球と床だけのシーンで落ち影の境界の幅を計測すると、角度0度と既定値0.526度の差は540ピクセル中1ピクセルで、見た目では区別がつかない。したがって「既定値のままでは影がぼけてセルルックにならない」とは言えない。角度を大きくすると半影は広がるので、この項目は既定値を直すためではなく、光源を大きくしてしまったときに戻すための設定と理解しておくとよい。(2026年8月16日 実測・訂正)

ポイントライト・エリアライト使用時

ポイントライト等でハードシャドウを得たい場合は「光源サイズ(半径)を極限まで小さく、ワット数を高く」設定する。光源が小さいほど影はシャープになる——これが基本原理だ。

【Layer 3】シェーダーノードで影を数学的にコントロールする

太陽を回すと影の明暗が入れ替わることがある

ライトの方向ベクトルと法線の内積から影を作るトゥーンシェーダーでは、サンライトを回していくと途中で明暗の対応が入れ替わることがある。内積の値は光源の角度に対して単調に増減しないため、ノードの組み方によっては特定の角度を境に明るい面と暗い面が反転してしまう。ターンテーブルやタイムラプスのように光源を回すカットで影が破綻したら、まずここを疑うとよい。

数式ノードで場合分けを挟んで反転を抑える

対処の方向は、内積の値をそのまま使わず数式ノードで場合分けを入れることだ。たとえば「より大きい(Greater Than)・閾値0.5」の出力(0または1)を減算(Subtract)ノードの上側の入力に接続すると、閾値を境に演算が切り替わる。ただし有効な組み方は前段のノード構成に依存するため、この一手だけで必ず直るとは限らない。採用する前に、自分のノードツリーで光源を1回転させて明暗が入れ替わらないことを必ず確認してほしい。

この節は検証中

上記の対処について、検証環境で再現できるノード構成をまだ確定できていない。動作を確認できた時点で、実際のノードグラフを添えて更新する。(2026年8月16日時点)

ハーフランバートで顔の影を半減させる

Blenderのシェーダーエディタで内積とハーフランバートを組み、カラーランプの閾値を下げて明部を広げたノード構成
カラーランプの閾値0.5では明部が約42%、0.35まで下げると約70%に広がる(Suzanne・正面540px描画での実測41.9%→69.7%/明部の数え方で±1ポイント動く)。圧縮そのものでは面積は変わらない(41.8%→41.9%)(再現環境で撮影/NVIDIA GeForce RTX 4070 Ti SUPER (VRAM 16GB)・Windows 11 Pro)
カラーランプの閾値を0.35まで下げ、明部の面積が広がったBlenderのノード構成とレンダー結果
前の画像と同じ構成で、カラーランプの閾値だけ0.35に下げた状態。明部が約42%から約70%へ広がる(Suzanne・正面540px描画での実測41.9%→69.7%)(再現環境で撮影/NVIDIA GeForce RTX 4070 Ti SUPER (VRAM 16GB)・Windows 11 Pro)

通常のランバート反射では球体の下半分50%が影になる——キャラクターの顔に使うと暗くなりすぎる。ハーフランバートは内積値(-1〜1)を0.5倍して0.5加算し、0〜1に圧縮する処理だ。カラーランプは入力を0〜1に丸めてしまうため、生の内積をそのまま渡すと負の側(=影の側)の階調が潰れる。先に圧縮しておくことで、影の境界をカラーランプの閾値で自由に動かせるようになる。

圧縮そのものは面積を広げない(2026年8月16日 訂正/2026年8月18日 測定条件つきで再実測)

検証環境で明部の面積を実測すると、生の内積(閾値ほぼ0)で41.8%、ハーフランバート+閾値0.5で41.9%と、差は0.1ポイントだった。つまり0.5倍して0.5加算する操作だけでは、光の当たる面積は変わらない。面積が動くのはその後にカラーランプの閾値をずらしたときで、閾値を0.35まで下げると69.7%まで広がった。本記事は当初「0.5倍して0.5加算することで面積を広げる」と書いていたが、正しくは「圧縮によって閾値を動かせるようになり、閾値を下げると広がる」だ。

測定条件=モンキー(Suzanne・スムーズシェード)/EEVEE/540×540ピクセル/正面カメラ(位置 0, -4.2, 0・回転 90°, 0°, 0°)/内積に与えた光方向ベクトル (0.86, 0.08, 0.50)/明部=モデルの画素のうちR値が200を超える画素。この比率はカメラ位置と「どこから明部と数えるか」で1ポイント前後動く(同じ画像でも二値化のしきい値を変えると41.7〜43.0%/69.7〜71.1%の範囲で動いた)。絶対値ではなく「圧縮では変わらず、閾値で変わる」という関係のほうを見てほしい。なお同じ条件でレンダリングし直すと画素数まで一致することを確認している(同一構成を2回描いた対照の差は0)。

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加算でカラーランプ前に挿入
UdemyでBlenderを体系的に学ぶ※ 単品購入した講座は条件を満たせば30日以内に返金可・購入前に一部レクチャーを無料プレビューできます
Blenderのセルシェーディングで影が汚くなる一番の原因は何ですか?▼
スムースシェード適用時の法線(ノーマル)の過剰平均化が最大の原因です。特にベベルモディファイアーを使った後に平面へグラデーションが波及するケースが多く、「法線のハード化(Harden Normals)」または「重み付き法線(Weighted Normal)」モディファイアーで解決できます。ただしオブジェクトデータプロパティの「自動スムーズ」が無効だとどちらも効きません(法線のハード化は検証環境〈Blender 3.6.11〉で確認、重み付き法線はBlender 3.6 公式マニュアルの記載)。先に自動スムーズを有効にしてください。
EEVEEでアニメ調のくっきりした影を出すにはどうすればいいですか?▼
サンライトのオブジェクトデータプロパティにある「角度(Angle)」を「0」にすると、光線が完全に平行になり半影が原理的に発生しなくなります。ただし検証環境(Blender 3.6.11 / EEVEE)で実測したところ、角度の既定値は0.526度と小さく、0にした場合との差は影の境界で540ピクセル中1ピクセルでした。既定値のままでも半影はほとんど出ません。
サンライトを360度回転させると影が逆行するのはなぜですか?▼
内積の値は光源の角度に対して単調に増減しないため、ノードの組み方によっては特定の角度を境に明暗の対応が入れ替わることがあります。「より大きい(Greater Than)・閾値0.5」の出力を減算ノードの上側の入力に入れて場合分けする方法がありますが、有効な構成は前段のノードツリーに依存します。採用する前に光源を1回転させて明暗が入れ替わらないことを確認してください。
キャラクターの顔に落ちる影の面積を減らすにはどうすればいいですか?▼
ハーフランバート(Half Lambert)をシェーダーに適用します。内積値(-1〜1)を0.5倍して0.5加算する計算をカラーランプの前段に挿入すると、0〜1に圧縮されて影の境界を閾値で動かせるようになります。検証環境での実測では、圧縮しただけでは明部の面積はほぼ変わらず(41.8%から41.9%)、そのうえでカラーランプの閾値を0.35まで下げると69.7%まで広がりました(Suzanne・正面540ピクセル描画での実測。比率はカメラ位置と明部の数え方で1ポイント前後動きます)。BOOTHの外部シェーダーアセットには、この閾値がスライダーで実装されているものが多くあります。
CyclesよりEEVEEのほうがセルシェーディングに向いていますか?▼
作業のしやすさではEEVEEが向いています。ただし「Cyclesではフラットな影が作れない」わけではありません。検証環境で同じノード構成(内積→0.5倍→0.5加算→カラーランプ「一定」→放射)を両エンジンで描き比べたところ、明部の面積はEEVEEが41.9%、Cyclesが41.7%とほぼ同じで、差は輪郭と影の境界にある約5%の画素に集中しました(Suzanne・540×540ピクセル・2026年8月18日に実測)。つまり出来上がりの絵ではなく、リアルタイムにプレビューしながらノードを詰められるかどうかが選択の理由になります。なお所要時間は計測していないので、このシーンで速度は比べていません。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITインフラエンジニア歴12年、クラウド(AWSがメイン、一部Azure)の実務は4年目(いずれも2026年時点)。社会人向けの3DCGスクールを2026年9月に卒業。Windows 11 + RTX 4070 Ti SUPER の自宅環境で実際に手を動かしながら、インフラ・クラウド・AI・3DCGの技術記事を書いています。

コメント

コメントする

CAPTCHA


目次