第十一回
本日のtoeファイル ← ダウンロードしておいてください
今日は、これといってまとまりはないのですが、作品制作にむけてなるべく実践的なTIPsをいくつか紹介していきたいと思っております
ブレンドモード
/project1/blendmode_add
を参照
TouchDesignerで映像を作る時には、ブレンドモード
を上手い事設定するとカッコいい感じになりがちです。
ブレンドモードは、ジオメトリがレンダリングされる時に、それ以前に書かれていたものとどういうふうにして色をかさねるかという設定なのですが、OpenGLの世界だと デプステスト
と呼ばれる仕組みと密接な関係にあります
↑ の動画は、ブレンドモードを加算、デプステストを切る という設定をしているもので、シーンを作るときによく使うものなのですが、それがどういう事なのかをさらっとやっていきたいと思います
デプステスト
/project1/depth_test
を参照
適当なジオメトリを作って、Geometry COMP
に接続した後、 Phone MAT
を作ってアタッチします。
その後、Phone MAT
の、 Common
> Depth Test
を入り切りしてみると表示がバグったりするのがわかると思います。
デプステストは、新しいポリゴンが描画されようとする時に、以前に書かれたポリゴンより手前にあったら新しいポリゴンを描画、奥にあったら何もせずにスルー という処理をするものです。それを繰り返すことで、不透明な物であれば問題なく描画されます。
アルファブレンディング
ですが、半透明な物を描画しようとすると結構ハマります… 透明度の設定は、Phone MAT
の Alpha
> Alpha Front
のパラメタで調整できるのですが、それと同時に Common
> Blending (Transparency)
のトグルも On
にする必要があります。
なのですが、それだけだとまたバグった表示になります。さらに 上記のように Depth Test
を切ると多少マシにはなりますが、まだアーティファクト(描画の不具合)が出ています。
これは、OpenGLの描画システムが半透明処理(アルファブレンディング)と相性が悪い という問題から生じておりまして、高速な描画とのトレードオフになっております。。自動では面倒を見てくれないので、作る側がどうにかちゃんとした見た目になるように調整する必要があります。
(詳しくは、その17 Zバッファとアルファブレンドの嫌な関係 あたりを参照)
なのですが、要はアルファブレンディングを使わなければ問題がないので、そのあたりが加算合成がよく使われる理由です。
加算合成
ブレンドモードを加算合成にするには、MAT
の、Common
> Source Color
、 Distnation Color
を ともに One
に設定します。
また、Source Color
を One
、 Distnation Color
を One Minus Source Alpha
に設定すると、両方とも One
にした時よりも比較的綺麗に合成されます。
加算合成の時は、Depth Test
は Off
にしておいたほうがエッジが綺麗になるので必ず切っておきましょう。
Source Color
、 Distnation Color
の両方の設定によって他のブレンドモードの設定もできるので、興味のある人は OpenGLの画像合成時のブレンドモードよく使うもの抜粋 あたりを参考にしてやってみてください。
また、 /project1/blendmode
にもサンプルをつくっておきました。
簡単に解決
なのですが、TouchDesignerには半透明処理に関わる問題を簡単に解決してくれる機能も搭載されています。
Render TOP
の Advanced
> Order-Independent Transparency
のトグルがそれです。On
にすると半透明のものでも自動的にいい感じにしてくれます。Transparency/Peel Laters
のパラメタの数字を増やすと、半透明なものが重なる上限数を設定することができます。
この方法はお手軽ですが、それなりに処理負荷がかかるものだと思うので注意して使ってください!
ノイズにノイズを入れる
/project1/noise_to_noise
を参照
簡単なのにキレイだな~ という奴でした!
二番目のインプットに入れるのがポイント
ムービーでパーティクルを動かす
先週にやった、GLSLで頂点を動かすものの応用編です。今度はジオメトリをパーティクルに変換して、それを動かしてみます。
ポイントは、適当なジオメトリを Convert SOP
につないで、Convert to
を Particles
に、 Particle Type
を Render 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 CHOP
、 Timer CHOP
など、時間に関係のあるいくつかのオペレーターには Play Mode
パラメーターがついているものがあります。
Play Mode
を Locked 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
を参照
ブレンドモードの設定とジオメトリインスタンスを組み合わせた作例です