
概要 📖 – 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 毎にシミュレーション更新
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 方向へ力が加わり、旗が風になびくような挙動を作る基本構成。
- Bullet Solver COMP を root に配置し、Gravity を (0, -9.8, 0) に設定
- Actor COMP に旗のジオメトリと Mass = 0.5kg を割り当て、コーナーを Constraint COMP で固定
- Bullet Solver 配下に Force COMP を追加、Active をオンに
- Force ページの forcex を +50 に設定 (X 方向への継続力)
- 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 度だけ押して瞬間的に発火させる。
- 爆発の中心位置に Force COMP を配置 (Transform で tx/ty/tz 指定)
- Force Field ページの ffactive をオン、strength = +200 (外向き押出)
- radius = 5.0、falloff をオン (中心強く・端でゼロの線形減衰)
- 周辺に複数の Actor COMP (破片) を配置
- Force ページ側の impulse パルスを 1 度押すと 1 フレームで衝撃波が伝播
- debris が放射状に飛び散る
Example 3: 回転ファンによるトルク駆動 🔄
Bullet Solver COMP → Actor COMP (ファン羽根) → Force COMP (Torque Y = +30)
羽根を表す Actor COMP に Force COMP を子として配置し、Torque Y に正値を設定して Y 軸まわりの継続的な回転モーメントを与える。Constraint COMP の Hinge で軸を固定すれば、扇風機やプロペラのような回転メカニズムが構築できる。
- Hinge Constraint で Actor COMP の回転軸を Y 軸に固定
- Force COMP の torquey に +30 を設定
- Active をオンにしてシミュレーション開始
- 羽根が 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 🎯
- 前処理: Bullet Solver COMP、Actor COMP
- 後処理: Geometry COMP、Camera 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 状態を確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — COMP 概要
- TouchDesigner Wiki — Category:COMPs
- TouchDesigner Wiki — Category:Components
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Force COMP
- TouchDesigner公式ドキュメント – Bullet Solver COMP
- TouchDesigner公式ドキュメント – Actor COMP

