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

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

NVIDIA Flow Emitter COMP の機能を示す図

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

概要 📖 – 煙や炎の発生源を作る

NVIDIA Flow Emitter COMPは、NVIDIA Flow 燃焼シミュレーションに対して燃料・温度・煙を注入する Emitter として、あるいはシミュレーションと衝突する Collider として動作する COMP で、Sphere / Box / Capsule / Shape TOP / Shape SOP の形状から物質を放出するです。NVIDIA Flow シミュレーション (CUDA GPU 上で動作する燃焼・煙・炎ソルバ) を構成する中核コンポーネントの 1 つで、Mode パラメータで Emitter / Collider を切替え、Type パラメータで形状を選び、Fuel / Smoke / Temp の値を流し込むことで炎・煙・爆発などの表現を構築できます。

主な用途 🎯

  • NVIDIA Flow 燃焼シミュレーションに 燃料 (Fuel) / 温度 (Temp) / 煙 (Smoke) を注入する Emitter モードとして動作させる
  • Collider モードに切替え、燃焼シミュレーションと衝突する剛体障害物 (壁・キャラ・SOP 形状) として機能させる
  • Sphere / Box / Capsule / Shape TOP / Shape SOP の 5 種類のエミッタ形状で、任意の輪郭から炎・煙を噴出
  • Linear Velocity / Angular Velocity による噴出方向制御と Velocity / Smoke / Temp / Fuel Correction Rate による「ターゲット値への収束速度」のチューニング
  • Fuel Release Temp + Fuel Release で温度トリガ式の追加燃料注入を実現し、固体燃料 (固→気) のフェーズ変化 を擬似的にシミュレート可能

データフロー 🔄

入力: エミッタ形状 (Sphere / Box / Capsule / Shape TOP / Shape SOP) + 注入物質 (Fuel / Smoke / Temp) + Linear/Angular Velocity + 各 Correction Rate

Emitter がオーバーラップする Flow シミュレーションブロックに値を強制 (Correction Rate で強度調整)

出力: Nvidia Flow TOP の密度・温度・速度フィールドに反映

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Emitter Page 🔥

Active / Mode / Type 🎚️

エミッタ有効化:

  • Active: active — エミッタをオン / オフする。オフのときは Flow シミュレーションに何も注入されない

Mode .mode 🎛️

Emitter (物質注入) と Collider (剛体衝突) のどちらとして動作させるかを選択するメニューパラメータ

項目 内部名 説明
Emitter .emitter 毎ステップ Flow シミュレーションに対して燃料 (fuel) を注入する Emitter として動作 (デフォルト)
Collider .collider 燃焼シミュレーションが衝突する剛体オブジェクトとして動作

Type .type 📐

エミッタ形状の種類を選択するメニューパラメータ (5 種類)

項目 内部名 説明
Sphere .sphere 球形エミッタ。寸法は下の Radius で制御
Box .box 直方体エミッタ。寸法は下の Size で制御
Capsule .capsule 両端が半球のカプセル形状。RadiusLength で制御
Shape TOP .shapetop TOP の輝度・チャンネル値から形状を生成 (解像度は 2048×2048 が上限)
Shape SOP .shapesop SOP のジオメトリから形状を生成

Shape Dimensions 📏

形状寸法・形状ソース指定:

  • Size: size (sizex, sizey, sizez) — Box または Shape TOP Type のエミッタ寸法 (X/Y/Z スケール)
  • Radius: radius — Sphere または Capsule Type のエミッタ半径
  • Length: length — Capsule Type のカプセル長 (両端半球の中心間距離)
  • Shape OP: shapeop — Type が Shape TOP / Shape SOP のとき、形状ソースとして使う TOP / SOP のパス (TOP は 2048×2048 を超える解像度不可)
  • Shape Channel: shapechannel — Shape TOP 使用時、形状判定に使う色チャンネル
  • Shape Threshold: shapethreshold — Shape TOP 使用時、この閾値以上のピクセルだけがエミッタとして扱われる

Center of Mass / Inner-Outer Width ⚖️

重心と内側 / 外側の厚み:

  • Center of Mass: centerofmass (centerofmassx, centerofmassy, centerofmassz) — エミッタの重心位置 (X/Y/Z)
  • Inner Width: innerwidth — 表面形状から内側に向かってエミッタ範囲を厚みづける係数。デフォルト 1.0 で形状を中まで詰まった solid として扱う
  • Outer Width: outerwidth — 表面形状から外側に向かってエミッタ範囲を厚みづける係数

