blender2.81 eeveeのシェーダノードでぼかしシェーダをつくる


ご挨拶

こんにちは

blender楽しんでますか。

私は最近あまりモデリングができていません。

そのかわりシェーダでいろいろ実験していたりします。

ぼかしシェーダ

元ネタはツイッターで見かけました。

ソースは失念しました。

画像の通り、シェーダでぼかしをかけることができます。

このシェーダについて解説していきたいと思います。

解説は2.81で行います。

2.80には実装されいていないノードを使用しますが、2.80用のノードも用意して有ります。

もう待ちきれないよ、早く出してくれ!

解説

理屈としては、マッピングベクトル(UV座標など)をノイズでずらしてテクスチャをランダムサンプリングすることでブラーを再現しています。

ノードグループ入力

こちらがノードグループになっています。

Mapping_Vector 

UV座標や位置、生成座標などテクスチャ・マッピングに用いるベクトルを入力します

Blur_Size 

X軸、Y軸別々のブラーサイズを指定することができます。Z軸は特に反映されません。

拡散用ノイズ生成


ホワイトノイズノードにマッピングベクトルを入力

2つあるのは、ホワイトノイズノードは0~1のグレイスケールの値を出力するので、XY軸で同じノイズを使い回すと、斜め方向に偏るブラーになってしまうためです。

また単に2つホワイトノイズノードを複数用いるだけですと、出力結果が同一になります。

そのため、入力するマッピングベクトルを少しずらしておきます。
(画像のノイズ生成調整のところ)

値を0~1から-0.5~+0.5に調整

生成されたノイズは0~1のグレイスケールのため、そのまま使うとマッピングベクトルをずらす先がプラス方向に偏るため、ブラー結果が右上にずれます。

2つのノイズを数式ノードで0.5減算することでベクトルをずらす先がプラス方向に偏らなくなります。

値をベクトルに変換

2つのノイズをXYZ合成ノードのX,Yに入力してベクトルに変換します。

Zの値は特に設定しなくても良いです。

これで拡散用ノイズの生成ができました。

ブラーサイズの反映

ベクトル演算ノードで拡散用ノイズに対してブラーサイズベクトルを乗算します。

乗算することで、拡散量を縮小・増幅することができます。

マッピングベクトルを拡散ノイズでずらす


マッピングノードのベクトルにマッピングベクトルを入力します。

調整済みの拡散用ノイズをマッピングノードの"位置"に入力します。

これにより、マッピングベクトルが拡散用ノイズによってランダムにずれます。

使い方



マッピングベクトルにブラーをかけてテクスチャノードのベクトルに入力します。

ちょっと応用


ブラーサイズに任意のマスクを入力するとブラーのかかり具合、場所を制御できます。

おわりに

いかがでしたか?

もっといい方法があるかもしれませんね

アドベントカレンダーからお越しの方、それ以外の方の参考になれば幸いです。

よいblenderライフを!

Blender Advent Calendar 2019





コメント

このブログの人気の投稿

blenderでキーフレームを打ったのにアニメーションしないときの解決方法の一例