去年のアドベントカレンダーで書いたTouchDesignerでGPGPU Particle Systemを作るVol.2応用編の更新版になります。
以前、TouchDesignerでGPGPU Particle Systemを作るには若干のGLSLを書く必要がありました。
しかし現在のTouchDesignerではGeometry COMPが直接TOPを取り込めるようになったため、GLSLなしでGPGPU Particle Systemを組むことができます。Constant、Phong、PBRなどのシェーディングも自由に付け替え可能。便利。
サンプルコードはこちらになります。
あとは説明。
Particleの向きを進行方向に向けたい
これをするにはSpeed(進行方向のベクトル)を計算して持っておきます。
SpeedをGeometry COMPのRotate to Vectorの項に入れてしまえば進行方向を向かせることができます。
なので、Accel、Speed、Positionを個別に持つようなEngineを作っておきましょう。
また、通常、ベクトルの計算には任意のベクトル以外に初期のベクトルが必要ですが、TouchDesignerの場合は(x,y,z)=(0,0,1)のZ方向に寝た単位ベクトルのようです。
方向性のあるオブジェクトを利用する場合は注意してください。
Particleを1粒単位でリセットしたい
去年はGLSLを書いていましたが、実はこれもノンコーディングで行けます。Matte TOPを使います。
リセットしたいParticleが参照するピクセルだけ白、もしくは黒が入る2値化されたTOPをMatte TOPに食わせることで『Feedback TOPの値を継続利用するか、それともリセットするか』を個別に指定できます。
Particleを定期的にリセットしたい
ここはほぼ去年のと同じです。GLSLがMatte TOPに変わったくらい。
ランダムで加齢していって一定値以上になったらリセットトリガーを吐いて死んで0からカウントをしなおす、ループするTOPのシステムを組みます。
初期のParticleは小さくしたい、死にそうになると色を暗くしたい
Particleの寿命のTOPにLookup TOPを当てて、RAMP TOPを使うことで色やスケールを制御できるようになります。
以上!
本当は1LinerなGLSL TOPを使って色々やるやつを書きたかった・・・。