Linear / Angular Velocity 💨

並進・回転の目標速度:

  • Linear Velocity: linearvel (linearvelx, linearvely, linearvelz) — システムに注入する燃料の目標並進速度 (X/Y/Z)
  • Angular Velocity: angularvel (angularvelx, angularvely, angularvelz) — システムに注入する燃料の目標回転速度 (X/Y/Z 軸まわり)

Velocity Correction Rate 🎯

速度の収束強度 (X/Y/Z):

  • Velocity Correction Rate: velcorrate (velcorratex, velcorratey, velcorratez) — 目標速度への収束強度。各シミュレーションブロックには独自の速度があり、エミッタはオーバーラップするブロックの値を自分の目標値に近づける。0 で何も影響しない、0-1 でゆるく影響、10-100 で値を強制

Smoke / Smoke Correction Rate 💨

煙の生成量と収束強度:

  • Smoke: smoke — 燃料 1 単位あたりに生成される煙の量
  • Smoke Correction Rate: smokecorrate — 目標煙レベルへの収束強度。0 で無効、0-1 でゆるく、10-100 で強制

Temp / Temp Correction Rate 🌡️

温度と収束強度:

  • Temp: temp — システムの温度
  • Temp Correction Rate: tempcorrate — 目標温度レベルへの収束強度。0 で無効、0-1 でゆるく、10-100 で強制

Fuel / Fuel Correction Rate ⛽

燃料供給量と収束強度:

  • Fuel: fuel — 1 シミュレーションステップごとにシステムに加える燃料量。燃料は気体として扱われ、燃焼時に温度 (および一定の密度) に変換される
  • Fuel Correction Rate: fuelcorrate — 目標燃料レベルへの収束強度。0 で無効、0-1 でゆるく、10-100 で強制

Fuel Release (温度トリガ式追加燃料) 🔥

温度しきい値による追加燃料放出 (固体燃料風):

  • Fuel Release Temp: fuelreleasetemp — Fuel Release を発火させる温度しきい値
  • Fuel Release: fuelrelease — 上記しきい値を超えたときに追加で放出する燃料量。固体燃料 (熱を加えると気体燃料が放出されるタイプ) のシミュレーションに有効

Alloc Scale / Alloc Predict 🧱

シミュレーション空間のブロック割り当て:

  • Alloc Scale: allocscale — エミッタのブロック割り当てスケール。0.0 で割り当て無効、1.0 がデフォルト、1.0 超で事前割り当てを増やしてシミュレーション方向が予測しづらいケースに対応
  • Alloc Predict: allocpredict — 高速エミッタ用の進行方向ブロック事前割り当てを制御 (Nvidia Flow TOP の Show Blocks でビジュアル化可能)

Xform Page 📁

Transform Order .xord 🎛️

コンポーネントに対する Scale / Rotate / Translate の適用順序を指定するメニューパラメータ

項目 内部名 説明
Scale Rotate Translate .srt T * R * S * Position (デフォルト)
Scale Translate Rotate .str R * T * S * Position
Rotate Scale Translate .rst T * S * R * Position
Rotate Translate Scale .rts S * T * R * Position
Translate Scale Rotate .tsr R * S * T * Position
Translate Rotate Scale .trs S * R * T * Position

Rotate Order .rord 🎛️

X / Y / Z 軸の回転を合成する順序を指定するメニューパラメータ

項目 内部名 説明
Rx Ry Rz .xyz R = Rz * Ry * Rx
Rx Rz Ry .xzy R = Ry * Rz * Rx
Ry Rx Rz .yxz R = Rz * Rx * Ry
Ry Rz Rx .yzx R = Rx * Rz * Ry
Rz Rx Ry .zxy R = Ry * Rx * Rz
Rz Ry Rx .zyx R = Rx * Ry * Rz

Transform 値 📏

位置・回転・スケールを XYZ 軸で指定する基本パラメータ:

  • Translate: t (tx, ty, tz) — X / Y / Z 軸の移動量。NVIDIA Flow Emitter COMP 自体の配置位置 (シミュレーション空間内のエミッタ位置)
  • Rotate: r (rx, ry, rz) — X / Y / Z 軸まわりの回転角度 (度)
  • Scale: s (sx, sy, sz) — X / Y / Z 軸の非一様スケール
  • Pivot: p (px, py, pz) — Scale / Rotate の基準点
  • Uniform Scale: scale — 3 軸を一括スケーリング

