GAME CONTROLLERで色々コントロールすSynthを作っていると、ボタンを押すと複数のパラメータをいちどに変更したい場合がある。JackOlanternのアップデートでライトのON/OFFの機能を付けて、顔の穴だけを真っ黒な画面に浮かび上がらせたいな・・・と思ったので、色々試して、今回はこんなCHOPを構築した。
シーンにライトは2つ。アンビエントライトが1つ、キーライトが1つ。それぞれのemitのRGP値を0にすると、くりぬかれた穴の部分以外は真っ黒に描画される。ライトが明るい時、アンビエントライトのemit値はRGBともに0.25、キーライトのemit値はrgbともに1.0となっている。今回はrgbとも同じ値にパラメータが変更すればよいので、ボタンを押すと、1.0~0、0.25~0のブレンドアニメーションがスタートすればよいということになる。
ボタンの数値の取り方は、こちらの方法でToggle化している。ボタンのチャンネル値が0の場合、ボタンを押すと、値を1に変更、さらにボタンを押すと0に戻るという挙動が設定されている。
ライトのON/OFFは序々に点灯・消灯するように、Lag CHOPを追加する。これで。0or1のチャンネルが0~1のバリュー変化を持った、チャンネルにフィルタリングされる。
ON/OFFのパラメータはConstant CHOPで設定している。(ネットワークではON、OFFという名前で設定されている。)light1_Val、ambient_Valという2つの単一チャンネルが設定されている。
Blend CHOPでLag CHOPからのチャンネル値をインデックスとして、ONとOFFのパラメータ値をブレンドしている。ONの設定が最初に入力されているので、Lag CHOPからのチャンネル値が0の場合、light1_Valは1、ambient_Valは0.25というチャンネル値が出力される。Lag CHOPからのチャンネル値が1の場合、light1_Valは0、ambient_Valは0というチャンネル値が出力される。Lag CHOPからのチャンネル値が0.5なら、それぞれのチャンネル値はブレンドされて、light1_Valは0.5、ambient_Valは0.125といったチャンネル値になる。