親オペレータの名前からID番号を取得する

オペレータをまとめたBase COMPを複製し、それぞれのオペレータで挙動を変える場合に、各COMPの名前からID番号を取得し、それを元に挙動を変える方法。

例えば、次の様な同じ内容の持つBase COMPを持つプロジェクトを作る。

複製するCOMPは、”item1″,”item2″と命名し、接尾に連番をつけている。(itemN)

item1を開くと、次の様なネットワークになっている。

概要としては、2つのConstant CHOPの値をSwitch CHOPで切り替えて、out CHOPで出力している。Switch CHOPのプロパティで、親オペレータの名前の接尾の数字をIDとして、取得し、偶数か奇数かを判別、偶数だったら1(constant1の値)、奇数だったら-1(constant2の値)を選んでいる。


switch1のプロパティを見ると、indexの項目に、expressionが入っている(水色になるモード)。

me.parent().digits%2

これは、pythonのコード。me.parent()で親ノードの参照を取得できる。取得した名前から数字を参照するのがdigits。それの2で割ったときの余割(割ったときの余り)を出して、偶数か奇数かを判別している。

item2も同じ内容になっており、こちらは偶数なので1を出力されるようになっている。

これを応用すると、ID毎に座標を変えたり、大きさを変えたりなどの挙動を変えることができる。

サンプルtoe
https://github.com/arkwknsk/touchdesigner/blob/master/tips/digits/digits.toe

Please follow and like us: