第16回: UI
今回の授業では、TouchDesignerでUI(ユーザーインターフェイス) を作る方法を紹介します。
TouchDesignerは映像やインスタレーションの機器コントロールによく使われる環境ですが、オリジナルのアプリケーションと言えるレベルにまでGUIを作り込むこともできます。
たとえば ↓ はageHaなど色々なクラブでレギュラーでVJをされている NOBUAKI KAZOE さんのTouchDesigner製VJシステム
Panel要素
TAB キーを押して出てくる OP Create Dialog の COMP タブの中に Panel のカテゴリがあります。TouchDesignerでUIを作る時にはこの Panel のオペレーターを使います。

Container COMP
/project1/BASE_vs_CONTAINER を参照
Container COMP はTouchDesignerでUIを作るにあたって一番大切な要素です。UIの要素は Container COMP の中に入れられてはじめて使えるようになります。TouchDesignerで新規のプロジェクトを作った時の /project1 も実は Container COMP です。
内部にネットワークを持てるという意味では Base COMP も同じ機能を持っていますが、Base COMP にはUI要素を扱う機能がありません。Base COMP はただのフォルダー(階層)、Container COMP はUI要素を持ったフォルダー、というイメージです。
例では、Base COMP と Container COMP の中にそれぞれ Button COMP が入っていますが、Base COMP のビューをアクティブにしても中に入っているボタンは見えません。一方 Container COMP ではボタンが左下に表示されているのがわかると思います。
UIを作る場合には、Container COMP の階層をつくっていくというのが基本的な考え方になります。
Button COMP
/project1/BUTTON を参照
一番シンプルに使えるUI要素として Button COMP があります。
Button > Button Type からボタンの挙動を変更することで、トグル、モーメンタリー(プッシュスイッチ)、ラジオボタンなどボタンの挙動の切り替えができます。
ボタンの見た目を変更するには Button COMP の内部のネットワークを直接書き換えます。たとえば bg と名のついた Text TOP の Text > Text のパラメーターを変更すると表示される文字を変更することができます。
Slider COMP
/project1/SLIDER を参照
Slider COMP もまたシンプルで簡単に使えるUI要素です。
Slider COMP からはCHOPのアウトプットがあるため、そのまま値のコントロールに使えます。
UIのレイアウト: 1
/project1/LAYOUT1 を参照
Panel 要素のオペレーターは Layout > Width, Height のパラメーターを変更することで大きさを変更できます。また、Layout > X, Y のパラメーターでUIの表示される場所を指定します。
XY座標の調整は親階層の Container COMP を表示しながらやるとわかりやすいです。ネットワークエディター上のパスが表示されている部分の、開きたい階層を右クリック → View をクリックすると親階層のビューウィンドウが表示されます。

やってみよう
ボタンを新しく作って、適当な位置にレイアウトしてみてください
UIのレイアウト: 2
/project1/LAYOUT2 を参照
すべてのUI要素を手動でレイアウトしていくのは不可能ではありませんが、非常に効率が悪いので可能であればオートレイアウトを使いましょう。
ネットワークパスの親階層の名前の部分で右クリック → Parameters をクリックすると親階層のパラメーターウィンドウが表示されます。

親階層のパラメーターウィンドウから、Children > Align のパラメーターを変更することでオートレイアウトが適応されます。たとえば Top to Bottom を選択すると上から下に自動で配置されます。
この状態で子要素の順番を変更するには、子のPanel様子の Layout > Align Order を変更します。親の階層ではこの数字が若い順にソートされてオートレイアウトが働くようになります。
また、親階層のパラメーターの Children > Max par Line を変更すると、1列あたりいくつの要素で折り返すかを指定できます。この機能を使うとグリッド状のボタンなどが簡単に作れます。
やってみよう
パラメーターを変更して、オートレイアウトの並べ方や順番を変更してみてください
UIのレイアウト: 3
/project1/LAYOUT3 を参照
Panel 要素の特殊な機能として、上下についているコネクタを接続することで、ネットワーク内部で配置した親子関係と同じように階層を作ることができます。
込み入った階層構造のUIを作る時にネットワークを出入りする手間がなくなるので、使い方によってはUI制作の手間が大幅に楽になります。
やってみよう
新しいオブジェクトを追加してみたり、すでにある接続を解除したりしてUIの配置がどうなるか確認してみてください
OP Viewer COMP
/project1/OPVIEWER を参照
OP Viewer COMP を使うと、TouchDesignerのそれぞれのオペレーターのView要素 (オペレーターの中に表示されているもの) をUI要素として抜き出すことができます。
たとえばCHOPのチャンネルを確認用に表示したり、カメラのビュー画面をUI画面に表示することで位置調整が楽になったり、といったことができます。
Parameter COMP
/project1/PARAMETER を参照
ネットワークのパラメーターを操作するUIを作らずとも、Parameter COMP を使うとオペレーター内の変更したいパラメーターだけを Panel 要素として取り出すことができます。
複数のオペレーターを値をいじりたい時はその分の Parameter COMP を作り、それらをレイアウトすることで簡易的なパラメーター調整のUIをメッチャ簡単に作ることができます。
Widgets
/project1/WIDGETS を参照
Palette の UI > Basic Widgets の中には Widget COMP ベースで作られた基本的なUIコンポーネントがそろっています。僕も不勉強で Widget COMP が Container COMP とどう違うのかがまだきちんと理解できていませんが、これを使うとより本格的なUIが作成できるようです。
とはいえ Basic Widgets を並べていくだけで十分実用的なUIが作れます。今後TouchDesignerのUIは Widget COMP ベースで作られていくようなので、今のうちに慣れておくといいかもしれません。
Widget COMP を使ったUI制作のチュートリアルでよさそうなものがあったので貼っておきます ↓