SubstanceDesigner:関数グラフでローカル変数を使う その1

SubstanceDesigner:関数グラフでローカル変数を使う その1

SETノードの謎な挙動

一つの関数グラフ内でローカルな変数を設定して使う事ができるという。しかしちょっと使い方に癖があったのでメモを残す。

これ ↑ はpixel processor 内に書いた関数グラフで、真っ白が出力されるかと思ったが黒だった。なぜか。

これ ↑ は白になる。

これ ↑ は白にならない。

要は出力ノードに至るまでの間に確実にSETノードが評価(実行)されていなければいけないらしい。SETしておくだけで、評価されない流れでもGETの選択肢には現れるので注意だ。

なお、キャプチャ画像を取り忘れたが、変数は上書き設定できた。

Sequenceノードを使う

ここで謎なノードであるSequenceが役に立つ。これは第一インプットのノードグラフを一度評価してから、改めて第二インプットを評価して、第二インプットを出力とするというものらしい。

この方式で書けば、ノードグラフで何度も参照する値を変数に確実に入れて処理を行えるので、ワイヤーがやたらめったら伸びることもなく整理されたグラフが書ける。

これは、現在の解像度における1ピクセルの大きさを_dx, _dy変数に設定して(先頭にアンダースコアをつけているのはローカル変数ぽさをだしたいから)、それを元に外部入力px分だけ左斜め上に画像を移動するノードグラフである。ワイヤーが斜めに伸びずに非常にきれいなグラフになったと思う。

このようにきちんと動く。

なお2つの変数を設定するために、Sequenceを二回使っている。要は確実に評価されればいいので、この部分は以下のようにベクターにまとめてからSequenceに入力してもうまく行った。

続く

関数をまたいだローカル変数設定の話に続く。

ダウンロード

続き側のサンプルも併せて以下に置いておいた。sbsのみ。

https://github.com/logicalmodelin/LGMLtools/tree/8a9ce036cffa69c57016e7708d16b5a1675d6d77/blog20221127_localvar_in_funcgraph

この記事を参照している記事

コメントを残す

Previous post Substance Designer: イラストチャレンジ 悪魔人形
Next post SubstanceDesigner:関数グラフでローカル変数を使う その2 関数グラフ間で共有