第3回: パラメーターリンクとTOPの2D描画
今日やること
今日は主に、
- パラメーターのリンク
- TOPを使った2Dの描画
の2つのトピックをやろうと思います。
特にパラメータのリンクは非常に重要なので、みんながバッチリできるようにしていきたいです
パラメーターをリンクさせると、オペレーター同士を連携させて動かすことができます。
↑ の例 (/project1/ex1) では、円を描画する Circle TOP を二つ用意して、片方の小さくて赤い円の動きにあわせて、もう片方の白いアウトラインの円の半径が変わるようなセットアップになっています。
最初は Constant CHOP 一度を使って手動でパラメータを調整していますが、一旦セットアップが済むと入力する値は、チャンネル名やサンプル数などの形式が一緒であればどのような値でも同じように動くようになります。
上の動画では最終的に Noise CHOP からの値によって円にアニメーションをつけています。
今日はこのようなセットアップを、何も見ずに自分で組めるようになるのが目標です
パラメーターとパラメーターのリンク (リファレンス)
パラメーターウィンドウの要素は、リファレンス と呼ばれる機能によってリンクさせる事ができます。
手順としては、
- リンク元にしたいパラメーターを右クリック →
Copy Parameterをクリックしてパラメーターをコピー - リンク先にしたいパラメーターを表示して右クリック →
Paste Reference
とするとパラメーターのリファレンスを作れます。
パラメーターのリファレンスは同じオペレーター内でも、違うオペレーターでもリンクすることができます。
データリンク表示
違うオペレーターにリンクを貼るとオペレータ間にデータリンクされたことがわかりやすいように、点線の矢印が表示されます

マウス操作のみでリファレンスを貼る
また、慣れるまで操作がわかりにくいのですが、マウスの操作だけでもリファレンスを作ることもできます。
- ナンバーボックス周辺の何も表示されていない所を左ドラッグすると、マウスのポインタが矢印の形になります。
- マウスをドラッグしたまま、リンク先にしたいオペレーターまでポインタをもっていくとそのオペレーターがフォーカスされて、内容がパラメーターウィンドウに表示されます
- リンク先にしたいオペレーターまでマウスをもっていくと、ポインタが矢印に+アイコンがついたものに変化するので、その状態でマウスを話すとドロップダウンリストが出てきます
Relactive Channel Reference、またはAbsolute Channel Referenceを選ぶとリファレンスが貼れます
リファレンスとは
さて、リファレンスの作り方はわかったのですが、結局リファレンスとは一体何なのでしょうか…
オペレーターによって多少表示は違うのですが、パラメーターウィンドウのパラメーターの周辺をクリックしていると表示が増える部分があります。
その中の、薄い緑色で表示されている所がリファレンスの正体です。TouchDesignerでは、リファレンスは**エクスプレッション(Expression)**と呼ばれる仕組みで実現されています。
エクスプレッションは、短かい簡単なスクリプトを記述、実行できる仕組みで、デフォルトの設定では Python言語 で書かれます

例えば、constant1 の value1 の所には me.par.value0 と書かれています。これは、オペレーター自身の、value0の値を参照せよ、という記述です。
また、constant2 のvalue0には、 op('constant1').par.value0 と書かれています。これは constant1 の、value0の値を参照せよ、という記述になります。
このような、me や op を使った指定の仕方は頻繁に出てきますので、ぜひ覚えておいてください
簡単なTOPの説明

TOP は、二次元の画像を扱うオペレーター (Texture OPerator) です。Photoshopのように、ピクセルデータを扱います。
/project1/top の中にいくつか例を上げておきました。
詳しくはネットワークをいじりながら解説
TOPの注意点
TOPで扱うデータは画像なので、解像度 に気をつける必要があります。

Circle TOPや、Rectangle TOP など、それ自身が画像を生成するタイプのオペレーターの場合、そこで指定した解像度が後のネットワークの解像度がを決定してしまいます。
解像度を指定できるオペレーターの場合、パラメーターウィンドウの Common > Resolution からピクセル単位で解像度を指定できます。

何か解像度が変だな… と感じたら、オペレーターをマウスの中クリックすると出るインフォーメーションや、オペレーターを右クリック > View で見られるプレビューウィンドウを見て確認するようにしましょう。
また、無料版のTouchDesigner (Non-Commercial版) の場合、TOPで扱える解像度が 1280x1280px までに限定されています。それ以上の解像度を扱いたい場合はライセンスを購入する必要があります…
CHOPとパラメーターのリンク
では次にCHOPの値をTOPのパラメーターにリンクさせてみましょう。
↑ の動画では、Mouse In CHOP で取得できるマウスの座標を Circle TOP の中心座標にアサインしています。
CHOPからパラメタをアサインする方法ですが、マウス操作を使う方法と、エクスプレッションを手打ちする方法があります。
マウスを使う方法
- パラメタを使いたいCHOPのオペレーター右下の
+ボタンをクリックして、Viewer Active状態にします。 - マウスをオペレーターのチャンネルの上に持っていくと背景が緑色になるので、そこで左ドラッグして設定したいパラメーターまで持っていきます。
- 設定したいパラメーターの上でマウスを離すとドロップダウンメニューが出てくるので、
Relactive CHOP Referenceか、CHOP Referenceを選択します
Relactiveかそうでないかのどちらにするのがいいかは、授業のもうすこし後のほうで解説したいと思います。とりあえずRelactiveのほうがよく使うので、迷ったらRelactive、という感じでOKだとおもいます :ok:
エクスプレッションを使う方法
こちらに関しては特に説明はあまりいらないのですが、op('使いたいオペレーター名')['使いたいチャンネル名']、または、op('使いたいオペレーター名')['使いたいチャンネル番号'] を手入力することでリファレンスが貼れます。
マウスとエクスプレッションのどちらを使ったらいいかに関しては、最初はマウスを使った操作のほうがわかりやすいと思います。
ただ、マウスを使うとどうしてもオペレーションミスなどがおきがちなので、慣れてきたらエクスプレッションを手入力の方法も試してみるといいかもです。
音を解析する

/project1/analyze_audio に音を解析するサンプルをいくつか入れてあります。
TouchDesignerで音を解析するには、大きくわけて Analyze CHOP で音量のピーク、RMSを取るか、Audio Spectrum CHOP で帯域ごとの音量 (FFT) を取るかの二種類があります。
解析したデータをどういうふうに使うかという話になりますが、瞬間的な変化を印象づけたい時はピーク/RMS、倍音などの音のキャラクターや低音、高音のコンポジションなどを可視化したい場合はFFTを使うことが多いです。
詳しくはネットワークをいじりながら解説