第3回: TOPとCHOPとリファレンス
連絡で使うFacebook Messengerのグループを作りたいです!
今日の授業終わりで前にきて登録をお願いします
TouchDesignerの新しいバージョン (Build 2019.14650) がリリースされました
新機能として
- ユニコードのサポート
- アルファベット以外の文字が使えるようになりました。日本語も対応しています
- 物理シミュレーション
- 3D物理シミュレーションが使えるようになりました。シミュレーションにはBulletと呼ばれるライブラリが使われているため、
Bullet Solver COMP
、Actor COMP
などそれ用のオペレーターが追加されています - UI機能の強化
- 今まででもUIは作れていたのですが、さらに使い勝手を高めた
Widgets
と呼ばれるUI構築の仕組みが導入されました。また、パラメーターの同期の仕組みにも新しい方法が使われるようになる? らしいです - C++カスタムオペレーターのサポート
- 今までは自作のC++コードをTouchDesigner上で動かすにはプラグインとして読み込みをして使っていましたが、特定のフォルダーにプラグインファイルを入れることでC++のプラグインをカスタムオペレーターとして
OP Create Dialog
から作成して使えるようになりました。
また、今まではC++プラグインの読み込みは有料版のみの機能だったのが、カスタムオペレーターだと無料版でも同様に使えるようになりました - 3D流体シミュレーション
- Nvidia Flowと呼ばれるライブラリを使って3Dの流体(煙や炎、水など)のシミュレーションができるようになりました
その他、
- 色々なカメラが追加で使えるようになった
- FBXやUSDといった3Dファイルフォーマットが読み込めるようになった
などが追加されました。
色々できそうなのですぐにでも使いたいのですが、あまり安定してないとの話を方々できくので、この授業で使うのはもうすこし落ち着いてからにしようと思います
TOP基礎
前回の授業では CHOP
を紹介しましたが、今回はまず TOP
の基礎を紹介します。
TOP
も CHOP
と同じく色々な種類のオペレーターがあります。まずは最初に簡単な発光エフェクト(ブルーム)を作ってみましょう。
/project1/TOP_BASIC
を開いて下の動画の操作を真似してネットワークを組んでみてください。
最終的なものは /project1/TOP_BASIC/FINAL
にあります
発光エフェクトは元になる画像をぼかして足し合わせる手順がよく使われます。TOPの種類で言うと Blur TOP
と Add TOP
の組合せです。
動画の中で Circle TOP
のパラメーターウィンドウから Radius
パラメーターを操作して円の半径を変えていますが、前回の授業でもやった通り、数字のパラメーターを変更する時は 中ドラッグ、またはAlt+右ドラッグ を使います。
Add SOP
には2つの入力があり、その2つの画像を足しあわせたものが出力されます。
背景の透明な部分(アルファ)がチェック柄で表現されているのでぼけの具合が見辛い場合があります。そういう時はオペレーターを右クリックして、View
を選ぶとオペレーターの内容が黒バックの別ウィンドウで表示されます。
光り具合を調整したい時は Blur TOP
の後に Level TOP
を追加して、Brightness
パラメーターを増やすとぼけ画像が明るくなってみやすくなります。
これまでのネットワークで発光エフェクトができるのですが、入力する画像を変えて色々ためしたい時に今のままでは Blur TOP
と Add TOP
につながっている両方のケーブルを差し替えないといけず不便です。
なので、その間に、とくに機能のない、ただ入力された画像を出力する Null TOP
を挟んで切り替えの手間がないようにする、といったことをよくやります。
こうしておくと Null TOP
に入力するものを切り替えるだけで、最終的に何を発光させるかを簡単に変更できるようになります。
やってみよう
Circle TOP
や Movie File In TOP
以外にも画像を生成するオペレーターが色々あります。
Rectangle TOP
Text TOP
Noise TOP
Video Device In TOP
などを作って、パラメーターを色々変えつつ光らせてみてください
パラメーターのリンク
パラメーターは、リファレンスという機能を使うと他のパラメーターの値をダイナミックに参照できます。
- コピー元のパラメーターを右クリックして、
Copy Parameter
- コピー先のパラメーターを右クリックして、
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
のデータとして取り出せます。
Parameter CHOP
のOperators
にパラメーターを抜き出したいオペレーターを指定します。Built-In
のトグルをONにしますParameters
にCHOPとして取り出したいパラメーターの名前を指定します。ボックス右側の矢印ボタンを押すとパラメーターの名前リストが出てくるので、そこから取り出したいパラメーターを選んでください。
CHOP → パラメーター
CHOP
のデータはさきほどの リファレンス
と同じようにエクスプレッションで参照されます。
CHOP
オペレーターの右下の + ボタンをクリックしてViewer Active
モードにする- チャンネル名をクリックして接続したいオペレーターまでドラッグする (マウスカーソルが右向きの矢印にかわるはずです)
- オペレーター上にフォーカスしてしばらく待っているとそのオペレーターが選択される(緑色のボーダーがつく。すでに選択されている場合はこの動作は不要)
- オペレーターウィンドウの、接続したいパラメーターにドラッグしていってマウスをリリース
- ポップアップメニューから
CHOP Reference
を選ぶ
または、パラメーターにエクスプレッションを手入力します。(慣れてきたらこっちのほうが早いです)
op('オペレーター名')['チャンネル名']
または、 op('オペレーター名')[チャンネル番号]
を指定するとCHOPの値のリファレンスが張られます。
やってみよう
↓ の動画ではCHOP化したパラメーターを Lag CHOP
ですこし遅らせて、再度他の Circle TOP
に適応するという少し応用編のものです。動画を見ながら自分でもやってみてください。
最終的にできたものは /project1/PARAMETER_AND_CHOP/FINAL
にあります