この記事では黒くにじまないブラーノードを自作する方法を紹介します。
『Pixel Processor』を使用していますが、抵抗感を持たずに読んでいただけますとありがたいです!
対象読者
・エフェクトデザイナー
・テクニカルアーティスト
・Substance 3D Designer を学習中の方
環境
・Substance 3D Designer 14.0.0
目次
前提:標準のブラーノードの挙動

例えば『Blur HQ Color』では、⇑ のようにブラーをかけると黒く滲んでしまいます。

【Blend のカラー情報】
アルファの部分のカラーが黒です。
ブラー処理では “アルファ = 0” の色情報も参照しているため黒くなりがちです。
自作するノード
まずは “黒くにじまない”『Directional Blur』を作成していきます!
理由としては、ブラー系ノードの内部で『Directional Blur』が使用されていることが多いからです。
例えば『Blur HQ Color』の中身は以下のようになっています。

【Blur HQ Color の中身】
合計8つの『Directional Blur』で構成されています。
それぞれが別角度にブラーをかけることで16方向の円形にぼやけるブラーができます。
黒くにじまない『Directional Blur』を作成

【全体像】
すべて『Pixel Processor』で処理を行います。
処理内容としては指定方向に沿って複数のピクセルをサンプリングし、それを平均化しています。
While Loop

【Adobe 公式 Youtube – While Loops in Substance 3D Designer -】
『While Loop』が処理の核です。
このノードを使用することで処理を繰り返し行うことができるため、「ノード数の削減 + 可読性の向上」に繋がります。
また、Function node では珍しくパラメーターがあります。

【While Loop のパラメーター】
・ループ回数が「Max. iterations」に達したら、終了条件に関係なく処理が停止。
・ “-1” に設定することで終了条件のみで停止する。
基礎設定

『While Loop』の1番上に入力した処理がループ処理の開始前に計算されます。
そのため、変数設定を行っています。
また、真ん中の入力が終了条件です。
今回は32回ループするように設定しています。
メイン処理

サンプル距離
1 / “loop_count” | ループ回数がいくつであってもブラー距離が変わらないようにする。 |
× 0.0039 | 標準の『Directional Blur』と移動量を合わせる。 |
× “intensity” | ユーザーの操作によってブラーのかかる距離を変更。 |
× “i” | ループ回数が多いほど遠くにサンプル。 |
回転
ユーザーの入力(angle)に応じてブラー方向を変更。
サンプルして加算
- 指定の方向に移動させてサンプル
- アルファの濃さに比例してカラー情報が残るように加工
- “正” と “負” の2つの方向に移動した画像を加算
- これまでのループで加算された画像とさらに加算

【offcet color の中身】
カウンター
反復処理では必須の処理です。
『Sequence』と組み合わせることで画像処理とは別に計算します。
値を適正値に処理



【元画像】
【While loop までの結果】
ループ処理で加算が繰り返され、現状は値が極端に大きくなっています。
そのため「カラー」と「アルファ」が “0~1” の範囲内に収めます。
カラー | アルファで除算。もともとアルファを考慮した出力結果で加算しているため、 |
アルファ | 加算した回数分除算し、平均化する |
黒くにじまない『Blur HQ Color』を作成


【Value processor の中身】
- 8つの黒くにじまない『Directional Blur』をつなぐ
- 角度を 22.5 ずつ変える(180 / 8 = 22.5)
- 標準の『Blur HQ Color』とブラーの範囲がおなじになるように、「intensity」を調整
アルファ抜きの Tips

アルファ抜きする場合は『Alpha Merge』の使用を推奨します。
『Blend』を使う場合は、以下のように設定することで画像に余計な黒が入らないです。

まとめ
黒くにじまないブラーノードを自作する方法を紹介しました。
『Pixel Processor』を使用することで、Substance 3D Designer の作業を「改善 + 効率化」できます。
本題と合わせて、ノードを自作することのメリットについてもお伝えできていましたら幸いです。