Parent Transform Source .parentxformsrc 🎛️

コンポーネントの初期位置の参照元を選択するメニューパラメータ (旧 Constrain To)

項目 内部名 説明
Parent (Hierarchy) .parent 親階層の transform を使用 (デフォルト)
Specify Parent Object .specifyparent Parent Object で指定した任意 OP の transform を使用
World Origin .worldorigin ワールド原点を基準にする (親階層の transform を無視)

Forward Direction .forwarddir 🎛️

前方として扱う軸を選択するメニューパラメータ

項目 内部名 説明
+X .posx X 軸正方向を前方とする
-X .negx X 軸負方向を前方とする
+Y .posy Y 軸正方向を前方とする
-Y .negy Y 軸負方向を前方とする
+Z .posz Z 軸正方向を前方とする
-Z .negz Z 軸負方向を前方とする (デフォルト)

Look At Up Vector .lookup 🎛️

Look At 制約での上方向ベクトルの扱いを選択するメニューパラメータ

項目 内部名 説明
Don’t Use Up Vector .off 上方向ベクトルを使用しない (Look At ターゲットが Y 軸を跨がない場合に有効)
Use Up Vector .on Orient Up Vector で指定した軸を上方向として精密に回転を定義
Use Quaternions .quat クォータニオンで球面上の最短経路として回転を計算
Use Roll .roll Roll 角度を使用した回転定義

Look At / Path 🎯

Look At 制約 / SOP パス追従パラメータ:

  • Parent Object: parentobject — Parent Transform Source が specifyparent のとき、親として使う任意 OP のパス
  • Look At: lookat — 常に向き続けるターゲット 3D COMP のパス
  • Path SOP: pathsop — このコンポーネントが追従するパスを定義する SOP
  • Roll: roll — パス上を移動するときの回転角度
  • Position: pos — パス上の位置 (0 = 開始点, 1 = 終端点, 最大 10 で複数周回)
  • Orient along Path: pathorient — オンの場合、コンポーネントの +Z 軸がパスの進行方向を向く
  • Orient Up Vector: up (upx, upy, upz) — Look At 制約の上方向ベクトル
  • Auto-Bank Factor: bank — パスの曲率に応じた自動バンク (0 で無効)

Pre-Xform Page 📁

Transform Order (Pre) .pxord 🎛️

Pre-Xform レイヤの Scale / Rotate / Translate 適用順序を指定するメニューパラメータ (Xform Page と同じ 6 種)

項目 内部名 説明
Scale Rotate Translate .srt T * R * S * Position
Scale Translate Rotate .str R * T * S * Position
Rotate Scale Translate .rst T * S * R * Position
Rotate Translate Scale .rts S * T * R * Position
Translate Scale Rotate .tsr R * S * T * Position
Translate Rotate Scale .trs S * R * T * Position

Rotate Order (Pre) .prord 🎛️

Pre-Xform レイヤの回転合成順序を指定するメニューパラメータ (Xform Page と同じ 6 種)

項目 内部名 説明
Rx Ry Rz .xyz R = Rz * Ry * Rx
Rx Rz Ry .xzy R = Ry * Rz * Rx
Ry Rx Rz .yxz R = Rz * Rx * Ry
Ry Rz Rx .yzx R = Rx * Rz * Ry
Rz Rx Ry .zxy R = Ry * Rx * Rz
Rz Ry Rx .zyx R = Rx * Ry * Rz

Pre-Xform レイヤ 📁

Pre-Xform レイヤ (メイン Xform の前に適用される追加 transform):

  • Apply Pre-Transform: pxform — Pre-Xform レイヤの有効化
  • Translate / Rotate / Scale / Pivot (Pre): pt / pr / ps / pp — Pre レイヤの位置・回転・スケール・ピボット
  • Uniform Scale (Pre): pscale — Pre レイヤの一括スケーリング
  • Reset Transform / Commit to Main: preset / pcommit — Pre レイヤをリセット、または Main へコミット
  • Xform Matrix/CHOP/DAT: xformmatrixop — 4×4 行列を直接指定して transform を適用 (XformMatrix * PreXForm * Position)

Render Page 📁

Render 設定 🖌️

