5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TouchDesignerAdvent Calendar 2022

Day 16

TouchDesignerで作ったVJ用UIを振り返る

Last updated at Posted at 2022-12-17

この記事はTouchDesigner Advent Calendar 2022の16日目の記事なのに、既に12/17です。すみません

はじめに

TouchDesignerでたまにVJするので去年あたりから自分用のUIを作り直しています。
以前TouchDesigner Advent Calendarで書いたものを参考にしたという人がいて「へ〜誰の役に立つかわからないもんだな」と思ったので、今年は現場を乗り切るのにやってよかったTIPSや現状のオレオレ構成をざっくり書いてみます。

何年経ってもよくわからないまま使っており、最適解というより自分はこうやってますってポイントだけ書くので、「あーこのあたり考えておく必要があるのね」とか「あれで済みそうことをやりたいんだな」とかなんとなく察してください。

3年ぶりのQiita投稿...

自己紹介

  • satzz / Hackmarkt
  • フリーランスWebエンジニア(frontend/backend)
  • Tunnel Tokyo(コワーキングスペース)スタッフ(映像・音響・機材)
  • Ableton Meetup Tokyo(ユーザーグループ)スタッフ
  • テクノDJ、VJ
  • DJイベント主催、外国人アーティストの来日サポート
  • VJチームのオーガナイズ
  • サウンドデザインお手伝いなど
    etc

構成

機能を使う状況ごとに整理する

PaletteのDerivative > UI > Basic Widgetsにあるsection Widgetを使って、使わない機能をたたんでおく。ちなみにPaletteずっと無視してたけど、そこにあるものを一度眺めたり自分のコンポーネントをしまっておくことでUIの作り直しの助けになった。

Container COMP内で、section Widgetから0/1の状態を取得し、CHOP Executeに渡してparentの高さを変えることでsectionを折りたたむ。

Screen Shot 2022-12-16 at 18.27.53.png

def onOffToOn(channel, sampleIndex, val, prev):
	op('controls').par.display = 1
	me.parent().par.h = op('height').text
	return

def onOnToOff(channel, sampleIndex, val, prev):
	op('controls').par.display = 0
	op('height').text = me.parent().par.h
	me.parent().par.h = 30
	return

Container COMPの挙動が確認できたらコピーして並べる。
Screen Shot 2022-12-16 at 18.26.46.png
まぁ正直、タブ状UIが作れたらそれでもよいと思う。
ここからは各sectionに入れている機能を挙げる。section名は適当。
Screen Shot 2022-12-16 at 18.23.35.png

Window

performウィンドウを開くボタン、MacのScreen Saver/Screen Lockを切り忘れないためのblinkなど地味な機能。頻繁には使わない。
Screen Shot 2022-12-16 at 18.36.40.png

Pref

Preferenceというあまり意味のない名前はさておき、現場でのテスト中に、壁や装飾を見ながら最終的な絵の出る位置とサイズを調整する機能を現状は置いている。
Basic Widgets > slider2D Widgetでtransform X/Y, scale X/Yを調整する。
これも最初に調整したらあとでいじることは少ない。
Screen Shot 2022-12-16 at 18.40.14.png

Audio

マイクから音を拾ってaudio reactiveな絵を作りたいときに、音声のinput gainを調整する機能。Basic Widgets > Core > masterKnobが割と省スペースなのでちょうどよいサイズに調整して使っている。イベント中を通じて当然出音は変わるので、割と頻繁にいじる。

Screen Shot 2022-12-16 at 18.45.59.png

Artist

イベント名や出演者名などのテキストをエフェクトをかけてさくっと出す機能。文字数によってサイズ調整もできるようにしている。

Screen Shot 2022-12-16 at 18.50.09.png

Scenes

自分で作ったコンポーネントの切り替えを行う。ここは自分のスタイルを出すところなので簡単に増やせるようにした。PaletteのTools にあるsceneChangerをうまく使うとリソースを節約できるのだが、sceneの削除したときの挙動がどうも不安定な気がする。要検証。

Screen Shot 2022-12-16 at 18.51.37.png

Effects

絵にかけるエフェクトを調整する。

Screen Shot 2022-12-16 at 18.55.23.png

Videos

背景の動画素材のファイルの切り替えを行う。
Screen Shot 2022-12-17 at 22.09.52.png
このContainerのAlignはGrid Rowsが便利。
Screen Shot 2022-12-17 at 21.51.16.png
素材のPanel CHOPのクリックをCHOP Executeへ渡し、欲しいコンポーネントの素材だけ再生する。
sceneChangerとやりたいことは似てる。

def onOffToOn(channel, sampleIndex, val, prev):
	print("onOffToOn", channel, sampleIndex, val)
	moviesNum = int(op('info1')['length'])

	for i in range(0,moviesNum):
		opName = "bg" + str(i) 
		op(opName+ '/movie').par.play = 0
		print(opName, "off")

	opName = "bg" + str(sampleIndex)
	op("selectView").par.top = opName + "/out1"
	op(opName+ '/movie').par.play = 1
	print(opName, "on")

	return

Screen Shot 2022-12-17 at 21.14.14.png

素材の追加、もとい、素材が並んだネットワークが地獄である。

Master

最終的にかけるマスターのエフェクトを置いている。明るさの調整やモノクロなど。(Ableton LiveのMaster Trackみたいな?)

Screen Shot 2022-12-17 at 21.20.58.png

課題

もらった現場をこなしながら自分で必要な機能を考えてUIを育てていく感じで上記のようになってきたが、プレビューしたい、素材やシーン追加を楽にやりたいといろいろ課題もあり、この少ない機能だけでもネットワークや階層が複雑化してきた。またリファクタして作り直したい気持ちがある。
Screen Shot 2022-12-17 at 20.44.07.png
※これはごく一部

うまく作り直せたら数年後のアドベントカレンダーで書く。

参考情報

おわりに

「このレベルだったら苦労してTouchDesignerでやる必要はなくVJソフト使えばいいじゃん」って話ですが、やっぱり自分でhackしていくのがTDのかわいさって感じがしますね。Advent Calendarの他の記事も勉強になります!

筆者は大型LEDが使える大崎のTunnel Tokyoでスタッフやってる(audio visualをはじめイベントのサポートも)ので、お立ち寄りの際は是非。

Happy TouchDesigner Life!

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?