第十一回

https://tinyurl.com/TDWS-2018

本日のtoeファイル ← ダウンロードしておいてください

今日は、これといってまとまりはないのですが、作品制作にむけてなるべく実践的なTIPsをいくつか紹介していきたいと思っております

ブレンドモード

/project1/blendmode_add を参照

TouchDesignerで映像を作る時には、ブレンドモード を上手い事設定するとカッコいい感じになりがちです。

ブレンドモードは、ジオメトリがレンダリングされる時に、それ以前に書かれていたものとどういうふうにして色をかさねるかという設定なのですが、OpenGLの世界だと デプステスト と呼ばれる仕組みと密接な関係にあります

↑ の動画は、ブレンドモードを加算、デプステストを切る という設定をしているもので、シーンを作るときによく使うものなのですが、それがどういう事なのかをさらっとやっていきたいと思います

デプステスト

/project1/depth_test を参照

適当なジオメトリを作って、Geometry COMP に接続した後、 Phone MAT を作ってアタッチします。

その後、Phone MAT の、 Common > Depth Test を入り切りしてみると表示がバグったりするのがわかると思います。

デプステストは、新しいポリゴンが描画されようとする時に、以前に書かれたポリゴンより手前にあったら新しいポリゴンを描画、奥にあったら何もせずにスルー という処理をするものです。それを繰り返すことで、不透明な物であれば問題なく描画されます。

アルファブレンディング

ですが、半透明な物を描画しようとすると結構ハマります… 透明度の設定は、Phone MATAlpha > Alpha Front のパラメタで調整できるのですが、それと同時に Common > Blending (Transparency) のトグルも On にする必要があります。

なのですが、それだけだとまたバグった表示になります。さらに 上記のように Depth Test を切ると多少マシにはなりますが、まだアーティファクト(描画の不具合)が出ています。

これは、OpenGLの描画システムが半透明処理(アルファブレンディング)と相性が悪い という問題から生じておりまして、高速な描画とのトレードオフになっております。。自動では面倒を見てくれないので、作る側がどうにかちゃんとした見た目になるように調整する必要があります。

(詳しくは、その17 Zバッファとアルファブレンドの嫌な関係 あたりを参照)

なのですが、要はアルファブレンディングを使わなければ問題がないので、そのあたりが加算合成がよく使われる理由です。

加算合成

ブレンドモードを加算合成にするには、MAT の、Common > Source ColorDistnation Color を ともに One に設定します。

また、Source ColorOneDistnation ColorOne Minus Source Alpha に設定すると、両方とも One にした時よりも比較的綺麗に合成されます。

加算合成の時は、Depth TestOff にしておいたほうがエッジが綺麗になるので必ず切っておきましょう。

Source ColorDistnation Color の両方の設定によって他のブレンドモードの設定もできるので、興味のある人は OpenGLの画像合成時のブレンドモードよく使うもの抜粋 あたりを参考にしてやってみてください。

また、 /project1/blendmode にもサンプルをつくっておきました。

簡単に解決

なのですが、TouchDesignerには半透明処理に関わる問題を簡単に解決してくれる機能も搭載されています。

Render TOPAdvanced > Order-Independent Transparency のトグルがそれです。On にすると半透明のものでも自動的にいい感じにしてくれます。Transparency/Peel Laters のパラメタの数字を増やすと、半透明なものが重なる上限数を設定することができます。

この方法はお手軽ですが、それなりに処理負荷がかかるものだと思うので注意して使ってください!

ノイズにノイズを入れる

/project1/noise_to_noise を参照

簡単なのにキレイだな~ という奴でした!

二番目のインプットに入れるのがポイント

ムービーでパーティクルを動かす

先週にやった、GLSLで頂点を動かすものの応用編です。今度はジオメトリをパーティクルに変換して、それを動かしてみます。

ポイントは、適当なジオメトリを Convert SOP につないで、Convert toParticles に、 Particle TypeRender as Point Splites にすることです。

そうすると、GLSLのバーテックスシェーダーの中で、gl_PointSize を使ってパーティクルのサイズをコントロールすることができます。

できたパーティクルは、合成モードをいじったりするとよりカッコいい感じになると思います!

頂点を簡単に動かす

画像で頂点を動かすのはよく使いそうなので tox にしてみました。displacement_shader.tox がそれです。

頑張って作った機能はどんどん tox にしていくと簡単に使えて便利です。コンポーネントにカスタムパラメータを設定する方法は追い追いまた説明します!

タイムラインを活用する

Locked to Timeline

/project1/lock_to_timeline を参照

Movie File In TOP や、 Audio File In CHOPTimer CHOP など、時間に関係のあるいくつかのオペレーターには Play Mode パラメーターがついているものがあります。

Play ModeLocked to Timeline にすると、画面下部のタイムラインバーと動画や音声の再生時間がリンクします。

また、Specify Index を指定すると、任意の位置を指定することもできます。

これは、例えば演劇やライブ、インスタレーションなど、時間軸にあわせて色々なことが起こるような時に非常に便利な機能です

Animation COMP

/project1/animation_comp を参照

Animation COMP を使うと、カーブエディタのGUIでCHOPの値を編集することができます。

カーブを編集するには、Animation COMP のパラメタウィンドウの、Edit Animation... のボタンを押してアニメーションウィンドウを開きます。

ウィンドウが開いたら、左上の Names のテキストボックスに作成したいチャンネル名を入れて、Add Channels のボタンを押すとチャンネルが作成されます。

カーブエディタの画面は、左ドラッグで移動、中ドラッグでズーム等、ネットワークエディタの画面と同様の操作で移動ができます。

キーフレームを追加するには、チャンネルのカーブ上の適当な所を Alt+クリック します。チャンネルエディタの上の F:V: と書かれたナンバーボックスで、選択しているキーフレームの時間や値などを数値入力することもできます。

そこまで高度な編集はできないのでなんとなくな感じにはなりますが、お手軽に使えるので非常に便利です!


ブレンドモード+インスタンスの作例

/project1/instance_and_blendmode を参照

ブレンドモードの設定とジオメトリインスタンスを組み合わせた作例です