レンダリング動作パラメータ:

  • Material: material — 内部ジオメトリに適用する MAT
  • Render: render — Render TOP でこのコンポーネントのジオメトリを可視化するか (Render Flag との論理 AND)
  • Draw Priority: drawpriority — 描画順 (値が小さいほど後に描画)。Transparency 制御で頻用
  • Pick Priority: pickpriority — Render Pick CHOP / DAT の Search Area 内で複数 OP が見つかったときの優先度 (値が大きいほど優先)
  • Wireframe Color: wcolor (wcolorr, wcolorg, wcolorb) — ワイヤーフレーム表示時の色
  • Light Mask: lightmask — このジオメトリに影響する Light COMP の制限リスト

Common Page 🔧

Common Page (sync placeholder) 🔧

COMP family 共通の Common Page (canonical 同期待ち):

  • Common Page: canonical 同期待ちの placeholder

実践アイデア 💡

Example 1: 立ち昇る炎: Sphere エミッタからの最小炎構成 🔥

NVIDIA Flow Emitter COMP (Mode=Emitter, Type=Sphere, Fuel + Temp + Linear Velocity +Y) → Nvidia Flow TOP (密度・温度を読み出し) → Render TOP

NVIDIA Flow Emitter COMP を Sphere Type、Mode=Emitter で配置し、Linear Velocity を +Y 方向に、Temp を点火可能な温度に、Fuel を継続供給することで立ち昇る炎が表現できる。出力は Nvidia Flow TOP で密度・温度ボリュームとして取り出し、Render TOP に渡す。

  1. NVIDIA Flow Emitter COMP を作成し、ModeEmitterTypeSphereRadius0.5 程度に設定
  2. Temp3.0 (点火に十分な温度) に、Fuel1.0 に設定
  3. Linear Velocity(0, 5, 0) に設定し、上方向に燃料を噴き上げる
  4. Smoke0.2 前後にして煙の生成量を調整
  5. Nvidia Flow TOP をシーンに追加し、Render TOP / ボリュームレンダリングで炎を可視化

Example 2: 煙の壁: Box エミッタを Collider で塞き止める 💨

NVIDIA Flow Emitter COMP (Mode=Emitter, Type=Box) + 別の NVIDIA Flow Emitter COMP (Mode=Collider, Type=Box, 壁) → Nvidia Flow TOP → Render TOP

Flow Emitter COMP は Mode=Collider に切替えると剛体衝突オブジェクトとして機能する。エミッタで放出した煙が Collider モードの Box にぶつかって流れを変える挙動を構築し、煙が建物の壁を回り込む表現などに使える。

  1. 1 つ目の NVIDIA Flow Emitter COMP を Mode=EmitterType=BoxSmoke 多めで配置
  2. 2 つ目の NVIDIA Flow Emitter COMP を Mode=ColliderType=Box にし、エミッタの噴出方向にスケールで壁状に配置
  3. Linear Velocity を Collider に向かう方向に設定し、煙が壁にぶつかる
  4. Nvidia Flow TOP で密度フィールドを取得して結果を確認
  5. Collider の Translate / Scale を変更すると、煙の流れが動的に変化する

Example 3: ロゴ形状からの炎: Shape TOP エミッタ 🖼️

Text TOP (ロゴ文字) → NVIDIA Flow Emitter COMP (Type=Shape TOP, Shape OP=text1, Shape Threshold) → Nvidia Flow TOP → Render TOP

Type=Shape TOP を使うと、任意の TOP の輝度パターンをエミッタ形状として使える。Text TOP でロゴ文字を作り、それをエミッタ形状として指定すると、ロゴの輪郭から炎が噴き上がる演出が作れる。解像度は 2048×2048 が上限。

  1. Text TOP でロゴ文字を作成 (例: text1、解像度 1024×512)
  2. NVIDIA Flow Emitter COMP を作成し、TypeShape TOP に設定
  3. Shape OPtext1 を指定し、Shape Threshold0.5 程度に設定
  4. Linear Velocity(0, 3, 0) に、TempFuel を点火可能な値に設定
  5. Nvidia Flow TOP でロゴ形状から立ち昇る炎を確認

Example 4: 爆発演出: Fuel Release 温度トリガで瞬間爆発 💥

NVIDIA Flow Emitter COMP (Type=Sphere, 短時間 Active + Fuel Release Temp + 高い Fuel Release) → Nvidia Flow TOP → Render TOP

