yoppa.org


芸大 – メディアアート・プログラミング I 2025

TouchDesigner実践 2 – パーティクルシステム

本日の内容

今回は、「パーティクルシステム (Particle System)」をTouchDesignerを用いて実装する方法を解説していきます。

パーティクルシステムとは、多数の微細な要素、つまり「パーティクル」の集合体を用いて、自然現象や抽象的なエフェクトを表現するための技術です。例えば、炎の揺らめき、立ち上る煙、舞い散る雪、きらめく星屑、爆発の破片など、その形状が一定でない、いわゆる「不定形」な対象の表現に適しています。個々のパーティクルは、それぞれが独立した位置、速度、加速度、色、透明度、大きさ、そして寿命といった属性(パラメータ)を持っています。これらの属性は、設定されたルールや時間経過、あるいは外部からのインタラクションに応じて変化します。一つ一つのパーティクルは比較的単純な法則に従って振る舞いますが、それらが何千、何万と集まることで、全体として非常にリアルで複雑な視覚効果を作り出すことができます。このパーティクルシステムは、映画のVFX(視覚効果)、ゲームの演出、さらにはインタラクティブアートやインスタレーション、データビジュアライゼーションなど、多岐にわたる分野で活用されています。

TouchDesingerでは、Particle SOPを用いることでとても簡単にパーティクルの生成と制御が可能です。また、生成したパーティクルにスプライト画像を適用したり、ジオメトリインスタンシングを用いてパーティクルの一粒ごとに3Dオブジェクトを配置することも可能です。今回はTouchDesingerのパーティクル表現についていろいろ実験していきます。

参考作品

Unsupervised — Machine Hallucinations — MoMA
ところざわサクラタウン KADOKAWA所沢キャンパス LEDヴィジョン

パーティクル生成の基本

ダウンロード

  • パーティクルを生成するには、Particle SOPを使用する
  • Particle SOPには、パーティクルの初期位置を決定するためのSOPを接続する
  • 例えば、Sphere SOPを接続すると、球体の頂点からパーティクルが放出される
  • そのままではパーティクルが発生順序が規則的すぎる
  • Sort SOPを使用して、パーティクルの発生順序をランダムにする
  • 生成したSOPをGeometry COMPに接続し、Render TOPでレンダリングする
  • Wireframe MATを使用してパーティクルを表示

乱流でパーティクルを攪拌

ダウンロード

  • Particle SOPのforceタブのTurblance (乱気流) の値を上げてみる
  • 乱流が起こり、パーティクルが攪拌される
  • その他、力を加えたり風をあてたりといろいろな力を加えることが可能
  • 動きを見ながら試してみましょう!

ポイントスプライトでパーティクルを表示

ダウンロード

  • ポイントスプライトとは、パーティクルを2D画像で表示するための技術
  • 指定した画像が常にカメラの方向を向くように表示される(Billboard)
  • マテリアルにPoint Sprite MATを使用
  • 頂点の場所に表示する画像を指定
  • これにより、パーティクルの数が多くても、GPUの負荷を抑えつつリアルな表現が可能
  • 設定の変更:
    • Particle SOPのParticle TypeパラメータをRender as Point Spriteに設定
    • Point Sprite MAT > Point Sprint のColor MapにCircle TOPの画像を適用
    • Point Sprite MAT > Point Sprint のConstant Point Scaleを調整
    • Point Sprite MAT > Common でBlendingをONに
      • Blend Operation: ADD
      • Source Color: One
      • Destination Color: One Minus Source Alpha
      • Depth TestをOffに

パーティクルのサイズに変化をつける

ダウンロード

  • ポイントスプライトのサイズを奥行 (Z座標) によって変化させる
  • Point Sprite MAT > Point Sprite のAttenuate (減衰) Point Scale以下の設定を変更
  • 設定例
    • Attenuate Point Sacle: 0.5
    • Attenuate Near Distance: 1
    • Attenuate Far Distance: 8
    • Near Point Scale: 50
    • Far Point Scale: 1

ポイントスプライトの画像をグラデーションに

ダウンロード

  • ポイントスプライトの画像を、Circle TOPからRamp TOPに変更
  • 円環状のグラデーションをかける
  • 透明度や明度や彩度などを調整、光の粒が浮遊するような効果が生まれる!

Particle SOPの頂点情報でジオメトリインスタンシング

ダウンロード

  • Particle SOPの頂点の情報を用いてジオメトリインスタンシングを行う
  • Particle SOP > SOP to CHOP を用いて座標の情報をCHOPに抽出
  • この情報を頂点の位置として、インスタンシングを行う
  • 大量のSOPを用いたパーティクルシステムが構築可能となる!

パーティクルの向きを進行方向に

ダウンロード

  • Particle SOPの動きから進行方向のベクトルを取得
  • Particle SOPからCHOP to SOPした情報を操作
  • Attribute Scope「P v」を設定 (Pが位置、vが進行方向のベクトル)
  • Rename Scopeで「tx ty tz vx vy vz」にリネーム
  • Geometory COMP > Instance 2のRotate to Vectorに「vx vy vz」を適用
  • パーティクル進行方向に回転するはず!

応用: パーティクルにPBRマテリアルで質感をつける

ダウンロード

  • パーティクルシステムと先週のPBRマテリアルを組み合わせてみる
  • 詳細はプログラムを使って解説していきます!

アンケート