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

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

Force COMP が Bullet シミュレーション内の Actor COMP に外力を加える様子を示す図

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

概要 📖 – Bullet 物理シミュレーションの外力・トルク・力場

Force COMPは、親 Bullet Solver COMP 配下で Actor COMP の剛体 body に線形力・トルク・球状力場を加える、Bullet 物理シミュレーション用の外力ジェネレータ COMPです。Force ページで body 中心 (もしくは Relative Position オフセット) に Newtons 単位の力やトルクを与え、Force Field ページで球状の引力 / 斥力場を生成することで、風・推進・爆発・吸引などダイナミックな力学効果を構築できます。

主な用途 🎯

  • Actor COMP の特定 body に対し Newtons 単位の線形力 (Force XYZ) を継続的に加える (風・推進力・カスタム重力等)
  • Relative Position を中心からオフセットして力を加え、副次的な トルク を発生させて回転運動を誘起する
  • Torque XYZ でロール / ピッチ / ヨー軸の回転モーメントを直接適用 (回転翼・スピン・自転シミュレーション)
  • Impulse Force パルスで 1 フレームだけ瞬間的な力を加え、ジャンプ・打撃・爆発トリガーを実装
  • Force Field モードで球状の引力 / 斥力場を生成 (正で外向き押出 = 爆発衝撃波、負で内向き引込 = ブラックホール / 磁場)

データフロー 🔄

親 Bullet Solver COMP

Force COMP (Force / Force Field 設定)

Actor COMP の body に外力 / トルク適用

1 frame 毎にシミュレーション更新

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Force Page 📋

Active .active 🎛️

シミュレーション中に Force ページの力を有効化するかのトグル:

  • Active: active — シミュレーション中に Force ページの力を有効化するか。オフにすると一切の線形力・トルクが body に加わらない

Force (線形力 XYZ) .force 🚀

body に加わる Newtons 単位の線形力 (ワールド XYZ 軸):

  • Force X: forcex — ワールド X 軸方向に加わる力 (Newtons)
  • Force Y: forcey — ワールド Y 軸方向に加わる力 (Newtons)。重力と同方向に負値を設定すると重力を強化、正値で反重力的な持ち上げが可能
  • Force Z: forcez — ワールド Z 軸方向に加わる力 (Newtons)

Relative Position (作用点オフセット) .relpos 📍

Force の作用点を body 中心からオフセットする座標:

  • Relative Position X: relposx — body の物理中心 (重心ではなく形状中心) からの X 方向オフセット
  • Relative Position Y: relposy — body の物理中心からの Y 方向オフセット
  • Relative Position Z: relposz — body の物理中心からの Z 方向オフセット

Torque (回転モーメント XYZ) .torque 🔄

body に直接加わる回転モーメント (Newtons・XYZ 軸):

  • Torque X: torquex — X 軸まわりの回転モーメント (ピッチ方向)
  • Torque Y: torquey — Y 軸まわりの回転モーメント (ヨー方向)
  • Torque Z: torquez — Z 軸まわりの回転モーメント (ロール方向)

Impulse Force .impulse 💥

Force / Torque / Relative Position の値を 1 frame だけ瞬間適用するパルス:

  • Impulse Force: impulse — このパルスを押した瞬間に上記設定値で 1 frame だけインパルス (瞬間力) を加える。ジャンプ・打撃・爆発トリガーなど離散イベントに使う

Force Field Page 🌐

Active (Force Field) .ffactive 🎛️

球状 Force Field をシミュレーション中に有効化するかのトグル:

  • Active: ffactive — Force Field をシミュレーション中に有効化するか。オフにすると Strength / Radius / Falloff の設定は無視される

Strength (力場強度) .strength

Force Field の強度 (正で押出 / 負で引込):

  • Strength: strength — Force Field の強度。正値で body を外向きに押出 (爆発・反発)、負値で内向きに引込 (重力源・磁場吸引)

Radius (作用半径) .radius 🎯

Force Field の作用半径 (この球内にある body のみ影響):

  • Radius: radius — Force COMP の中心からこの距離 (ワールド単位) 以内にある body のみ Force Field の影響を受ける

Linear Falloff (距離減衰) .falloff 📉

中心からの距離による Force Field の線形減衰トグル:

  • Linear Falloff: falloff — オンにすると中心で最大強度、Radius 端でゼロまで線形に減衰。オフだと Radius 内で一律 Strength が適用される

Common Page 🔧

Parent Shortcut .parentshortcut 🔗

コンポーネント内部からこの COMP へのパスとして使えるショートカット名:

  • Parent Shortcut: コンポーネント内部の任意の場所からこの COMP を参照する際のショートカット名 (parent.<name> 形式で利用可能)

Global OP Shortcut .opshortcut 🌐

プロジェクト全体からこの COMP を参照するグローバル名:

  • Global OP Shortcut: プロジェクト内のあらゆる場所からこの COMP へのパスとして使えるグローバル名 (op.<name> 形式で利用可能)

実践アイデア 💡

Example 1: 風による旗のたなびき (継続線形力) 🌬️

Bullet Solver COMP → Actor COMP (旗の布シミュレーション) → Force COMP (Force X = +50N)