Fuel Release TempFuel Release パラメータを使うと、温度がしきい値を超えた瞬間に追加燃料を一気に放出する固体燃料風挙動が実装できる。瞬間的に大量燃料を放出することで爆発演出 (花火・火薬・粉塵爆発など) を表現できる。Active をパルス的に短時間オンにすることでスパーク的な点火源を作る。

  1. NVIDIA Flow Emitter COMP を Type=SphereRadius=1.0 程度で配置
  2. Temp5.0 以上の高温に、Fuel を低め (0.2) に設定 (普段は微小な熱源)
  3. Fuel Release Temp4.0 程度に、Fuel Release10.0 等の大きい値に設定
  4. Active を短時間 (数フレーム) だけオンに切替えると、温度がしきい値を超えて Fuel Release が発火し爆発が起きる
  5. Alloc Predict を上げると爆発の急激な拡散にブロック割り当てが追いつき、形状が崩れにくくなる

関連オペレータ 🔗

類似機能OP 🔍

  • TODO

組み合わせ推奨OP 🔄

  • Nvidia Flow TOP — NVIDIA Flow シミュレーションの密度・温度・速度フィールドを GPU テクスチャとして取り出すインタフェース
  • Geometry COMP — Shape SOP / Bounding Box SOP のホストや、エミッタ参照対象 SOP の格納先
  • Camera COMP — Render TOP で Flow シミュレーション結果を撮影するためのカメラ
  • Info CHOP — Emitter COMP の cook 時間・transform チャンネル等を CHOP として取得

前処理・後処理COMP 🎯


Info COMP情報 📊

NVIDIA Flow Emitter COMP は Info CHOP / Info DAT による詳細情報取得に対応しています。Flow シミュレーション結果の密度・温度フィールドは Nvidia Flow TOP 経由で取得します。

COMP 固有情報 📦

  • num_children: コンポーネント内部の子 OP の総数
  • num_dats: 内部 DAT の数
  • num_chops: 内部 CHOP の数
  • num_tops: 内部 TOP の数
  • num_sops: 内部 SOP の数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数
  • cpu_memory / gpu_memory: OP が確保している CPU / GPU メモリ使用量 (NVIDIA Flow は CUDA 上で動作するため GPU 側が主)

Object 固有情報 📊

  • tx / ty / tz: NVIDIA Flow Emitter COMP 自体のワールド位置 (Translate)
  • rx / ry / rz: NVIDIA Flow Emitter COMP 自体の回転 (度)
  • sx / sy / sz: NVIDIA Flow Emitter COMP 自体のスケール
  • active: 現在の Active 状態 (0/1)。Emitter としての注入が有効か否か

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 炎・煙が出ない / Flow シミュレーションが点火しない
✅ Solution:

  • Active パラメータがオンになっているか、ModeEmitter になっているか確認
  • Temp0 ではないか確認 (温度 0 では燃焼が起きない、最低限の温度が必要)
  • Fuel0 になっていないか、Fuel Correction Rate0 で目標値に到達できない設定になっていないか確認
  • シーンに Nvidia Flow TOP が配置されているか、Emitter COMP が Flow TOP の参照範囲内にあるか確認

❌ Problem: Shape TOP / Shape SOP からの形状エミッタが反映されない
✅ Solution:

  • TypeShape TOP または Shape SOP になっているか確認
  • Shape OP パラメータに正しい TOP / SOP パスが入っているか確認
  • Shape TOP の解像度が 2048×2048 を超えていないか確認 (公式上限)
  • Shape Threshold が高すぎないか確認 (高いと閾値を超えるピクセルがなくなりエミッタが空になる)

❌ Problem: 煙・炎の向きが意図と違う / 噴出方向がずれる
✅ Solution:

  • Linear Velocity の X/Y/Z 成分を確認 (上向き炎なら (0, +Y, 0))
  • Velocity Correction Rate が低すぎる場合、周囲の Flow シミュレーションの流れに引きずられて方向が出ない — 値を上げて目標速度を強制
  • Emitter COMP 自体の Rotate パラメータでエミッタごと回転して相対方向を調整
  • Angular Velocity を加えると渦巻き状の炎・煙になる (上昇しながら回転)

❌ Problem: 爆発が小さい / Fuel Release が発火しない
✅ Solution:

  • Fuel Release Temp がシステムの Temp より大きすぎないか確認 (Temp がしきい値を超えないと発火しない)
  • Fuel Release の値を大きく (10.0 以上) すると爆発が派手になる
  • Alloc PredictAlloc Scale を上げて、急激な爆発拡散にブロック割り当てが追いつくようにする
  • 周囲の Nvidia Flow TOP のシミュレーション解像度・サブステップ数が不足していないか確認

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました