NVIDIA Flow TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

NVIDIA Flow TOP のボクセル流体シミュレーション機能を示すサムネイル

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 煙と炎をリアルタイム生成

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 で密度 / デバッグ可視化を選択

出力: ボリュメトリック煙/炎テクスチャ

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 で上昇感が出ます。

  1. NVIDIA Flow Emitter COMP を配置し Fuel と Temperature を有効化
  2. Camera COMP を Perspective 投影で配置
  3. NVIDIA Flow TOP の Camera と Flow Emitters に上記 2 つを指定
  4. Setup ページの Sim Position / Sim Size でシミュレーション体積を設定
  5. Settings ページの Ignition Temp / Burn per Temp で炎の挙動を調整
  6. 出力を 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 を有効化して煙球の自己影でフォトリアルさを増します。

  1. Trigger CHOP で爆発タイミングを生成し Emitter の Fuel 量を瞬時に増加
  2. NVIDIA Flow TOP の Settings ページで Vorticity Strength を 0.3〜0.5 に設定
  3. Volume Shadow ページの Enable をオン、Light に Light COMP を指定
  4. 後段 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: アスペクト比 X
  • aspecty: アスペクト比 Y
  • depth: 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 ResolutionHalf / Quarter に下げて後段で拡大

❌ Problem: Volume Shadow が効かない / 影が見えない
✅ Solution:

  • Volume Shadow ページの Enable がオンになっているか確認
  • Light に shadow caster として設定済の Light COMP を指定
  • Override Emitter Intensity Mask をオンにして Emitter 側の Burn Intensity Mask を自動上書き
  • Intensity Scale を上げて影を濃くする

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました