特定カラーでマスクを作る:SubstanceDesigner

特定カラーでマスクを作る:SubstanceDesigner

※ 機能追加更新されました。

ノード概要

特定の色に近い部分だけを抜き出してグレースケールマスクを作成できるノードを作成した。マスクのぼけ幅やどのくらいの色の近さをマスクにするかは調整できる。

利用例

指定した色に近い部分を他の色に置き換える

PhotoshopのようにHSL調整時に調整の有効範囲を作れている。

特定の色部分を発光させる

輝度が近くない部分をマスクで抽出し、ぼかして加算する事で発光を表現した。

その他特徴

第二入力は単独カラーを想定してはいるが、実際は任意の画像を使う事が可能である。対応する位置で色が近いとマスクになる。2つの画像の差分を出すのに使える。

ノードパラメータ

マスクの反転、RGBで色の近さを図るかHSVで測るかの切り替え、色の距離の閾値(どのくらい色が近いとマスクとするか)、マスクのぼけ幅、各要素の重みづけ、が可能。

各要素xyzはRとGとBもしくはHとSとVを示し、0にするとその要素は色の近さの計算に扱われなくなる。たとえばHSVモードでHとSを0にすると、V(輝度)の近さだけでマスクが生成されることになる。

内部構成

全体構成は簡潔なので割愛、ピクセルプロセッサー内だけ複雑なので詳細を記しておく。

XYZ要素の3次元空間の距離をもってして色の距離とする。この実際の色の距離を各要素の計算割合で決定した全体距離で割り、閾値でマスク判断する色の距離とする。マスクのぼけ幅が0の時はマスク値は1か0のどちらか、 ぼけ幅がある場合、いきなり0とならずぼけ幅分を線形に減少して0になる。

※ 右に3つある謎のシーケンスノードはノードグラフの計算結果をいったん変数に代入する際に使われるもの。

ダウンロード

https://github.com/logicalmodelin/LGMLtools/tree/75af5fa47720c28a96133a1bc96dd735f905c7cf/blog2023/blog20231109_color_by_mask

LGML_mask_by_color.sbs と LGML_mask_by_color.sbsar が今回作成したもの。

LGML_mask_by_color.sbsに含まれるテスト&デモ用のグラフで下記の投稿で述べた自作ノード(LGML_hsl_adjuster.sbsar)を使って依存している。LGML_mask_by_color.sbsar自体は他自作ノードへ依存はない。

Previous post 重みつきHSLフィルター#2:SubstanceDesigner
Next post いらすとやっぽい加工(もできる)ノード作例:SubstanceDesigner