Optical Flow + ParticlesGPU
Updated: 2026-05*
1. はじめに
TouchDesigner の Tools パレットに実装されている opticalFlow Container と particlesGpu Container を利用した インタラクティブパーティクル の実装方法を解説する。
ベースとなる YouTube チュートリアル:
完成イメージ:
演習の構成: 前半はチュートリアル準拠の落下パーティクル、後半は オリジナルの「静止パーティクル」版(床面投影に応用可能)。
2. TouchDesigner の起動と準備
TouchDesigner を起動後、スタートアップオペレータを削除して Palette を閉じる:

3. Video Device In TOP
Video Device In TOP を追加。Common タブで:
- Output Resolution: Custom Resolution
- Resolution: 1280, 720

4. Flip TOP
Flip TOP を追加して Video Device In TOP と接続。Flip X を ON(左右反転):

5. opticalFlow Container
5.1 Optical Flow とは
入力画像の 特徴点がどの方向に移動しているかを解析 する手法。解析結果は角度値を 色で表現 することが多い:

参考:
5.2 opticalFlow Container の追加
Palette を開いて、Tools > opticalFlow Container をドラッグ&ドロップで追加。Flip TOP と接続:

opticalFlow Container のプレビューでは、X 方向を R チャネル、Y 方向を G チャネル の色で表現:

参考: Optical Flow TOP - TouchDesigner Documentation
6. particlesGpu Container
6.1 particlesGpu Container の追加
Palette > particlesGpu Container をドラッグ&ドロップで追加(まだ opticalFlow Container とは接続しない):

6.2 RGB Key TOP(透明を黒表示)
RGB Key TOP を追加。particlesGpu Container の Output 0 (TOP) render と RGB Key TOP を接続:

6.3 particlesGpu Container のビュー操作
| 操作 | 動作 |
|---|---|
| 左ドラッグ | ビューの回転 |
| 右ドラッグ | ビューの移動 |
| 真ん中ボタンドラッグ | ズーム |
H キー |
正面ビュー |

6.4 opticalFlow Container と particlesGpu Container の接続
opticalFlow Container の Out から、particlesGpu の 上から 4 番目の Input 3 (TOP) optical flow に接続:

身体を動かしてパーティクルが反応することを確認:

パーティクルは 3D 矩形に広がっているが、カメラ画像は 2D 平面。カメラの 2D 平面を奥行き方向に延長した状態でパーティクルが反応 する。
6.5 パーティクルへの影響度合いの調整
方法① opticalFlow Container — Optical Flow タブ:
- Force: 5〜10(プレビューのエッジも太くなる、試したあとは 1 に戻す)

操作上の注意: 両 Container は ENTER キーで下階層に入る。戻るには
Uキー(UP)。
方法② particlesGpu Container — Forces タブ:
- Optical Flow Magnitude: 5〜10

6.6 パーティクルの発生領域
パーティクルの発生領域は ZX 平面:

Particle Source タブで平面の選択、サイズ、移動が可能:

設定例:
- Particle Source タブ
- Shape: Rectangle → Line に変更
- PointA:
-4 0 0(X Y Z) - PointB:
4 0 0
Bounding Box のサイズは ParticlesGPU タブの Pos Limit Plane / Neg Limit Plane で指定される。
Translate のメモ: 4 だと Bounding Box の境界上になり、Particle が消える(Hit Behaviour に影響)。None にすると落下はするが下平面で消えない。
7. カメラ画像との合成
7.1 RGB Key の削除
RGB Key を削除する。
7.2 Select TOP(Flip TOP のインスタンス作成)
Select TOP を追加して Flip TOP をドラッグ&ドロップ:

7.3 Composite TOP
- Composite TOP を追加
- particlesGpu Container → Composite TOP
- Select TOP → Composite TOP
- Composite TOP の Operation: Over に変更

7.4 パーティクルの位置調整
- particlesGpu Container の Particle Source タブ: Shape Line のまま
- Viewer Active で
Hキー押下後、マウス操作で位置調整- 真ん中ドラッグでスケール
- 右ドラッグで位置調整