Bullet Solver COMP 配下に旗を表現する Actor COMP を配置し、その下に Force COMP を入れて Force X に正の値 (例: +50N) を設定。継続的に X 方向へ力が加わり、旗が風になびくような挙動を作る基本構成。

  1. Bullet Solver COMP を root に配置し、Gravity を (0, -9.8, 0) に設定
  2. Actor COMP に旗のジオメトリと Mass = 0.5kg を割り当て、コーナーを Constraint COMP で固定
  3. Bullet Solver 配下に Force COMP を追加、Active をオンに
  4. Force ページの forcex を +50 に設定 (X 方向への継続力)
  5. Bullet Solver の Start Sim パルスでシミュレーション開始、旗が X 方向に流れる

Example 2: 爆発の衝撃波 (Force Field + Impulse) 💥

Bullet Solver COMP → 複数の Actor COMP (debris) → Force COMP (Force Field Active, Strength = +200, Radius = 5.0)

爆発の中心点に Force COMP を配置し、Force Field を Active に、Strength を強い正値、Radius を爆発半径に設定。Linear Falloff をオンにすることで中心ほど強く、Radius 端ではゼロという自然な衝撃波分布を実現。Impulse Force パルスを 1 度だけ押して瞬間的に発火させる。

  1. 爆発の中心位置に Force COMP を配置 (Transform で tx/ty/tz 指定)
  2. Force Field ページの ffactive をオン、strength = +200 (外向き押出)
  3. radius = 5.0、falloff をオン (中心強く・端でゼロの線形減衰)
  4. 周辺に複数の Actor COMP (破片) を配置
  5. Force ページ側の impulse パルスを 1 度押すと 1 フレームで衝撃波が伝播
  6. debris が放射状に飛び散る

Example 3: 回転ファンによるトルク駆動 🔄

Bullet Solver COMP → Actor COMP (ファン羽根) → Force COMP (Torque Y = +30)

羽根を表す Actor COMP に Force COMP を子として配置し、Torque Y に正値を設定して Y 軸まわりの継続的な回転モーメントを与える。Constraint COMP の Hinge で軸を固定すれば、扇風機やプロペラのような回転メカニズムが構築できる。

  1. Hinge Constraint で Actor COMP の回転軸を Y 軸に固定
  2. Force COMP の torquey に +30 を設定
  3. Active をオンにしてシミュレーション開始
  4. 羽根が Y 軸まわりに加速回転する

関連オペレータ 🔗

類似機能OP 🔍

  • Constraint COMP — Bullet 配下で body 同士の関節を設定する拘束 COMP (Force COMP は力、Constraint は拘束を担当)

組み合わせ推奨OP 🔄

  • Bullet Solver COMP — Force COMP の親ソルバ。配下に置かないと力は適用されない
  • Actor COMP — Force が作用する対象 body を持つコンポーネント
  • Bullet Solver CHOP — シミュレーション内の body 数・衝突・状態を CHOP として取得 (Force のフィードバック制御に併用)

前処理・後処理COMP 🎯


Info COMP情報 📊

Force COMP は Info CHOP / Info DAT による詳細情報取得に対応しています。

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 メモリ使用量

Object 固有情報 📊

  • tx / ty / tz: Force COMP 自体のワールド位置 (Translate)。Force Field の中心座標としても機能
  • rx / ry / rz: Force COMP 自体の回転 (度)
  • sx / sy / sz: Force COMP 自体のスケール

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

よくある問題と解決策 🔧

❌ Problem: Force COMP を配置したのに body が動かない / 力が効かない
✅ Solution:

  • Force COMP は必ず親の Bullet Solver COMP 配下に配置されている必要がある。階層を確認
  • Force ページの active がオンになっているか確認 (デフォルトはオフの場合あり)
  • Bullet Solver COMP 側の Play / Start Sim パルスでシミュレーションが実際に走っているか確認
  • Force 値が小さすぎる可能性。対象 Actor COMP の Mass に対し十分大きい値 (例: Mass 1kg なら 10N 以上) を試す

❌ Problem: 並進させたいだけなのに body が回転してしまう
✅ Solution:

  • Relative Position (relposx/y/z) が (0, 0, 0) になっているか確認。非ゼロだと中心軸外で力が加わり副次的トルクが発生する
  • Torque ページ (torquex/y/z) に意図しない値が入っていないか確認
  • 純粋な並進だけ与えたい場合は Relative Position をすべて 0、Torque もすべて 0 にする

❌ Problem: Force Field が想定外の body にも影響している / 影響が届かない
✅ Solution:

  • radius パラメータが意図した作用範囲に設定されているか確認 (Force COMP の世界座標位置を中心とする球)
  • falloff をオンにすると中心から Radius 端まで線形に減衰、オフだと Radius 内で一律。減衰特性を再選択
  • strength の符号を確認: 正で外向き押出、負で内向き引込
  • Force Field 側の ffactive がオンになっているか (Force ページの active とは別のトグル)

❌ Problem: Impulse Force パルスを押しても瞬間的に効かない
✅ Solution:

  • Impulse は Force / Torque / Relative Position の現在値を 1 frame だけ適用する仕組み。事前に Force XYZ や Torque XYZ に十分な値を入れた状態でパルスを押す
  • Force ページの active がオフでもインパルスは効くが、シミュレーション (Bullet Solver の Play) が走っている必要がある
  • シミュレーションが pause 状態だとインパルスが消費されない。Bullet Solver COMP の Play 状態を確認

参考資料 📚

その他 🔗

公式リソース 📖

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