TouchDesignerとは プログラミングで創造的に表現する

TouchDesignerとは何か?TouchDesignerは何に使われて、どのように動いているのか?


TouchDesignerとは

Touchdesignerは「ビジュアル・プログラミング」を可能にするアプリケーション。

一般のプログラミングとは違い、オペレータと呼ばれるノードを繋ぎ合わせてプログラミングを行う。


TouchDesignerの初期画面


[st-card myclass=”” id=4544 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


文字で羅列されているプログラミング言語に比べ、データの動きや、どこで何が起こっているかの状況把握を視覚的に確認することができる。


TouchDesignerはどんな分野に強いの?

「Visual Thinking with TouchDesigner プロが選ぶリアルタイムレンダリング&プロトタイピングの極意[改訂第2版]」によれば、Touchdesigner幅広いクリエイターのために作られ、作りたい芸術的なイメージとプログラミングの難しさの間で悩むデザイナー達に深い理解を与えるためのツールだと紹介されている。

アートとテクノロジーで交差する分野としては「クリエイティブコーディング」、「ジェネラティブ・プログラミング」、「メディアアート」、「デジタルアート」「インタラクティブアート」のような様々な概念があるが、TouchDesignerはこうした創造的な表現を目的としたツールの一つとして使われることが多い。


クリエイティブコーディングには他にどんな種類があるの?

その他アート&テクノロジー分野で使われる、創造的な表現を目的としたツールとしては以下のようなものがある。

  • MAX/MSP
  • OpenFrameworks
  • Processing
  • Pure Data
  • Scratch
  • TouchDesigner
  • Unity
  • vvvv
    など


TouchDesignerはどのように動いてるのか?

第1回: はじめるにあたって (http://satoruhiga.com/)参照


TouchDesignerは基本的にはC++の言語で作られている。オペレーターのどの機能を使うかによって、プロセッサの使われ方も変化する。画像を扱う TOP や、3Dデータを扱う時に登場する MAT や SOP のオペレーターを使うときはGPUが使われることが多く、その他 COMP、CHOP、DAT のオペレーターを使うときはCPU側で動く事が多い。(1)

CPUについては、下記に詳細を書いた。


[st-card myclass=”” id=4737 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


オペレーターとは


オペレーターはTouchDesignerの中で、箱のように表示され(ノードと呼ばれる)、箱から箱へデータが送られていく。



オペレーターには6種類あり、それぞれのオペレーター毎に異なる機能を持っている。それぞれ色分けされており、オペレーターを繋ぎ合わせていくときも色でオペレーターを判断できる。以下は公式ドキュメントより翻訳。(2)

  • COMPs – Components – オブジェクトコンポーネント(3Dオブジェクト)、パネルコンポーネント(2D UIガジェット)、その他コンポーネント
  • TOPs – Texture Operators – 2Dイメージの操作
  • CHOPs – Channel Operators – モーション、オーディオ、アニメーション、制御信号
  • SOPs – Surface Operators – 3Dポイント、ポリゴン、その他の3D「プリミティブ」
  • DATs – Data Operators – ASCIIテキストをプレーンテキスト、スクリプト、XML、またはセルのテーブルで構成
  • MATs – Material Operators – マテリアルとシェーダー


GLSLとは


GLSLとは、C言語をベースとした、3Dグラフィックを作成するための言語。GLSLはシェーディング言語とも呼ばれている。


シェーディング言語とは?

シェーディング言語とは、コンピューターグラフィックスで「シェーダー」を簡単に扱うことに特化したプログラミング言語のことをいう。

シェーディング言語の種類を見てみると、数多くのシェーディング言語が存在していることが分かる。

プロダクションレンダリング

  • RSL : RenderMan Shading Language
  • VEX : Houdini VEX Shading Language
  • Gelato Shading Language

リアルタイムレンダリング

  • ARB 低レベルアセンブリ言語
  • OpenGL シェーディング言語
  • DirectX アセンブリ言語
  • DirectX 高レベルシェーディング言語
  • Adobe Flash シェーディング言語
  • PSSL : PlayStation 4 シェーディング言語
  • MSL : Metalシェーディング言語
  • Cg : NVIDIA シェーディング言語


そもそもシェーダーとは?

3Dプログラム上で、陰影処理をして3Dオブジェクトに影をつけるプログラム。CPUだけじゃ追いつかないグラフィック処理をGPU(シェーダ)に肩代わりさせるのがそもそものシェーダーを使う意味になる。(3) シェーダはGPU上で動くため、シェーダを使うということはGPU上で動くということになる。(3)


OpenGLとは (Open Graphics Library Shading Language)

OpenGLはKhronos Groupが策定しているAPIになる。

OpenGLはGPUを活用しながらシェーダーをつくりだしていく。(4)


[st-card myclass=”” id=1944 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


なぜOpenGLが生まれたのか?

OpenGLに入門する前に知っておきたかったこと」の記事が分かりやすかったので参照する。

コンピュータ上でグラフィックを描画する作業は、Windows、macOS、LinuxといったOSに含まれるGUIパッケージが管理している。CGをコンピューターを使って書く時、OSに指示を出すことになる。しかし各OSはグラフィックの指示が出された時の処理方法が異なるために、OSへの指示の出し方も異なってくる。

しかしOSごとに描画プログラムを書き直すのも非常に手間がかかる。この問題を解決するために、OpenGLという共通のルール(描画を指示するためのAPI)を規格として定めることで、どの環境でも同じようにCGを描画できるようにした。

あくまで「OpenGLの規格をとりいれて開発していきましょう」とみんなで示し合わせているだけなので、実際はハードウェア、ドライバー、OSなどの作成者がOpenGLの規格を取り入れるかどうかは自由に選べる。 そのためOpenGLが使えるか、またどのバージョンが利用できるかは、OSがOpenGLをサポートしているかどうかと、使っているGPUがOpenGLに対応しているかどうかに依存する。


TouchDesignerの起源

TouchDesignerを開発したのはカナダ・トロントにあるDerivative社であり、2000年からリアルタイムで2Dや3Dインタラクティブ・アニメーションのプロトタイプを素早く作る目的で開発が始まった。(1)

PRISMSというソフトウェアがTouchDesignerのルーツであり、PRISMSは3Dアニメーションのソフトウェアとして利用されていた。PRISMSの後継としてHoudiniという3DCGソフトウェアが開発され、現在も多くのハリウッド映画などで利用されている。(1)

TouchDesignerの初期バージョンはHoudini4.1をベースとしており、第一世代の製品は2002年から2007年の間に「TouchDesigner007-017」というバージョンでリリースされた。(1)


注:
(1) http://satoruhiga.com/ - 第1回: はじめるにあたって 
(2) Operator - Derivaative
(3) しっかり学ぶシェーダプログラミング【シェーダをさわる前に編】
(4) OpenGLを使うとき知っておくと便利な基礎知識
(5) 松山, 松波(2021)
参照:
松山周平, 松波直秀 (2021). Visual Thinking with TouchDesigner プロが選ぶリアルタイムレンダリング&プロトタイピングの極意[改訂第2版](サムワンズガーデン編集 ベン・ヴォイド監修 ビー・エヌ・エヌ)