dskjal
広告
広告

EEVEE のセルルック技法まとめ

カテゴリ:blender

目次

バージョン 4.2 以降

重要な変更点

シェーダの RGB 化でスクリーンスペース屈折の情報が取得できない

シェーダの RGB 化はレイトレースエフェクトを取得できなくなった。その理由はレンダリングオーダーに関係がある。レンダリングは以下の順番で行われる。

  1. 不透明ディザーマテリアル
  2. 不透明ディザーマテリアルのレイトレースエフェクト(スクリーンスペース反射など)
  3. レイトレース伝播にチェックの入っているディザーマテリアル
  4. レイトレース伝播にチェックの入っているディザーマテリアルのレイトレースエフェクト
  5. ブレンドマテリアル

シェーダの RGB 化の処理は 1. または 3. で行われ、スクリーンスペース屈折は 4. で処理される。よってシェーダの RGB 化でスクリーンスペース屈折の情報は取得できない。

ガラスや伝播マテリアルにブレンドマテリアルが映らない

レイトレースの後にブレンドマテリアルがレンダリングされるので、ブレンドマテリアルはスクリーンスペース反射・屈折に映らなくなった。

描画順を操作するにはブレンドマテリアルのアルファを1以外にする必要がある

アルファが1のマテリアルは描画順に依存せず正しくレンダリングされるようになり、AO も利用できる。なので描画順を操作したい場合はアルファを 0.999 のような値にする必要がある。

ディザーならアルファと AO を両方利用できるが、描画順は操作できない。

バンド状の影や細かいノイズがでる

EEVEE: Shadow terminator artifacts with custom normals #123595

影を無効にすると消える

症状

症状

ソフトシャドウを消す

光源の設定

サンライトは距離減衰がないので使いやすい。

設定場所

設定場所

落ち影にノイズがのる

落ち影にジャギーがでる

光源のフィルターを設定する。ただし落ち影の輪郭はぼける。

半透明の部分にノイズが乗る

影を落とさない

オブジェクト単位

可視性 > レイの可視性 > 影のチェックを外す。

設定の場所

設定の場所

マテリアル単位

マテリアルの「影を透過」にチェックを入れ、ライトパスのシャドウレイを使ってシェーダを切り替える。

設定の場所

設定の場所

マテリアルの「影を透過」にチェックを入れ、ライトパスのカメラレイをプリンシプル BSDF のアルファにつなぐ方法でも可能。

陰の輪郭を滑らかにする効果もある

陰の輪郭を滑らかにする効果もある

マテリアルで影を無効にしたオブジェクトに影をつける

ソリッド化モディフィアをつけて、影を無効にしていないマテリアルをソリッド化メッシュに割り当てる。.blend ファイルダウンロード

関連記事

任意の場所に影を作る

放射の間接照明を切る

以下の3つの方法がある。

マテリアルのレンダー方法をブレンドにする

欠点

レイトレース伝播

利点:ディザーでレンダリングできる

欠点:レイトレース伝播にチェックの入っているマテリアル間では間接照明が有効になる。

トーラスと左のキューブとにレイトレース伝播にチェックが入っている。<br/>レイトレース伝播にチェックの入っているマテリアル間では間接照明が有効になる。

トーラスと左のキューブとにレイトレース伝播にチェックが入っている。
レイトレース伝播にチェックの入っているマテリアル間では間接照明が有効になる。

つまり放射ノードを使っているマテリアルのレイトレース伝播にチェック入れても、スクリーンスペース屈折が必要な半透明オブジェクトは放射ノードの影響を受けてしまう。

外部リンク

EEVEE Next: Is Camera Ray does not work with ray tracing #123644

ブルームがない

ビューポートコンポジターでグレアノードのブルームを使う。

描画順操作

バージョン 4.2 以降はアルファが1のブレンドマテリアルは、描画順操作に影響を受けず正しく描画される。なので、描画順を制御する場合はアルファを 0.999 のような値にする必要がある。

