第7回: オペレータータイプの変換

今回のプロジェクトファイル

これまでの授業でCHOPTOPSOPの基礎的な部分をやってきましたが、今日はそれぞれのオペレーターのデータの変換方法をやっていきたいと思います。

オペレータータイプの変換はTouchDesignerの独特な機能のひとつです。音や画像、3Dのジオメトリといったデータを相互に、簡単に変換できるのが非常に特徴的で強力な機能です。あるオペーレータータイムにある機能では実現が難しいようなことも、別のオペレータータイプに変換すると簡単に解決するといった事はよくあるので是非覚えてもらいたいです。

データの数値を確認する

/project1/CONVERT_TO_DIGITS を参照

CHOP、TOP、SOPで扱う音や画像、3Dのジオメトリデーターは数字に置き換えて考えることができます。

DAT to CHOPDAT to SOP を使うとCHOPやSOPの内容をDATのテーブルとして表示できます。(なぜかTOP to DATはないようですが、TOP to CHOPを間にはさむことで同様なことができます)

ここで重要なのがCHOP、TOP、SOPの内容が全て数字のテーブルとして表現されている点です

DAT to CHOPDAT to SOPは使う頻度は高くないのですが、データの内容を確認する時に便利だったりします。

オペレータータイプの変換

/project1/CONVERT_OTHER_OPERATOR_TYPE を参照

各オペレーターの内容が数値で構成されているということは、CHOPからTOP、TOPからSOPなど、違ったオペレータータイプ間の変換も可能です。

↓ の例ではTOPのカラーノイズの横一列の画像データからSOPのランダムに折れ曲ったラインを生成しています。
各オペレーターの使い方については後ほど解説します

TOPのピクセルフォーマット

/project1/PIXELFORMAT を参照

TOPからCHOPに変換する時重要なパラメーターとして Pixel Format があります。これはTOPの各ピクセルにどれぐらいの階調を持たせるかを決めるパラメーターで、デフォルトでは8bit fixed(RGBA)になっています。

8bit fixed(RGBA)はピクセルの各色につき256段階、計1677万色を表現できるフォーマットです。

大抵の画像や動画は8bitのピクセルで構成されているので通常問題はないのですが、TOP to CHOPなどで画像を数値データとして扱いたい時に、8bit fixedだと強制的に 0~1 の間のみの数値にされてしまい、0未満、1より大きな値は表現できない問題があります。

なめらかなカーブが欲しいのに0-1の範囲で数値がカットされているなと思ったら、Pixel Format16bit float、または 32bit float に変更してみてください。

TOP to CHOP / CHOP to TOP

/project1/TOP_AND_CHOP を参照

TOP to CHOP は画像のピクセルデータをチャンネルデータに変換します。Cropのページでどの範囲のピクセルをCHOPに変換するかを指定します。

たとえば Crop > CropRow(U) だと横一列のピクセルを変換するモードで、縦の列は V Start で指定します。逆に Column(V) であれば縦のピクセルを変換するといった具合です。

Rows and ColmunsFull Image にするとすべてのピクセル情報を取り出せますが、画像のサイズによってはかなりのデータ量になるので処理負荷に注意してください。

CHOP to SOP / SOP to CHOP

/project1/CHOP_AND_SOP を参照

CHOP to SOP ではチャンネルデータの数値を使ってSOPのジオメトリを作ることができます。Channel Scope に指定するCHOPのチャンネル名とAttribute Scopeの組み合わせで、ジオメトリの頂点の位置や色、法線方向などをコントロールできます。

SOP to CHOP はとくに難しい所はありません。欲しいアトリビュートのトグルをOnにするとCHOPに変換されます。

このように、OP to OPのオペレーターを使うことで任意の形にデータを変換をできます。
次はこういった変換を使って何ができるかをいくつか見ていきましょう。

画像を音に変換する

/project1/TOP_TO_SOUND を参照

Audio Oscillator CHOP を使って、ピクセルから抜き出したチャンネルデータをオシレーターのウェーブテーブルにして発音させる例です。

画像に回転縮小やブラー、エッジといったエフェクトをかけていくと音のほうも連動して変化します。案外見た目と音が合って見えるのが不思議です。

音からジオメトリを作る

/project1/SOUND_TO_SOP を参照

Audio Spectrum CHOP で解析したFFTスペクトルをSOPに変換した後、Revolve SOP を使って回転体のジオメトリを作った例です。

CHOPで3次元の計算をするのは難しいですが、SOPにデータをもっていった後だと簡単に立体に変換できます。

Copy SOPのタネをCHOPで作る

/project1/CHOP_SCATTERING を参照

Noise CHOP 平面上にランダムなポイントを配置したジオメトリを簡単に作ることができます。それとCopy SOPを組合せると平面に配置されたオブジェクト郡ができます。

また、CHOP to SOP でCHOPからSOPに変換する際に、Pだけでなく pscale のアトリビュートを作ると Copy SOP で作られるジオメトリの大きさもコントロールできます。

CHOPレベルでSOPにエフェクトをかける

/project1/SOP_LAG_EFFECT を参照

SOP to CHOP でチャンネルデータにしたジオメトリに Lag CHOP でフィルターをかけた後、 CHOP to SOP で再度ジオメトリに戻す例です。

Lag CHOPLag par Sample のトグルを入れておくことで、サンプルのそれぞれに独立したフィルタがかかるのを利用してジオメトリの移動時にやわらかく伸びるようなエフェクトを付加しています。

まとめ

このように、TouchDesignerのオペレーター間のデータを相互に変換しながらの制作スタイルはとても強力です。

制作途中でつまづいたり、何かもうひとひねり欲しいといった時のネタの引き出しとして覚えておくとよいと思います。