第11回: 時間,体験のデザイン

目次

時間を扱う

Timer CHOP

Timer CHOPは入力に対して指定の時間だけ計測します. タイマーのスタートは2つめのインプットであることに注意してください. 1つめのインプットは初期化です.初期化はタイマーのtimer_faction(0 – 1で表される割合)がゼロに戻り,readyが1,doneが0に戻ります. このtimer_fractionが指定時間で0 → 1になることを利用して,シーンを管理したりFade In/OUTなどをするのにも有効です.


体験のデザイン

作例

パーフェクトロン / りんごってどれぐらい?

Leap motionという赤外線で手の関節などの情報を取得するデバイスで,両手で表現されたりんご大きさから,実際それが何の大きさなのか視覚化する作品です.待機の時間,りんごを表現する時間,その大きさが写真に変化する時間,スライドして右に移動する時間,がループする体験型の作品です. 本作品は私がプログラミングを担当し,openFrameworksで制作しましたが,TouchDesignerでも同じようなことができます.



LENS / アスリートの体型特性

Kinectというデバイスで人のポーズを計測し,アスリートの理想的なポーズとの類似度を可視化する作品です.待機する時間,ポーズをとる時間,類似度を計算して表示する時間,がループする体験型の作品です.



入力を調整する

デバイスなどの入力値は安定していなかったり,ノイズを含んでいたりします.そのような状況の中で,入力を調整することで,安定的に体験型作品を作り込むことをプログラム上で実装していく必要があります.この処理は絵作りなどをしているときのダイナミックさは制作時には感じられませんが,作品のクオリティを上げるためには避けて通れない部分です.

Trigger CHOP

Trigger CHOPは入力に対してADSRに従った値を出力します. ADSRとはシンセサイザーなどの電子楽器の制御信号を設定する機能の一つで,Attack,Decay,Sustain,Releaseの頭文字です.それぞれの機能は以下の表の通りです.

名称

注意点

Attack

演奏開始からその音声の最大音量に到達するまでの時間

Decay

Attackで到達した最大音量から、Sustainレベルに移行するまでの時間

Sustain

Decayの後、演奏が続いている限り出る音量・時間

Release

演奏を終了した(鍵盤の鍵を離した)時点から、音が鳴り終わるまでの時間

図で示すと以下のようになります.
実際は連続的な入力値から一定の値以上になったときにパルスを与えて,次のシーンに移行したりするときに用いたりすると良いでしょう.


Logic CHOP

Logic CHOPは複数の入力に対して,論理演算(論理積: And, 論理和; Orなど)を用いてChannelやCHOPを1つに結合して0 or 1を出力したり,入力に対して指定の値の範囲のみ1を出力してそれ以外は0を出力したいできます. 論理積などの込み入った条件を使用したいときや,指定のシーン番号のときのみ入力を受け付ける処理などをしたいときに使うと良いでしょう.


Hold CHOP

Hold CHOPはインプット1の値をインプット2の値(0 or 1)のオンオフを利用して値を保持します.Logic CHOPとともに使うことで,指定のシーン番号のときしか値が変化しないような処理をするときに有効です.


CHOP Execute DAT

シーンが終わったら次のボタンを押して次のシーンへ というような目的においては,少しだけScriptを書くことでスマートに実現できたりします.

増やす

体験型作品では,体験者の入力値を数えたり,体験者の過去の入力値を全て記憶して比べたりすることが多いです.その方法を紹介します.

Count CHOP

Count CHOPは入力値を数えて指定の方法で値を変更します.マウスクリックの数をカウントアップしたり,得点を増やしていくときに使用したりすると良いでしょう.


Event CHOP

Event CHOPは入力した値をサンプルとして記録していくことができるCHOPです.そして,その記録した値の推移はADSR(先述)を適用できるので,動的にオブジェクトを増やして飛ばすようなことが実装できます. 今回は体験型作品を目指すので,記録した値を保持しておく用途で使うと良いでしょう.


Perform mode動かなくなるとき

Event CHOPやScript CHOPなどはPerform modeにしたり,階層が深くなると,TouchDesignerは無駄にリソースを費やさないために不要な部分を動かないように調整します.
その過程で動いてほしいオペレータが動かなくなってしまったときに,強制的に動かす方法が大きく分けて2つあります.



並べ替える

Sort CHOP

Sort CHOPはSampleの値を指定の方法で並べ替えることができます.動画はShuffle CHOPとともに行ないます.

Shuffle CHOP

Shuffle CHOPは指定の方法でChannelとSampleの関係を変化させます. 体験型の作品を作る場合,保持しておいた大量のSampleをSort CHOPで数の大きい順に並べ替え,Shuffle CHOPでSampleをChannelに入れ替え,Select CHOPで常に最大値を取り出すことができます. Shuffle CHOPはその他,Merge CHOPなどでまとめられた複数Channelのオペレータを1つのChannel,複数Sampleにしてインスタンシングに使用したりと応用次第で多様な表現ができます.


課題

授業内課題

図のようにキー”q”の入力に応じて得点が加算されるアプリを作りなさい. 要件

  • 得点をカウントアップしてリアルタイムに表示すること
  • 最大値を表示すること
  • ファイル名を学籍番号+名前(ローマ字).toe として添付して提出(例: 11111111SeiyaAoki.toe)

締切: 2024年6月28日16:10 提出先: 情デサーバー内/11_授業内 \

来週までの課題

今日の内容を使って,体験型アプリを制作しなさい. 要件

  • ファイル名を学籍番号+名前(ローマ字).toe として添付して提出(例: 11111111SeiyaAoki.toe)

締切: 2024年7月4日23:59 提出先: 情デサーバー内/11_週課題