第十三回
本日のtoeファイル ← ダウンロードしておいてください
タイムラインの使い方
今日は、初回のUI解説で紹介して以降、まったく触れていなかったタイムラインについて紹介します。
再生、停止、フレーム送りなどの各ボタンは見ての通りなのですが、注意すべきは Renge Limit
のボタンと、RStart
、REnd
の数値です。
Renge Limit
はデフォルトで Loop
になっていますが、Once
に設定するとタイムラインの再生ヘッドが最後に到達すると再生を止める設定になります。たとえばライブパフォーマンスで映像のポン出しなどをした時など、頭に戻って再生して欲しくない時は Once
に設定するといいでしょう。
RStart
、REnd
は、全体のシーケンスの尺のうち、任意の区間をプレビュー領域として指定する機能です。Range Limit
と組み合わせて使うと、特定の部分を繰り返し見ながら内容を作り込むことができます。
R は、おそらく Renderの略…?
absTime.seconds
と me.time.seconds
/project1/absTime_and_localTime
を参照
TouchDesignerでは二種類の時間軸があります。absTime
と、me.time
です。
- absTime
- TouchDesignerが起動してからの経過時間を扱います
- me.time
- タイムラインと同期した時間を扱います
ひらたく言うと、me.time
を使った場合はパラメーターの更新がタイムラインと同期しますが、absTime
を使うとずっと変化し続ける値になります。アニメーションに再現性が欲しい時は me.time
を、適当に動いていて欲しい時は absTime
を使うといいでしょう
absTime
、me.time
の両方とも、.seconds
で秒を、.frame
でフレーム数をとりだすことができます
Locked to Timeline
/project1/locked_to_timeline
を参照
Movie File In TOP
、Audio File In CHOP
、Timer CHOP
など、時間軸で変化するオペレーターには、Play Mode
と呼ばれるパラメーターを持つものがあります。
これは、オペレーター自身の時間軸をどういうふうに更新するかというオプションで、Sequential
にすると内部的に持っている時間軸に、Locked to Timeline
にするとタイムラインの時間軸によって再生されます。また Specify Index
の選択肢があるものは、任意のフレームや秒数を指定することもできます。
音声や映像をタイムラインにロックしておくと、Ableton LiveやAdobe Premiereを使うような操作感でタイムラインのヘッドを移動できます。何度でも同じ状態をプレイバックできるため時間的軸方向の作り込みがしやすくなります。タイミングを詰めて演出効果を上げたい時などに使うといいでしょう。
Audio File In CHOP
と File In CHOP
これまで、オーディオファイルを読み込む時にはいつも Audio File In CHOP
を使ってきましたが、代わりに File In CHOP
を使うこともできます。両者の違いは読み込むサンプル数の違いです。Audio File In CHOP
が、オーディオファイルの中の、再生に必要な部分だけのサンプルを抜き出してくるのに比べ、 File In CHOP
はファイル全体をあらかじめ全て読み込みます。
File In CHOP
を使ってファイル内の全てのサンプルを読み込んでおいた場合、CHOPオペレーターのビューワーを右クリックして Timebar
を有効にすると現在時刻を示すバー表れ、Time Scroll
を有効にすると現在時刻の周辺に自動的にスクロールするようになります。CHOPのビューをこのような状態にしておくと、Audio File In CHOP
を使うのに比べて 音の波形を確認しながらタイムラインを操作できるので大変便利です。
また、Trim CHOP
の Unit Values
を Relative to Current Frame
にしたものを File In CHOP
につないでおくと、現在時刻から前後に指定した長さぶんのサンプルを数値指定で抜き出すこともできます。
Animation COMP
Animation COMP
を使うと、カーブエディタのGUIを使ってCHOPのアニメーションカーブを書くことができます。操作方法については ↑ の動画を見てもらったほうが早いと思いますが、その他の注意点などをまとめておきます。
- ちょいちょいバグっぽい所がるので、あまり細かい編集には向きません
- 正確な値を打ち込むには、キーフレームを選択してチャンネルエディターウィンドウ上部の
V:
やF:
の部分に数値入力します Snap
のチェックボックスを適当な値で有効にしていると編集がしやすくなります- 最初/最後のキーフレーム以前/以降に新しいキーを追加できないので、最初からあるキーフレームは絶対に消さないでください!!!!詰みます!!!
体験型映像展示などで便利な待機モードの作り方
/project1/idle_loop_simple
を参照
映像インスタレーションなどでよくあるフロー、スタートボタンを押すと初まる → 一定時間コンテンツが流れる → スタートボタンが押されるまで待機 の流れも、タイムラインを活用すれば簡単に実装することができます。
例えば Frame Start
を有効にした Execute DAT
で、
def onFrameStart(frame):
if me.time.seconds > 5 + 1:
me.time.seconds = 5
return
のようなスクリプトを走らせるとタイムラインの時間が6秒以上になった場合5秒に戻る、といったループが組めます。
さらに、適当な所で me.time.seconds = 0
を実行するとタイムラインの時間が0に戻るので先頭から再生、というふうな仕組みです。
/project1/idle_loop
に、いつも展示などで使っているような仕組みをつくっておきました。
映像のオフライン書き出し
最後に、Movie File Out TOP
を使って、確実に動画を書き出すTIPSを紹介します
映像を素材として書き出す場合、可能であれば毎回同じ長さでフレーム飛びなどもなく書き出せる事が求められます。なのですが、Movie File Out TOP
を普通に使った場合、TouchDesignerのレンダリングの時点でフレーム欠けなどがあるとそれがそのまま出力されてしまいます。
以下の手順を踏むことで、フレームの欠けなく、毎回正確な動画を書き出せるようになります
- 再生を止める
Movie File Out TOP
を作り、出力の設定をする- ウィンドウ上部の
Realtime
のチェックボックスを切る Range Limit
をOnce
にする- 書き出しに必要な部分を
RStart
、REnd
で指定する - タイムラインを先頭に戻す
Movie File Out TOP
のRecord
をOn
にする- 再生ボタンを押す
- タイムラインが終わりになり、再生が止まったら
Movie File Out TOP
のRecord
をOff
にする
この方法を使えば、レンダリングがリアルタイムに動かないような重いシーンでもオフラインで書き出せます。
/project1/movie_output
には、以上の手順を自動化するためのCOMPを置いておきました。(きちんとテストはできておりませんが…) 通常はこのCOMPを必要に応じて設定をかえていけばお手軽にオフラインレンダリングができるものと思います