search
LoginSignup
6
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

TouchDesigner Advent Calendar 2019 Advent Calendar 2019 Day 4

posted at

updated at

TOPでGeomtry Instanceを制御する

去年のアドベントカレンダーで書いた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 2019.33840_ C__Users_02oz_Documents_TouchDesigner_GeometryByTOPAnimation_GeometryByTOPAnimation.toe_ 2019_12_09 11_48_56.png

また、通常、ベクトルの計算には任意のベクトル以外に初期のベクトルが必要ですが、TouchDesignerの場合は(x,y,z)=(0,0,1)のZ方向に寝た単位ベクトルのようです。
方向性のあるオブジェクトを利用する場合は注意してください。

TouchDesigner 2019.33840_ C__Users_02oz_Documents_TouchDesigner_GeometryByTOPAnimation_GeometryByTOPAnimation.toe_ 2019_12_09 11_52_39.png

Particleを1粒単位でリセットしたい

去年はGLSLを書いていましたが、実はこれもノンコーディングで行けます。Matte TOPを使います。
リセットしたいParticleが参照するピクセルだけ白、もしくは黒が入る2値化されたTOPをMatte TOPに食わせることで『Feedback TOPの値を継続利用するか、それともリセットするか』を個別に指定できます。

TouchDesigner 2019.33840_ C__Users_02oz_Documents_TouchDesigner_GeometryByTOPAnimation_GeometryByTOPAnimation.toe_ 2019_12_09 11_54_30.png

Particleを定期的にリセットしたい

ここはほぼ去年のと同じです。GLSLがMatte TOPに変わったくらい。
ランダムで加齢していって一定値以上になったらリセットトリガーを吐いて死んで0からカウントをしなおす、ループするTOPのシステムを組みます。
TouchDesigner 2019.33840_ C__Users_02oz_Documents_TouchDesigner_GeometryByTOPAnimation_GeometryByTOPAnimation.toe_ 2019_12_09 11_53_48.png

初期のParticleは小さくしたい、死にそうになると色を暗くしたい

Particleの寿命のTOPにLookup TOPを当てて、RAMP TOPを使うことで色やスケールを制御できるようになります。

TouchDesigner 2019.33840_ C__Users_02oz_Documents_TouchDesigner_GeometryByTOPAnimation_GeometryByTOPAnimation.toe_ 2019_12_09 12_04_34.png

以上!
本当は1LinerなGLSL TOPを使って色々やるやつを書きたかった・・・。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6
Help us understand the problem. What are the problem?