第四回

TouchDesigner 新リリースバージョン

新しいリリースバージョン (2018.22800) が出ました! 色々よくなっています

今日やること

今日は、

をやろうと思います。

本日のtoeファイル

先週のおさらい

先週はパラメーターリンクの方法と、TOPを使った簡単な描画の授業でした

先週のおさらいとして、↓ の動画のような、マウスについてくる目を描画するネットワークを組んでみてください

答えあわせは、/project1/link_parameter

DAT

DAT (DATa operator) では、文字や、文字のリスト、テーブルを扱うことができます。

/project1/text_and_table を参照

Text DAT と Table DAT

文字を書き込めるオペレーターが Text DAT、列と行を持ったテーブルを作れるのが Table DAT です。

両方とも、Viewer Active 状態にするとTouchDesignerのネットワーク上で直接編集することができます。

Viewer Activeのショートカット

オペレーターを選択して aViewer Active状態の On/Off を切り替えることができます

マウスの位置に注意! キーボードの入力はマウスが乗っている所によって動作が違います。
オペレーター上にマウスが乗っていると意図した動作にならないので、選択した後、必ずオペレーター上からマウスをどけて、ネットワークビューの何もない所に乗っているのを確認してからキーボードを押すようにしましょう。

このショートカットはDATに限らず、全てのオペレーターで使えるので覚えておくと非常に便利です

Table DATの行、列要素を増やす

Table DATViewer Active状態の時に行番号表示されている部分をクリック > Add Above, Add Below すると行を増やすことができます。同様にして、列番号が表示されている部分をクリック > Add Before, Add After で列を増やすことができます

Pythonスクリプトの実行

DAT に書き込まれた文字列を使って Python言語 を呼び出すことができます。

/project1/print_channel_data を参照

以前の授業で、パラメーターリンクを実現するためにPythonのエクスプレッション(短いコード)が使われていると言いました。本当にそうなっているのか、Pythonのスクリプトを実行して試してみましょう

Textport and DATs ウィンドウの表示とPythonスクリプトの実行

まず、Pythonのスクリプトを実行する前に実行した結果を表示するためのウィンドウを表示しましょう。TouchDesignerのウィンドウの上部、またはメニューバーから、Dialogs > Textport and DATs をクリックして Textport ウィンドウを表示してください

Textport ウィンドウにすでに何か色々と表示されている場合は、Clearボタンをクリックして表示されている内容を消去してください。

自分でPythonのスクリプトを実行する前には Clear ボタンを押して内容を消しておくと、自分の書いたスクリプトがどういった出力をしたのかがわかりやすくてオススメです

ちなみに、Textport ウィンドウにもPythonのコードを書き込んで直接実行させる事ができます。

ためしに一番わかりやすいPythonの機能である、print 関数を呼んでみましょう

たとえば、

print(10)

と打ち込んでリターンキーを押すと、10が出力されます。

同様にして、文字列をプリントしてみましょう。
Pythonでは文字列はクオーテーションマーク ( ' や、 " ) でかこむ必要があります。

print('hello')

と打ち込んでリターンキーを押すと、helloと出力されます。

チャンネルデータをプリントする

では、次にチャンネルのデータをプリントしてみましょう。

Pythonのスクリプトは Text DAT からでも実行できるので、今回はそちらで実行してみます。

スクリプトを実行するには、Viewer Active状態で Text DAT の文字列を変更した後、オペレーターを右クリックで Run Script を選ぶと実行されます

なのですが、Run ScriptViewer Active がオンの状態だと実行し辛く、(text1などと表示されている所を右クリックしないと出てこない) 普通はショートカットである Command+r 又はWindowsの場合は Ctrl+r で実行する事が多いです

↑ の動画では、constant1value0 をプリントするために、

print( op('constant1').par.value0 )

というスクリプトを実行しています。チャンネルの数字と、実際にプリントされた数字が同じである事が確認できると思います。(場合によって、小数点以下の数字が全く同じでない時がありますが、それを話し出すと結構長い話になります。四捨五入してある程度近ければOKという心が大切です)

absTime.seconds

エクスプレッションで absTime.seconds をよく使うという話を前回しました。これは、TouchDesignerが起動してからの経過時間を取得できるものです。

https://docs.derivative.ca/index.php?title=AbsTime_Class

↑ の動画では、チャンネルデータで指定した absTime.seconds と、直にエクスプレッションで記述した absTime.seconds が同じ値を出力されている == 同じ内容である ということを示しました

Pythonからパラメーターを変更する

これまで op('constant1').par.value0 といった指定でパラメタの値を参照してきましたが、そこに op('constant1').par.value0 = 10 といった形で値を代入することでパラメタを変更することもできます

/project1/update_parameter_by_python を参照

Timer CHOPでエクスプレッションを定期的に実行する

/project1/timed_expression を参照

オペレーターの中には、何かイベントが発生した時に呼ばれるDATがついてくるものがあります。Timer CHOP がその好例です。
オペレーター右下にある のボタンをクリックすることでイベント記述用のDATを開くことができます。

Timer > On Done のパラメーターを Re-Start にすると、Pythonのエクスプレッションを定期的に実行することができるようになります

↑の動画では、onDone関数の中を以下のように編集しました。

def onDone(timerOp, segment, interrupt):
	print(absTime.seconds)
	return

Pythonでは、インデント(タブやスペースで行の頭をそろえる事) が重要な意味を持ちます。また次の授業で詳しくは解説しますが、必ず TAB キーで行をそろえるようにしてください!

また、/project1/update_parameter_by_python2 には、タイマーを使ったネットワークの例がいくつかあります

Text DATを他のText DATから実行する

/project1/run_text_dat を参照

Text DAT は、 op('text1').run() のようなエクスプレッションによって他から実行することができます。

これは、ある程度複雑なことをする時に、考えなければいけないスコープを小さくするのに役立ちます

me.digits

/project1/me_digits を参照

エクスプレッションの中で me.digits を使うと便利な事があります。

me.digits は、自オペレーターの名前の最後の数字を取得できる機能ですたとえば、text1 という名前のオペレーターのパラメタで me.digits を使うと1が、text100ならば100 が帰ってくるといった具合です

TouchDesignerでは、オペレーターをコピー&ペーストで増やすと自動的にオペレーター名末尾の数字が増える仕様になっているので、DATCHOP などを使って上手くネットワークを組むとコピペするだけで半自動的に内容にバリエーションのあるネットワークを組むことができます

宿題

今までやってきたものを使って、簡単なプロジェクトを作ってきてください!

来週の授業の最初のほうにみんなで見たいとおもいます。(評価の対象にはならないので、ものすごい頑張らなくても大丈夫です)

/project1/example にいくつか作例があります

質問などあれば satoruhiga@gmail.com まで

それから、次回からの授業で使うので、TouchDesigner 2018.22800 と、Visual Studio Codeをインストールしておいてください

Operator Snippets

TouchDesignerのウィンドウの上部、またはメニューバーから、Help > Operator Snippets をクリックすると、各オペレーターの説明を閲覧することができる、Operator Snippets ウィンドウが開きます。

選択しているオペレーターの項目に自動で移動してくれるので、ヘルプ的な使い方もできるかと思います。意味がよくわからないオペレーターがあったら色々と見てみてください