vexメモ:循環参照を作るとどうなるか?→予想外な挙動

vexメモ:循環参照を作るとどうなるか?→予想外な挙動

point('op:../../hoge', 'P', @ptnum)

vexではこんな感じで他のノードのアトリビュートが割と簡単に取得できる。ノードをつないでいなくてもできる。多用すると訳が分からなくなりそうだができる。

//HOGEのコード
@P = point('op:../MOGE', 'P', @ptnum);
@P += noise(@P);

//MOGEのコード
@P = point('op:../HOGE', 'P', @ptnum);
@P += noise(@P);

実験でこのように相互を参照させてみる。まだHOGEノードはBypass状態にしてある。

MOGEノードの見た目

HOGEノードのBypass状態を外すと… (クラッシュするのではないかと期待(?))

何もない

何も表示されなくなった?ノードにエラー表示はない。

2つのノードで値は違うが、ポイント座標が1点に集中している。

このように組み替えてみたが、状況は同じである。それぞれのアトリビュート値も同じ。MOGEノードとHOGEノードは位置的に等価だが、アトリビュート値に差異があるのが謎である。

クラッシュしたりエラーが出たりすると気づくのだが、このようにスルーされると複雑なノードグラフで相互参照してしまった場合になかなか気づけずにはまりそうな予感がする。気を付けたい。

spaghetti nodes Previous post Houdiniメモ:循環参照を作るとどうなるか?
Next post PhotoShop:レイヤーの半透明部を完全になくす。