ウェイト付きスキャッター
グレースケール画像の濃さによってパーツを散布する確率をコントロールしたい。もしかしたらそんな機能を持つノードはすでにあるかもしれないが、とりあえず自分は知らない。で、これを Scatter on Sprine を(直接パス・スプラインの機能とは関係ないが)用いて実現でする方法を思いついた。


なんちゃってだが、できたはできたのでメモを残しておく。
なお、Scatter on Sprine ノードの機能についているマスク画像をINPUTする機能は散布されたパーツの有効無効をある閾値で決定するだけだ。確率をコントロースすることはできない。
ノードグラフ
sbsファイルのみgitに上げておく。

処理として簡単で、別の投稿で解説した、簡易ディザ処理を使ってウェイトマップ画像の白い部分が一番複雑にノイズが乗るようにした画像に変更し、


※ここでのポイントはカーブで色の濃さを半分にし(このほうが良くノイズが乗る)カーブ形状も下に丸ませてガンマ値が下がったような状態にする(このほうがウェイトマップに対するスキャッター結果が感覚に近い。)ことである。


これをマスクtoパスノードでパスに変換する。(パラメータ値を塩梅良くするのが若干難しい。)これをセオリー通り、スプライン変換して、Scatter on Sprine ノードで適当な画像をスキャッタリングする。
ここで注意するのは、スキャッターの結果がループテスクチャ状態だと画像の反対側にもしみだしてしまうので、


タイリングをなしに設定してしみだしを抑える必要がある事である。パスもスプラインも上下左右にループしているらしく、マスクからパスに変換した際にもそもそもパスに反対側へのしみだしが見られたが、ここはノードのループ設定をオフにしても修正できなかった。(パスデータは画像内にエンコードされているようなのでそうなるのだろう。)もしかすると場合によってパスノードやスプラインノードの段階で周辺のポイントを削除する必要が出てくるかもしれない。
別の結果例


スキャッターの合成に単純なアルファ合成だけでなく、加算モードも存在した。
考察
タイル系のスキャッターは大幅に密度をコントロールしずらいのでウェイト付きスキャッター自体は便利である。Paths Vertex Processorを使ったらもっと正確・簡潔に実現できないだろうか。


