今回は数字を扱うオペレーターの CHOP の勉強をしていきます!CHOP では音のデータや、センサーやデバイスからの数値を取得して扱うこともできます。音のデータなどについては今後勉強することになっていますので、今回はよく使われる CHOP をいくつか見ていきましょう。
サンプルファイル
chimanaco/takara-univ-media-programming-2023
03が本日のディレクトリです。
Project Folderの作り方
本題に入る前に Project Folder の作り方をご紹介します!作業の仕方にもよるのですが、自動でアセット用のフォルダを作成してくれて小規模なプロジェクトには便利な機能です。
File > Create Project Folder を選択します。Path は保存場所を指定します。 Project Folder の欄では任意のプロジェクト名をつけます。名前は何でもいいのですが、特になければ第3回なので Day3 にしましょう。Media Folders の全てにチェックボックスを入れて、Createをクリックすると、Project Folder が作成されます。オーディオファイルや画像などのアセットはこちらに格納するようにしてください。
課題を提出する際にはこの Project Folder ごとアップロードしてください。 このような構成にしておくと、他の人にプロジェクトファイルを渡した時に、ファイルへのパスが切れて意図通りに表示されなくなってしまうのを回避できる可能性が高くなります。
Switch TOP with CHOPs
Switch: /project1/Switch
CHOP の勉強に入る前に Switch TOP を用意します。SwitchTOP は入力された TOP に対して index に合致するものを出力します。TouchDesigner での index は0から始まり、0が1つ目の入力になります。 この0から数えるというのは TouchDesigner に限らずプログラミングでよく使うので、今後別の場面でも使うことがあると思います!

Blend between Inputs を ON にして float(32ビット長の浮動小数点数)の値を入れるとインプットをクロスフェードすることができます。

Switch Multi: /project1/Switch_multi
SwitchTOP の入力部分を見てみると Multi-input であることがわかります。つまり何個でも入力として TOP をつなぐことができます。

Switch Constant: /project1/Switch_constant
ここから CHOP を使って index を変化させていきます。まずは ConstantCHOP を使って固定の値を入れてみます。後で変更しやすいように NullCHOP を使うのを忘れないようにしましょう。

Switch Auto1: /project1/Switch_auto1
今度は自動で index が変化するようにしてみます。 LFO CHOP
と Math CHOP
で SwitchTOP の index をアップデートしていきます。Math CHOP の To Range を 0 から 5 に設定します。

Switch Auto2: /project1/Switch_auto2
LFO CHOP と Count CHOP
で SwitchTOP の index を変化させる方法です。Count CHOP は入力した値からルールに沿ってカウントするのに使います。ここでは入力している TOP が5個なので、ループさせるために Limit を Loop Min/Max、Limit Maximum を 4 としています。

Switch Keyboard: /project1/Switch_keyboard
Keyboard の押されたナンバーキーにより index を変化させる方法です。Keyboard の 入力を取得するには Keyboard In CHOP
を使います。
ここでは 0-4 のキーを使いたいので、Keys に 0 1 2 3 4 と半角スペースで区切って入力しています。

FanCHOP
を配置して KeyboardCHOP とつなぎます。Operation を Fan In に設定します。こうすることで複数のチャンネルの中から ON になっているチャンネルの index を表示させることができます。

これでキーボードで何も押していない時及び 0 のキーを押している時 index 0 の画像を、1-4のキーを押している時それぞれ index 1-4 の画像を表示することができます。
CHOP でのクロスフェードの一例
Cross: /project1/Cross
CHOP にも Switch CHOP
があり、Switch TOP と同様の挙動をしますが、Blend between Inputs がなく単体でクロスフェードをすることができません。クロスフェードは Cross CHOP
で実現することができます。

Noise
Noise: /project1/Noise
Noise CHOP を使うと、様々なノイズのアルゴリズムから波形を生成することができます。

Mouse input
MouseIn: /project1/MouseIn
Mouse In CHOP を使うとマウスでの入力を取得することができます。

Clock
Clock CHOP を使うと現在時刻を取得することができます。

Logic
Logic CHOP は条件に従って真偽(0か1)を返します。特定の時刻になった時に何かする、というのに使えます。


本日の課題:Clock CHOPを使って時計を作る
Clock CHOP を使用してアナログ時計を作成してください。.toe ファイルを Teams に提出してください。使用した画像や動画などあればそれもアップしてください
時計参考: /project1/Example

以下秒針の作り方の参考になります。まず、ClockCHOP に SelectCHOP をつなぎます。Channel Names のところに sec と入力して sec のみを取得します。

MathCHOP を SelectCHOP につなぎます。From Range を 0,60 とし、To Range を 360, 0 にします。こうすることで60秒で360度回転する値ができます。NullTop につないでおきます。

RectangleTOPで Size を変更して秒針っぽくします。centery のところに me.par.sizey/2といれると sizey の値の半分上にずれた値が中心となり、秒針のように先端が中心となって回転させることができます。

TransformTOP を RectangleTOP とつないで、Rotate に null1 の値をドラッグ&ドロップして参照を作成します。

時針や分針も同じやり方で追加できます。これに何か組み合わせて作ってみてください!