
概要 📖 – 煙と炎をリアルタイム生成
NVIDIA Flow TOPは、NVIDIA Flow ライブラリの GPU 流体ソルバで煙・炎・爆発をボクセルグリッド上でシミュレートし、ボリュメトリックテクスチャとして出力する TOPです。Camera COMP の視点と Flow Emitter COMP の噴出源を組み合わせ、Sim Position / Sim Size でシミュレーション体積を定義します。Settings ページの 30+ パラメータで速度・煙・温度・燃料・渦度・燃焼・浮力・ブロック割当を制御し、Volume Shadow ページで煙への自己影投影も実現できます。
主な用途 🎯
- 煙・炎・爆発などのボリュメトリック流体シミュレーションを GPU でリアルタイム生成
- ライブ演出・VJ 用のリアクティブな炎/煙エフェクト (オーディオ反応で噴出量変化など)
- 3D シーンに合成する煙・蒸気の背景演出 (Camera COMP / Render TOP と組み合わせ)
- 燃焼シミュレーション (Ignition Temp / Burn per Temp で点火・燃焼を制御)
- Volume Shadow による煙への自己影投影でフォトリアルな煙演出を実現
データフロー 🔄
入力: NVIDIA Flow Emitter COMP (噴出源) + Camera COMP (視点)
↓
シミュレーション体積内のボクセル流体計算 (速度・煙・温度・燃料・渦度)
↓
Render Mode で密度 / デバッグ可視化を選択
↓
出力: ボリュメトリック煙/炎テクスチャ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page 📋
シミュレーション制御 🎬
Initialize .initialize 🔄Initialize (初期化) — シミュレーションを初期化します。ボリュメトリック状態を全てリセットし、最初のフレームから再構築を始めます。
Start .start ▶️Start (開始) — シミュレーションの再生を開始します。ボタンパルスで現在の状態からシム時間を進めます。
Play .play ⏯️Play (再生切替) — オンの時のみシミュレーションが 1 ステップずつ前進します。オフにすると一時停止します。
Speed .speed ⚡Speed (速度) — シミュレーションの更新レートを制御します。値を上げるとシム時間が速く進み、下げるとスローモーション化します。
Max Simulation Steps .maxsteps 🔢Max Simulation Steps (最大ステップ数) — 1 回の更新あたりの最大シミュレーションステップ数。値を増やすと高速移動オブジェクトの精度が上がりますが、その分パフォーマンスは重くなります。
カメラと噴出源 📷
Camera .camera 🎥Camera (カメラ) — シミュレーションを表示する Camera COMP を指定します。
Flow Emitters .emitters 💨Flow Emitters (噴出源) — シミュレーションに含める NVIDIA Flow Emitter COMP をスペース区切りまたはパターンで指定します。複数の噴出源を 1 つのシムで合成できます。
シミュレーション体積 📦
Sim Position .simposition 📍Sim Position (体積中心位置) — シミュレーション体積の中心ワールド座標 (X / Y / Z)。シミュレーションはこの体積外には広がりません。
Sim Size .simsize 📐Sim Size (体積サイズ) — シミュレーション体積のワールド単位サイズ。ブロックの総数は固定なので、サイズを小さくすると 1 ブロックあたりの解像度が上がりますが、同じ体積を覆うには大量のブロックが必要となり GPU 負荷が増えます。
Mem Usage .memusage 🧠Mem Usage (メモリ使用率) — 体積内で割当てるブロックの割合 (0.0〜1.0)。ほとんどのシムは体積を均一に埋めないため小さな値で十分です。高い値は極端なメモリ消費を招きます。
デバッグ表示 🔍
Show Blocks .showblocks 🧱Show Blocks (ブロック表示) — 使用中のシミュレーションブロックと体積の境界を可視化します。最適化やデバッグに有用です。
Show Emit Bounds .showemitbounds 📏Show Emit Bounds (噴出源境界表示) — 各 Emitter の影響範囲境界を可視化します。
Show Shapes .showshapes 🔷Show Shapes (噴出形状表示) — 各 Emitter の噴出形状そのものを可視化します。
Render Mode .rendermode 🎨
出力テクスチャの描画モード切替
| 項目 | 内部名 | 説明 |
|---|---|---|
| Density | .density |
通常の煙密度レンダリング (デフォルト、本番用途) |
| Debug Density | .debugdensity |
密度を色にマップした「レインボー」デバッグ表示 |
| Debug Velocity | .debugvelocity |
速度 XYZ を RGB に変換して可視化するデバッグ表示 |
Settings Page ⚙️
速度ダイナミクス 💨
Velocity Damping .veldamping 📉Velocity Damping (速度減衰) — 値を上げると速度がより速く減衰します。指数減衰カーブを使用。
Velocity Fade .velfade 📊Velocity Fade (速度フェード) — Damping と異なり、低い速度値ほど速くフェードアウトさせます。フェード速度は単位/秒。
Vel MacCormack Blend .velmaccormackblend 🔧Vel MacCormack Blend (MacCormack ブレンド) — 高い値ほど速度場がシャープに見えますが、アーティファクトも増えます。
煙ダイナミクス 💭
Smoke Damping .smokedamping 📉Smoke Damping (煙減衰) — 値を上げると煙密度がより速く減衰します。指数減衰カーブ。
Smoke Fade .smokefade 📊Smoke Fade (煙フェード) — 低い煙密度値ほど速くフェードアウト。単位/秒。
Smoke MacCormack Blend .smokemaccormackblend 🔧Smoke MacCormack Blend (煙 MacCormack ブレンド) — 高い値ほど煙がシャープに見えますが、アーティファクトも増えます。
温度ダイナミクス 🌡️
Temp Damping .tempdamping 📉Temp Damping (温度減衰) — 値を上げると温度がより速く減衰します。指数減衰カーブ。
Temp Fade .tempfade 📊Temp Fade (温度フェード) — 低い温度値ほど速くフェードアウト。単位/秒。
燃料ダイナミクス ⛽
Fuel Damping .fueldamping 📉Fuel Damping (燃料減衰) — 値を上げると燃料がより速く減衰します。指数減衰カーブ。
Fuel Fade .fuelfade 📊Fuel Fade (燃料フェード) — 低い燃料値ほど速くフェードアウト。単位/秒。
渦度 🌀
Vorticity Strength .vortstrength 💪Vorticity Strength (渦度強度) — 回転乱流の量を倍率で制御。0 にすると渦が全く発生しません。高い値ほど乱流が強まり、低い値ほど層流に近づきます。
Vorticity from Velocity .vortfromvel 🌪️Vorticity from Velocity (速度由来の渦度) — 速度場から発生する渦度の量。
Vorticity from Smoke .vortfromsmoke 🌫️Vorticity from Smoke (煙由来の渦度) — 煙密度から発生する渦度の量。
Vorticity from Temp .vortfromtemp ♨️Vorticity from Temp (温度由来の渦度) — 温度場から発生する渦度の量。
Vorticity from Fuel .vortfromfuel 🔥Vorticity from Fuel (燃料由来の渦度) — 燃料場から発生する渦度の量。
Vorticity Constant .vortconstant 🎚️Vorticity Constant (基準渦度) — シミュレーション全体に常時加わる定数的な渦度値。
燃焼制御 🔥
Ignition Temp .ignitiontemp 🌡️Ignition Temp (発火温度) — 燃焼が始まる最低温度のしきい値。この温度を超えると燃料の燃焼が開始します。
Burn per Temp .burnpertemp 🔥Burn per Temp (温度あたり燃焼量) — 温度レベルに対する燃料消費量。低い値だと一定温度でも燃料が燃え残る場合があります。
Smoke per Burn .smokeperburn 💨Smoke per Burn (燃焼あたり煙生成量) — 1 単位の燃焼で発生する煙の量。
Temp per Burn .tempperburn 🌡️Temp per Burn (燃焼あたり温度生成量) — 1 単位の燃焼で発生する温度の量。
Fuel per Burn .fuelperburn ⛽Fuel per Burn (燃焼あたり燃料消費量) — 1 単位の燃焼で消費される燃料の量。
重力・浮力・冷却 ⚖️
Gravity .gravity ⬇️Gravity (重力ベクトル) — Buoyancy パラメータと組み合わせて使う重力方向 (X / Y / Z)。Buoyancy が浮力の強度を決めます。
Buoyancy .buoyancy 🎈Buoyancy (浮力) — Gravity パラメータと連動。値が高いほど Gravity の影響が強くなり煙が上昇しやすくなります。
Cooling Rate .coolingrate ❄️Cooling Rate (冷却率) — システムの冷却レート (指数関数的)。
Expansion .expansion 🎯Expansion (膨張係数) — システム内の気体的体積の膨張量を制御。
ブロック割当しきい値 🧱
Velocity Alloc Weight .velallocweight ⚖️Velocity Alloc Weight (速度割当重み) — 0 ならブロック割当は内部しきい値と速度の重み付けに依存。非ゼロなら下の Velocity Alloc Threshold が使用されます。
Velocity Alloc Threshold .velallocthreshold 🚧Velocity Alloc Threshold (速度割当しきい値) — Velocity Alloc Weight が非ゼロのとき、速度の大きさがこの値を下回るブロックは解放されます (煙/燃料のしきい値が有効でない限り)。
Smoke Alloc Weight .smokeallocweight ⚖️Smoke Alloc Weight (煙割当重み) — 0 なら内部しきい値と煙密度の重みでブロック割当を決定。非ゼロなら下の Smoke Alloc Threshold が使われます。
Smoke Alloc Threshold .smokeallocthreshold 🚧Smoke Alloc Threshold (煙割当しきい値) — Smoke Alloc Weight が非ゼロのとき、煙密度がこの値を下回るブロックは解放されます (速度/燃料のしきい値が有効でない限り)。
Fuel Alloc Weight .fuelallocweight ⚖️Fuel Alloc Weight (燃料割当重み) — 0 なら内部しきい値と燃料密度の重みでブロック割当を決定。非ゼロなら下の Fuel Alloc Threshold が使われます。
Fuel Alloc Threshold .fuelallocthreshold 🚧Fuel Alloc Threshold (燃料割当しきい値) — Fuel Alloc Weight が非ゼロのとき、燃料密度がこの値を下回るブロックは解放されます (速度/煙のしきい値が有効でない限り)。
Volume Shadow Page 🌑
影の基本設定 🌑
Enable .enableshadow ✅Enable (影レンダリング有効化) — シミュレーションのボリュームシャドウレンダリングを有効化します。シャドウはグリッドの burn チャンネルに上書きされる光強度値 (0=完全に影 〜 1) を生成します。
Draw Debug .drawshadowdebug 🔍Draw Debug (影デバッグ表示) — 使用中のボリュームシャドウブロックを可視化します。最適化やデバッグに有用。
Override Emitter Intensity Mask .overrideemitter 🔧Override Emitter Intensity Mask (Emitter 強度マスク上書き) — Emitter のレンダリングマテリアルを自動調整し、ボリュームシャドウが可視になるようにします。Emitter 側の Burn Intensity Mask と Intensity Bias を上書きします。
Light .light 💡Light (ライト指定) — ボリュームシャドウ生成に使う Light COMP。shadow caster である必要があります。位置と向きのみ使われ、色と強度は無視されます。
メモリと解像度 📐
Shadow Resolution .shadowresolution 🔢Shadow Resolution (影マップ解像度) — シャドウマップボリュームテクスチャの解像度。テクスチャはキューブ配置のため shadowresolution^3 ブロック分の空間が確保されます。
Min Memory Usage .shadowminusage 🧠Min Memory Usage (最小メモリ割合) — ボリュームシャドウブロックに最初に割当てるメモリの割合。
Max Memory Usage .shadowmaxusage 🧠Max Memory Usage (最大メモリ割合) — ボリュームシャドウブロックに割当てるメモリの最大割合。
影の強度 💡
Intensity Scale .shadowintensityscale 📊Intensity Scale (強度スケール) — 影の暗さをスケール倍率で制御します。
Min Intensity .shadowminintensity 📉Min Intensity (最小強度) — 影強度の下限値。これ以上は暗くなりません。
Blend Bias .shadowblendbias ⚖️Blend Bias (ブレンドバイアス) — ブレンド強度を一定量オフセットします。グリッドのブレンド値が 1 を超える部分に影が出て、1 を下回る部分には影が出ません。0〜1 の間は影の強度がスケールされます。
ブレンドマスク 🎚️
Burn Blend Mask .shadowburnmask 🔥Burn Blend Mask (燃焼ブレンドマスク) — シミュレーション内の burn 値で影のブレンド強度を制御。正の値で burn がブレンド強度を増加、負の値で減少。
Smoke Blend Mask .shadowsmokemask 💨Smoke Blend Mask (煙ブレンドマスク) — 煙値で影のブレンド強度を制御。正の値で煙がブレンド強度を増加、負の値で減少。
Temp Blend Mask .shadowtempmask 🌡️Temp Blend Mask (温度ブレンドマスク) — 温度値で影のブレンド強度を制御。正の値で温度がブレンド強度を増加、負の値で減少。
Fuel Blend Mask .shadowfuelmask ⛽Fuel Blend Mask (燃料ブレンドマスク) — 燃料値で影のブレンド強度を制御。正の値で燃料がブレンド強度を増加、負の値で減少。
実践アイデア 💡
Example 1: ライブ演出の炎 🔥
NVIDIA Flow Emitter COMP (Box shape) → NVIDIA Flow TOP → Composite TOP → Out TOP
VJ / ライブ演出向けに NVIDIA Flow Emitter COMP で燃料源と温度源を定義し、NVIDIA Flow TOP で炎を実時間生成、後段で背景レイヤと Composite TOP 合成して投影する基本フロー。Ignition Temp を 600 程度に設定すると安定した炎、Buoyancy を 1.5〜2 で上昇感が出ます。
- NVIDIA Flow Emitter COMP を配置し Fuel と Temperature を有効化
- Camera COMP を Perspective 投影で配置
- NVIDIA Flow TOP の Camera と Flow Emitters に上記 2 つを指定
- Setup ページの Sim Position / Sim Size でシミュレーション体積を設定
- Settings ページの Ignition Temp / Burn per Temp で炎の挙動を調整
- 出力を Composite TOP で背景レイヤと合成
Example 2: 爆発エフェクト 💥
Trigger CHOP → NVIDIA Flow Emitter COMP (impulse) → NVIDIA Flow TOP → Level TOP
Trigger CHOP で瞬間的に Emitter の Fuel / Temperature を急増させ、爆発の初速と高温を作る用例。Vorticity Strength を 0.3〜0.5 に上げて乱流感を出し、Volume Shadow を有効化して煙球の自己影でフォトリアルさを増します。
- Trigger CHOP で爆発タイミングを生成し Emitter の Fuel 量を瞬時に増加
- NVIDIA Flow TOP の Settings ページで Vorticity Strength を 0.3〜0.5 に設定
- Volume Shadow ページの Enable をオン、Light に Light COMP を指定
- 後段 Level TOP でコントラスト・色味を調整
Example 3: 産業煙の可視化 🏭
NVIDIA Flow Emitter COMP (Smoke only) → NVIDIA Flow TOP → Tone Map TOP
煙突や煙突風シーン用に Fuel / Ignition を無効化して煙のみを連続噴出させるシミュレーション。Smoke Damping を小さく (0.05〜0.1)、Buoyancy を 1.0 前後にすると上昇する継続的な煙が得られ、最後段で Tone Map TOP を通すと自然な階調で表示できます。
- Emitter COMP の Fuel を 0 にして Smoke と Velocity のみ噴出
- Settings ページの Smoke Damping を 0.05〜0.1 に下げて煙を長持ちさせる
- Settings ページの Buoyancy を 1.0 前後にして煙が自然に上昇するよう調整
- 出力を Tone Map TOP でトーンマッピング
関連オペレータ 🔗
類似機能OP 🔍
- NVIDIA Flex TOP — NVIDIA 製粒子物理ソルバを使ったクロス・粒子・ソフトボディ系シミュレーション TOP
組み合わせ推奨OP 🔄
- NVIDIA Flow Emitter COMP — 必須パートナー: 燃料・温度・速度の噴出源を定義する COMP
- Camera COMP — 必須パートナー: シミュレーション体積を見るカメラ (Perspective 投影限定)
- Light COMP — Volume Shadow を有効化したときの影投影光源
- Render TOP — 3D ジオメトリと NVIDIA Flow TOP の出力を同一シーンで合成する用途
- Composite TOP — Flow の出力を背景レイヤと加算/オーバーレイ合成
- GLSL TOP — Flow の出力をシェーダ入力にしてカスタム後処理
前処理・後処理TOP 🎯
Info CHOP情報 📊
NVIDIA Flow TOPは Info CHOP によるシム実行状況・ブロック割当数・GPU メモリ使用量等の詳細情報取得に対応しています。
TOP固有情報 🖼️
resx: TOP の出力解像度 X (ピクセル単位)resy: TOP の出力解像度 Y (ピクセル単位)aspectx: アスペクト比 Xaspecty: アスペクト比 Ydepth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: シミュレーションが画面に表示されない / 真っ黒
✅ Solution:
Cameraパラメータに Camera COMP が指定されているか確認 (Perspective 投影限定)Sim Position/Sim Sizeがカメラ視野内にあるかShow Blocksを有効化して確認Flow Emittersに有効な NVIDIA Flow Emitter COMP が指定されているか確認Playがオンになっているか、Initialize/Startをパルスして再起動
❌ Problem: 炎が発火しない / 燃焼が起きない
✅ Solution:
- Emitter COMP の Fuel チャンネルが有効か、噴出量が 0 でないか確認
Ignition Tempが高すぎないか確認 (デフォルトより低めにすると点火しやすい)Burn per Tempを上げて燃焼速度を増やす- Emitter の Temperature が
Ignition Tempを超えているかRender Modeを Debug Density で確認
❌ Problem: 煙がすぐ消える / シルエットが小さい
✅ Solution:
Smoke Damping/Smoke Fadeを下げて煙の寿命を延ばすBuoyancyを上げて煙を上昇させ広範囲に行き渡らせるSim Sizeを広げてシミュレーション体積を拡大Mem Usageを増やしてブロック割当上限を引き上げる
❌ Problem: GPU メモリが急増する / フレームレートが激落ち
✅ Solution:
Sim Sizeを小さくしてシミュレーション体積を縮小Mem Usageの値を下げて割当ブロック数を制限Max Simulation Stepsを 1〜2 に下げて 1 フレームあたりの計算量を削減Velocity Alloc Threshold/Smoke Alloc Thresholdを上げて不要ブロックを早期解放- Common Page の
Output ResolutionをHalf/Quarterに下げて後段で拡大
❌ Problem: Volume Shadow が効かない / 影が見えない
✅ Solution:
- Volume Shadow ページの
Enableがオンになっているか確認 Lightに shadow caster として設定済の Light COMP を指定Override Emitter Intensity Maskをオンにして Emitter 側の Burn Intensity Mask を自動上書きIntensity Scaleを上げて影を濃くする
参考資料 📚
その他 🔗
- TouchDesigner Wiki — Category:TOPs
- TouchDesigner Wiki — Pixel Formats 解説
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – NVIDIA Flow TOP
- TouchDesigner公式ドキュメント – NVIDIA Flow Emitter COMP (必須パートナー)
- TouchDesigner公式ドキュメント – Camera COMP (Perspective 投影で指定)

