複数入力から変化したものを出力

image141123_01以前投稿したGate風パッチの逆バージョンみたいなものです。複数のロジック結果を繋げて結果のアップデートが発生したらその値を出力します。 image141123_02

サンプルのロジックはこんな感じです。入力をまとめてスイッチングするのはSwitch CHOPでできますが、切り替えるためのIndexパラメータの数値を求めるために上部のロジックを組むのが課題です。

image141123_03入力した値が変化したかどうか、Logic CHOPを使用します。Convert InputパラメータをOn When Value Changedに設定すると、入力値が変化した時のみ1を出力します。 image141123_04

merge CHOPでまとめたLogic CHOPの結果にFan CHOPを追加します。OperationパラメータをFan Inに設定します。3つの入力値でどの入力が1を出力したか、0~2のインデックス値で出力します。

image141123_05Logic CHOPのチャンネルはパルスなので、Hold CHOPで入力値が変化した瞬間の値をホールドします。Sampleパラメータを Off To Onに設定します。が、このままでは、インデックス0の値が変化しても、Fan CHOPの出力結果が0であるため、変化したのかどうかこれだけでは判定ができません。 そこで、Hold CHOPの2番目の入力であるInput 1 Triggerを使用します。この入力に1が入ると、入力値のホールドをSampleパラメータの基準で行います。これだと、入力1が結果的に0であっても、ホールドされる出力値が0になるため、結果的にどの場合でも意図したインデックスが出力されることになります。 image141123_06

トリガーチャンネルはLogic CHOPをMath CHOPでまとめて、Combine CHOPsパラメータをMaximunに設定します。入力するLogic CHOPの値は度の入力からも0 or 1なので、結果的にどれか1つでもLogic CHOPの結果(数値が変化したかどうか)が1になると1が出力されてトリガーONになります。

Download TouchDesigner File