プリンシプル BSDF を使いたいくない場合は、透過 BSDF とシェーダーミックスとを使ってアルファを設定できる。

アルファを設定するノード

アルファを設定するノード

リンク

描画順のコントロール

ブレンドマテリアルの使いどころ

ブレンドマテリアルは光源が大量にあるシーンで描画負荷が高い。なので以下の状況以外では使用しない方がいい。

コンポジター問題

アルファ透過は法線や深度が正しく取得できない。アルファ透過マテリアルの深度や法線を取得したい場合は、旧の EEVEE 同様に、ブレンドと透過とを無効にしてビューレイヤーを使ってレンダリングする必要がある。ブレンドマテリアルは法線が出力されない。

ディザー透過

伝播透過

ディザーで伝播を使って透過すると深度・法線等が正しく取得できる。

アルファ透過

ディザーでアルファを使って透過すると、深度・法線などのパスにノイズがのり、使い物にならない。

アルファ透過でノイズの乗った深度バッファ

アルファ透過でノイズの乗った深度バッファ

ブレンド透過

アルファが1未満のブレンドマテリアルは深度・法線などのパスに出力されない。アルファが1のブレンドマテリアルは深度は出力されるが、法線は出力されない。

外部リンク

Blender 4.2 - EEVEE-Next Feedback

NPR Design #120403

カラーマネジメント

バージョン 2.80 以降はビュー変換の AgX や Filmic が既定値になった。AgX や Filmic はダイナミックレンジが広がるため、フォトリアルなルックでは重要だ。しかしアーティストが直接色を指定するセルルックでは、コントラストの低下や色の変化が起こるため推奨しない。ビュー変換は「標準」にしたほうがいい。

AgX と標準との比較

AgX と標準との比較

ビュー変換の設定

ビュー変換の設定

バージョン 4.2 で Khronos PBR Neutral が導入された。これは高輝度な部分がハイライトのみに限定されるような、ライティングが制御されたシーンで使える。AgX に比べて色の変化が少ないが、色の再現性は「標準」には及ばない。

法線のコンポジット出力

EEVEE はマテリアル出力に色をそのまま出力できる。これは Cycles との互換性がなくなるうえに、コンポジットで法線が取得できなくなる。なのでセルルックであっても放射(Emission)ノードを介することを推奨する。

色をそのままマテリアル出力につなぐと、コンポジットで法線情報が取得できない

色をそのままマテリアル出力につなぐと、コンポジットで法線情報が取得できない

最後のノードに放射ノードではなくプリンシプル BSDF も使える。プリンシプル BSDF はアルファが使えるのが強みだ。プリンシプル BSDF を使う場合はベースカラーを黒にして、スペキュラーを0に設定する。

プリンシプル BSDF のノード例

プリンシプル BSDF のノード例

陰影なし表示

陰影なし表示はカラーマネジメントの設定を無視して表示される。

EEVEE

3Dビューのシェーディングをフラットにして、マテリアルかテクスチャを選択する。この設定はレンダリングに反映されない。

EEVEE のフラットシェーディング

EEVEE のフラットシェーディング

Workbench

照明をフラットにして、カラーのマテリアルかテクスチャを選択する。この設定はレンダリングに反映される。

Workbench のフラットシェーディング

Workbench のフラットシェーディング

ライト

ビュー変換が標準のとき、白のサンライトの強さを4にして、白のマテリアルをレンダリングするとちょうど明るさが1になる。

ライトの設定

サンライトとそれ以外のライト(ポイント・スポット・エリア)では影の生成方法が違う。サンライトはシーン全体をライティングする用途で使われるため、ひとつの光源に対し複数のシャドウマップを使うカスケードシャドウマップを使用して影が生成される。そのためサンライトはGPUのメモリ使用量が多く、描画負荷も高い。

サンライト

サンライトの強みは距離減衰がないこととライトの向きだけで影の形をコントロールできることだ。

サンライトはライトの向きが影の形に影響を与えるが、それ以外のライトはライトの位置も影の形に影響を与える。サンライトでないライトをオブジェクトの近くに配置すると、広い領域が影になるため複数のライトを配置する必要がある。サンライトでないライトをオブジェクトの遠くに配置すると影になる領域は小さくなるが、距離減衰があるため影の領域の調整がシビアになる。加えてオブジェクトから遠いライトはビューポートで選択しづらい。

サンライトの解像度を上げる

影のカスケードサイズをあげ、ライトの角度を0にする。ビューポートのサンプル数を増やすと影にアンチエイリアスがかかる。

サンライトの設定

サンライトの設定

最大距離をシーンに合わせて最適化する方法もある。

上:最大距離 10m<br/>下:最大距離 1,000m(デフォルト値

上:最大距離 10m
下:最大距離 1,000m(デフォルト値

外部リンク

コンタクトシャドウ

EEVEE は影の生成にシャドウマップを使用している。この方法は高速だが、テクスチャの精度の問題で厚みが薄かったりディティールの細かい部分では光が漏れる。コンタクトシャドウを有効にすると、そのような場所でも影を生成してくれる。ただしこれはスクリーン空間エフェクトなので視点によっては機能しないことがある。

コンタクトシャドウ

コンタクトシャドウ

ソフトシャドウ(2.83)

ソフトシャドウを有効にすると影にアンチエイリアスがかかる。

ソフトシャドウの設定

ソフトシャドウの設定

ライトの検出

シェーダから RGB へノードはシェーディング結果を RGB へ変換するためライトの情報は取得できない。しかしライトの色を RGB に割り当てれば3灯までのライトを自在にコントロールできる。

任意の場所にグラデーションの照り返しを追加するにはこの方法しかない。

シーンの設定

シーンの設定

3点ライティングノード

3点ライティングノード

基本

基本

基本

ボケ量をコントロールする

追加で影の位置を、パワーでボケ量をコントロールできる。

ノード

ノード

ライトの色で影の量を変えない

Maintain falloff with different light hue

Shader to RGB をグレースケール化すると、ライトの色によって影の輪郭位置が変化する。これを避けるには HSV 分離ノードの V から明るさを取得する。

ノード例

ノード例

2陰

2影

2影

ミックスを使う場合

ミックスを使う場合

ミックスを使う場合

RGB ノードで色を指定できるようにする

以下のノードのカラーランプの明るさは、明るい順に 1.0, 0.9, 0.8, 0.0 だ。しかし数式ノードでフィルターする場合はガンマ補正が必要になるので、それぞれの値を 2.2 乗した値を数式ノードに入力する必要がある。

RGB ノードで色を指定できるノード

RGB ノードで色を指定できるノード

テクスチャを使う

以下のノードでは陰色の作成に「色相/彩度」を使用しているが、陰色のテクスチャを使うこともできる。

テクスチャを使う

テクスチャを使う

1枚のテクスチャに影色を含める

以下のように上下に色を配置したテクスチャを使い、UV をずらすことで影色を取得する。上下左右を使えば、2影やハイライトなども1枚のテクスチャで表現可能。

テクスチャと UV の配置

テクスチャと UV の配置

2値テクスチャのノード

2値テクスチャのノード

テクスチャで影を制御する

陰になってほしくない場所を指定したテクスチャがあれば、陰が落ちない場所を作れる。マスクテクスチャの画像ファイルの色空間を非カラーデータにするのを忘れないようにする。

マスクがない場合と違い、上面がすべて明るくなっている

マスクがない場合と違い、上面がすべて明るくなっている

マスクテクスチャ例

マスクテクスチャ例

リムライト

テクスチャで影を制御すると同様のノードでリムライトが不要な部分をテクスチャで指定することもできる。

輪郭抽出の補助としても使える。

リムライト

リムライト

フレネルを使う方法もある

フレネルを使う場合

フレネルを使う場合

透過

バージョン 4.2 以降ではレイトレーシング対応により、シェーダーからRGBへノードはスクリーン空間屈折の情報を利用できなくなった

バージョン 4.1 以前の EEVEE は「シェーダーからRGBへ」ノードはスクリーン空間屈折を処理できる。

スクリーン空間屈折を有効にする

スクリーン空間屈折を有効にする

設定例

設定例

描画順のコントロール

アルファブレンドマテリアルの特徴

アルファブレンドマテリアルはほかのマテリアルと以下の点で異なっている。

  1. カメラから見て奥にあるオブジェクトから順に描画される
  2. アルファブレンドマテリアルは他のアルファブレンドマテリアルで隠面消去されない

アルファブレンドマテリアルは他のアルファブレンドマテリアルで隠面消去されないので、描画順を制御すれば奥にあるオブジェクトを手前に表示できる。

バージョン 4.2 以降

バージョン 4.2 以降はアルファが1のブレンドマテリアルは、描画順操作に影響を受けず正しく描画される。なので、描画順を制御する場合はアルファを 0.999 のような値にする必要がある

プリンシプル BSDF を使いたいくない場合は、透過 BSDF とシェーダーミックスとを使ってアルファを設定できる。

アルファを設定するノード

アルファを設定するノード

マテリアルの位置でコントロールする方法

同一オブジェクト内のメッシュはマテリアル順に描画される。なので前後関係のあるメッシュのマテリアルのブレンドモードをすべてアルファブレンドにし、手前に表示したいマテリアルをマテリアルリストの下方に配置することで最前面に表示させられる。必要ならばマテリアルのバックフェイスカリングは off にする。

brow は常に最前面に表示される

brow は常に最前面に表示される

.blend ファイルダウンロード

オブジェクト名で操作する方法

描画順をコントロールしたいメッシュが別オブジェクトの時にこの方法が使える。描画順をコントロールしたいメッシュを以下のように設定する。

  1. 原点を一致させる
  2. マテリアルをアルファブレンドにする
  3. 後から描画したいメッシュをアウトライナ上で下に配置する

アウトライナ内でオブジェクトの位置を変更する方法は2つある。

1. オブジェクト名の頭に 01_ 等の接頭辞をつける

2. アルファベット順にソートオプションを切って、オブジェクトを並び替える

アルファベット順にソート

アルファベット順にソート

オブジェクトごとにコレクションに入れておくと、アウトライナ上での位置をドラッグで変更できる。

もしくは「アルファベット順にソート」オプションを切った状態でコレクション内にオブジェクトをドラッグすると、コレクションの一番下にオブジェクトが追加される仕様を利用して並び替える。

原点を操作する方法

描画順をコントロールしたいメッシュが別オブジェクトの時にこの方法が使える。

アルファブレンドマテリアルはカメラから見て奥にあるオブジェクトから順に描画される。そしてソートの基準となる位置はオブジェクトの原点だ。なので手前に表示したいオブジェクトの原点を前の方へ移動させることで、奥にあるにもかかわらず手前のオブジェクトよりも後に描画できる。

影響の限定の原点にチェックを入れると、原点を操作できる

影響の限定の原点にチェックを入れると、原点を操作できる

後は前後関係のあるオブジェクトのマテリアルのブレンドモードをアルファブレンドにする。

この方法はカメラが後方へ回ると破綻するが、前面に表示したいオブジェクトに位置コピーコンストレイントをつけることで対処できる。ターゲットはカメラ、影響力 0.01 程度、空間はワールド―ワールド。

.blend ファイルダウンロード

透過オブジェクトを隠す

描画順を制御して目を手前に表示したとき、鼻で隠された奥側の目も表示されてしまう。このような場合は、ホールドアウトマテリアルを適用した仕切り板を顔の中に埋め込むことで、奥側の目を隠せる。

動作デモ

動作デモ

.blend ファイルダウンロード

背面法で輪郭線をつけたオブジェクトを透過

反射

シェーダーからRGBへはスクリーン空間反射を編集できないが、環境テクスチャは編集できる。設定方法は、ワールドの「サーフェスを背景」にし「カラーを環境テクスチャ」にする。

環境テクスチャの反射

環境テクスチャの反射

頂点色の取得

属性(Attribute)ノードに名前を指定することで頂点色を取得できる。頂点色をアルファと解釈して、毛先や服の装飾を透過させるといった使い道がある。RGB 分離(Separate RGB)ノードを使えば、頂点色の各チャンネルにさまざまな情報を格納できる。

バージョン 2.81 からは頂点カラーノードを使うことで頂点色を取得できる。

頂点カラーノード(2.81)

頂点カラーノード(2.81)

頂点色を使って透過

頂点色を使って透過

グレースケールの頂点色に色をつける

グレースケールの頂点色に色をつける

頂点ペイント作業を効率化する Vertex Color Master for Blender アドオンがある。

任意の場所に影をつくる

任意の場所に影をつくる方法は任意の場所に影を作るを参照。

輪郭抽出

輪郭抽出は輪郭抽出法まとめを参照。

背景の影響力を消す

メッシュのマテリアルまたはワールドマテリアルに、ライトパスノードのカメラレイか? を適用する。ワールドマテリアルを変更する方法はすべてのマテリアルから背景の影響力を除去できるが、光沢 BSDF 等で環境テクスチャの反射が映らなくなるのが欠点だ。

メッシュのマテリアルを編集する方法

Isolate materials from world color

メッシュのマテリアルを編集する方法

メッシュのマテリアルを編集する方法

ワールドマテリアルを変更する方法

【EEVEE】Blender2.8でトゥーンシェーダーを作る!の続き・背景色の影響を受けないようにする

この方法はすべてのマテリアルから背景の影響力を除去できるが、光沢 BSDF 等で環境テクスチャの反射が映らなくなるのが欠点だ。反射が必要な背景マテリアルがある場合は、個別にマテリアルを設定するか、シーンを分けてレンダリングしてコンポジットで合成する必要がある。

ワールドマテリアルを変更する方法

ワールドマテリアルを変更する方法

手動ライティング

光源のワールド位置をドライバーで設定すると手動で陰を計算できる。ただし影が落ちないことに注意する必要がある

ランバートの計算

ランバートの計算

ハーフランバート

通常のランバートは球の半球がライティングされないので光源を複数用意する必要があった。ハーフランバートは球の全体をライティングするため編集が容易になる。以下のノードは正確な実装ではない。ハーフランバートの正確な式は正規化Half-Lambertを参照。

左:ランバート 右:ハーフランバート

左:ランバート 右:ハーフランバート

ハーフランバートをそのまま使う場合はパワーを追加するとよい。

左:パワーなし 中:パワーあり 右:ランバート

左:パワーなし 中:パワーあり 右:ランバート

Phongの反射モデル

左:Phong 右:ハーフランバート

左:Phong 右:ハーフランバート

ノード

ノード

光沢BSDFでも似た効果が得られる。

左:ハーフランバート+Phong 右:ディフューズBSDF+光沢BSDF

左:ハーフランバート+Phong 右:ディフューズBSDF+光沢BSDF

外部リンク

プロジェクトスタジオQ流 BlenderでつくるアニメCG 第2回:トゥーンシェーダのつくり方(前篇)

Crosshatching with EEVEE










モデル

Abby-chan .blend($0+)

アドオン

無料

GloriaTheAnimator's Ultimate Hair Shader for blender($0+)

【無料】Mugicha-NPR-Shader

有料

Vrtoon Shader For EEVEE($15)

Pure-Comic Shader($20)

Manga Shader for Blender 3.5($10)

Toon & Comic Pack ( 2.8 )($20)

[MN toonshade node] blender用シンプルおてがるトゥーンシェーダ(¥0~¥100)

GloriaTheAnimator's Easy Toon Shader for blender($0+)

Genshin Impact Character Shader for EEVEE($2~$35)

Lightning Boy Shader 2.0($30+)

関連記事

EEVEE の使い方

Blender でセルルックを作る方法まとめ

任意の場所に影を作る

輪郭抽出法まとめ

Blender 記事の目次


広告
広告

カテゴリ