常設システムで運用する場合は、Bounding Box サイズや発生領域を数値入力で固定するのがおすすめ。
7.5 Bounding Box のサイズ調整
カメラ映像 16:9 に合わせて:
- ParticlesGPU タブ
- Pos Limit Plane:
7 4 4 - Neg Limit Plane:
-7 -4 -4
- Pos Limit Plane:

Hit Behaviour の Fade Out(デフォルト)では Bounding Box の外側でパーティクルがフェードアウト。None にすると Bounding Box の影響がなくなる。
7.6 発生領域のサイズ調整
- Particle Source タブ
- PointA:
-7 0 0 - PointB:
7 0 0
- PointA:
Shape: Line でないと PointA / B は変更できない。

7.7 Bounding Box の表示 / 非表示
ParticlesGPU タブ > Display Bounds で切替:

7.8 カメラ画像のアスペクト比を反映(参考動画 16:50〜)
- Forces タブ
- Optical Flow Size Remap: 1.77 1
これを合わせないと腕の上下のときに予期しない Ripple Effect が起こる:

8. パーティクル画像、サイズの変更
8.1 パーティクル画像の変更
Material タブ > Texture で選択可能:
| プリセット |
|---|
| Square |
| Circle |
| Snow |
| Leaf(デフォルト) |
| Character |

8.2 Custom(バナナ画像)
- Movie File In TOP で画像読み込み
- Fit TOP(Texture 画像の 1:1 比率に合わせる)
- Fit TOP を particlesGpu Container の Material タブ(Texture: Custom)の Particle Texture Map へドラッグ&ドロップ

ロゴ画像でも実験できる:

8.3 画像の色バリエーション(オリジナル)
- 8.2 の Movie File In TOP と Fit TOP はそのまま
- HSV Adjust TOP を 2 つ追加 して Hue Offset で色を変更
- Switch TOP に HSV Adjust TOP × 2 と Fit TOP の合計 3 つを接続
- Switch TOP の Index にコード
me.time.frame%3を入力 - Texture 3D TOP:
- Type: 2D Texture Array
- Pre Fill: ON
- Texture 3D TOP を particlesGpu の Particle Texture Map へドラッグ&ドロップ

参考: Interactive Particles – TouchDesigner + Kinect Tutorial 1
8.4 パーティクルの発生数とサイズ(Snow)
Texture を Snow に変更。ParticlesGPU タブで:
- Birth: 20
- Particle Size Min: 0.3
- Particle Size Max: 2

Composite TOP の先に Out TOP を接続して、Perform モードにすれば軽い動作で体験できる。
9. 静止パーティクル版(オリジナル)
9.1 はじめに
ここからは ParticlesGPU を利用した新バージョン。上から落ちるパーティクルではなく、画面上に留まる インタラクティブなパーティクルを設定する。床面投影にも応用可能:

9.2 TouchDesigner の起動と準備
スタートアップオペレータを削除して Palette を閉じる:

9.3 オペレータの構成
下図のように追加:

9.4 particlesGpu Container のパラメータ設定
Material タブ:
- Texture: Square(処理が軽い)

Forces タブ:
- External:
0 0 0(引力) - Turbulence:
0 0 0(乱流) - Optical Flow Magnitude: 5(インタラクティブ強度)
- Rotation Type: None

ParticlesGPU タブ:
- Birth: 5000
- Particle Size Min: 0.05
- Particle Size Max: 0.09

Reset ボタン を押すと溜まったパーティクルをリセットできる。パーティクルには寿命があるため、設定変更は既存パーティクルが消えるまで反映されない。すぐに確認したいときは Reset:

Particle Source タブ:
- Orientation: XY Plane
- Translate:
0 0 0

座標方向の参照:

Viewer Active で H キーを押して正面、スケール調整:

10. 推奨機材
このセットアップで効くスペック:
- GPU: パーティクル数を増やすほど効く。VRAM 12GB 以上(RTX 4070 SUPER / RTX 5070 など)を目安に
- ウェブカメラ: Optical Flow の解析精度はカメラ画質に直結。1080p 以上、できれば 4K(Logicool Brio 系など)
- プロジェクター(床面投影向け): 短焦点 + 4K が映像演出向け(EPSON EB シリーズ、BenQ 短焦点系など)
