第3回: TOPとCHOPとリファレンス

連絡で使うFacebook Messengerのグループを作りたいです!
今日の授業終わりで前にきて登録をお願いします

今回のプロジェクトファイル

TouchDesignerの新しいバージョン (Build 2019.14650) がリリースされました

新機能として

ユニコードのサポート
アルファベット以外の文字が使えるようになりました。日本語も対応しています
物理シミュレーション
3D物理シミュレーションが使えるようになりました。シミュレーションにはBulletと呼ばれるライブラリが使われているため、Bullet Solver COMPActor COMP などそれ用のオペレーターが追加されています
UI機能の強化
今まででもUIは作れていたのですが、さらに使い勝手を高めた Widgets と呼ばれるUI構築の仕組みが導入されました。また、パラメーターの同期の仕組みにも新しい方法が使われるようになる? らしいです
C++カスタムオペレーターのサポート
今までは自作のC++コードをTouchDesigner上で動かすにはプラグインとして読み込みをして使っていましたが、特定のフォルダーにプラグインファイルを入れることでC++のプラグインをカスタムオペレーターとして OP Create Dialog から作成して使えるようになりました。
また、今まではC++プラグインの読み込みは有料版のみの機能だったのが、カスタムオペレーターだと無料版でも同様に使えるようになりました
3D流体シミュレーション
Nvidia Flowと呼ばれるライブラリを使って3Dの流体(煙や炎、水など)のシミュレーションができるようになりました

その他、

などが追加されました。

詳しい解説

色々できそうなのですぐにでも使いたいのですが、あまり安定してないとの話を方々できくので、この授業で使うのはもうすこし落ち着いてからにしようと思います

TOP基礎

前回の授業では CHOP を紹介しましたが、今回はまず TOP の基礎を紹介します。

TOPCHOP と同じく色々な種類のオペレーターがあります。まずは最初に簡単な発光エフェクト(ブルーム)を作ってみましょう。

/project1/TOP_BASIC を開いて下の動画の操作を真似してネットワークを組んでみてください。
最終的なものは /project1/TOP_BASIC/FINAL にあります

発光エフェクトは元になる画像をぼかして足し合わせる手順がよく使われます。TOPの種類で言うと Blur TOPAdd TOP の組合せです。

動画の中で Circle TOP のパラメーターウィンドウから Radius パラメーターを操作して円の半径を変えていますが、前回の授業でもやった通り、数字のパラメーターを変更する時は 中ドラッグ、またはAlt+右ドラッグ を使います。

Add SOP には2つの入力があり、その2つの画像を足しあわせたものが出力されます。

背景の透明な部分(アルファ)がチェック柄で表現されているのでぼけの具合が見辛い場合があります。そういう時はオペレーターを右クリックして、View を選ぶとオペレーターの内容が黒バックの別ウィンドウで表示されます。

光り具合を調整したい時は Blur TOP の後に Level TOP を追加して、Brightness パラメーターを増やすとぼけ画像が明るくなってみやすくなります。

これまでのネットワークで発光エフェクトができるのですが、入力する画像を変えて色々ためしたい時に今のままでは Blur TOPAdd TOP につながっている両方のケーブルを差し替えないといけず不便です。

なので、その間に、とくに機能のない、ただ入力された画像を出力する Null TOP を挟んで切り替えの手間がないようにする、といったことをよくやります。

こうしておくと Null TOP に入力するものを切り替えるだけで、最終的に何を発光させるかを簡単に変更できるようになります。

やってみよう

Circle TOPMovie File In TOP 以外にも画像を生成するオペレーターが色々あります。

などを作って、パラメーターを色々変えつつ光らせてみてください

パラメーターのリンク

パラメーターは、リファレンスという機能を使うと他のパラメーターの値をダイナミックに参照できます。

  1. コピー元のパラメーターを右クリックして、Copy Parameter
  2. コピー先のパラメーターを右クリックして、Paste Reference

とするとパラメーターの値がリファレンスされてパラメーターの文字色が薄い緑になり、コピー元のパラメーターを変更してもコピー先が同じ値をとるようになります。

リファレンスはエクスプレッションと呼ばれる、簡単な計算式やスクリプトをパラメーターとして使う機能を使って実現されていて、me.par.radiusx のような文字列が実態になります

エクスプレッションはPythonと呼ばれるプログラミング言語でコントロールされているので、足し算やかけ算といった演算もパラメーターボックスの中で使うことができます。me.par.radiusx * 0.5 や、 math.sqrt(me.par.radiusx * me.par.radiusx + me.par.radiusy * me.par.radiusy) といったふうに使えます。

やってみよう

↓ の動画を見ながらパラメーターのリンクを使ったネットワークを組んでみてください。
最終的にできたものは /project1/LINK_PARAMETER/FINAL にあります

パラメーターとCHOP

パラメーターの数字はCHOPと相互に変換できます。パラメーターをCHOP化するとCHOPのオペレーター郡で色々な操作ができるのでとても便利です。
パラメーターをCHOP化して、それを再度パラメーターに戻す手順を解説します。

パラメーター → CHOP

パラメーターの数字は Parameter CHOP を使うと CHOP のデータとして取り出せます。

  1. Parameter CHOPOperators にパラメーターを抜き出したいオペレーターを指定します。
  2. Built-In のトグルをONにします
  3. Parameters にCHOPとして取り出したいパラメーターの名前を指定します。ボックス右側の矢印ボタンを押すとパラメーターの名前リストが出てくるので、そこから取り出したいパラメーターを選んでください。

CHOP → パラメーター

CHOP のデータはさきほどの リファレンス と同じようにエクスプレッションで参照されます。

  1. CHOP オペレーターの右下の + ボタンをクリックして Viewer Active モードにする
  2. チャンネル名をクリックして接続したいオペレーターまでドラッグする (マウスカーソルが右向きの矢印にかわるはずです)
  3. オペレーター上にフォーカスしてしばらく待っているとそのオペレーターが選択される(緑色のボーダーがつく。すでに選択されている場合はこの動作は不要)
  4. オペレーターウィンドウの、接続したいパラメーターにドラッグしていってマウスをリリース
  5. ポップアップメニューから CHOP Reference を選ぶ

または、パラメーターにエクスプレッションを手入力します。(慣れてきたらこっちのほうが早いです)

op('オペレーター名')['チャンネル名'] または、 op('オペレーター名')[チャンネル番号]を指定するとCHOPの値のリファレンスが張られます。

やってみよう

↓ の動画ではCHOP化したパラメーターを Lag CHOP ですこし遅らせて、再度他の Circle TOP に適応するという少し応用編のものです。動画を見ながら自分でもやってみてください。
最終的にできたものは /project1/PARAMETER_AND_CHOP/FINAL にあります