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

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

Impulse Force COMP が Bullet シミュレーション内の Actor COMP に瞬間的なインパルス力を加える様子を示す図

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

概要 📖 – Bullet 物理シミュレーションの瞬間インパルス

Impulse Force COMPは、親 Bullet Solver COMP 配下で Pulse Force パルスを押した瞬間に Actor COMP の body へ 1 度だけ線形力・トルクを加える、Bullet 物理シミュレーション用のインパルス発生 COMPです。Force / Relative Position / Torque パラメータで加える力の大きさと作用点・回転モーメントを事前に設定しておき、Pulse Force を押した次フレームでそれらが 1 度だけ body に適用されます。ジャンプ・打撃・爆発トリガーなどイベント駆動の力学効果に最適です。

主な用途 🎯

  • Actor COMP の body に対し パルスを押した次フレームで 1 度だけ 瞬間的な力 (インパルス) を加える
  • Force (Newtons 単位の線形力) をジャンプ・打撃・キックなど離散イベントの瞬間衝撃として注入する
  • Relative Position オフセット位置で力を加え、副次的な トルク を発生させて回転を伴うインパクトを作る
  • Torque (回転モーメント) をパルスで一発加え、コマ回し・パンチで物体をスピンさせるトリガを構築する
  • Force COMP の継続力とは異なる イベント駆動型の力 として、ユーザ入力・センサー閾値・タイミング検出に紐付ける

データフロー 🔄

親 Bullet Solver COMP

Impulse Force COMP (Force / Relative Position / Torque 設定)

Pulse Force パルス

次フレームで Actor COMP の body に 1 回だけインパルス適用

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Force Page 📋

Pulse Force (パルストリガー) .pulse 💥

インパルス力を発火させるパルスボタン (次フレームで 1 度だけ適用):

  • Pulse Force: pulse — このパルスを押した瞬間にインパルス力を予約し、次フレームで Force / Relative Position / Torque の現在値を body に 1 回だけ適用する

Force (線形インパルス XYZ) .force 🚀

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

  • Force X: forcex — Pulse Force 発火時にワールド 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 🔄

Pulse Force 発火時に body に加わる回転モーメント (Newtons・XYZ 軸):

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

Common Page 🔧

Parent Shortcut .parentshortcut 🔗

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

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

Global OP Shortcut .opshortcut 🌐

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

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

実践アイデア 💡

Example 1: ジャンプアクション (Y 軸インパルス) 🦘

Keyboard In CHOP (Space) → CHOP Execute DAT → Impulse Force COMP (Force Y = +500) → Pulse Force

プレイヤーキャラクターを表す Actor COMP の子に Impulse Force COMP を配置し、Force Y に重力と逆向きの正値を設定。スペースキー入力に紐付けた CHOP Execute DAT から pulse パラメータを発火させることで、ジャンプの瞬間衝撃を 1 回だけ加える定番構成。

  1. Bullet Solver COMP を root に配置し、Gravity を (0, -9.8, 0) に設定
  2. Actor COMP にキャラクタのジオメトリと Mass = 60kg を割り当て
  3. Actor COMP 配下に Impulse Force COMP を追加
  4. Force ページの forcey を +500 (Y 軸正方向のジャンプ力) に設定
  5. Keyboard In CHOP と CHOP Execute DAT で space キー押下を検出し op('impulseforce1').par.pulse.pulse() を呼ぶ
  6. キーを押すたびに次フレームでキャラクタが上方向に跳ね上がる

Example 2: オフセット位置の打撃でスピンを発生 🥊

Trigger CHOP → Impulse Force COMP (Force X + Relative Position Y > 0)

ボーリングのピンやコマのような物体に対し、Relative Position を中心から上方にずらしたうえで X 軸方向の Force をインパルスとして加える。中心軸を外れた打撃により body は並進と同時にトルクを受け、自然な回転を伴って吹き飛ぶ挙動が得られる。

  1. Actor COMP (ピン形状) を Bullet Solver 配下に配置
  2. Actor COMP 配下に Impulse Force COMP を追加
  3. Force ページの forcex を +300、relposy を +0.5 (中心より 50cm 上で打撃)
  4. Trigger CHOP からのイベントで pulse を発火
  5. ピンが X 方向に飛びつつ、オフセットによる副次トルクで回転しながら倒れる

Example 3: コマ回し (Torque パルスでスピン起動) 🌀

Button COMP → Impulse Force COMP (Torque Y = +100, Pulse Force)

コマや独楽のような対称軸を持つ Actor COMP に対し、Torque Y にのみ大きな値を設定して Pulse Force を発火する。Y 軸まわりの回転モーメントが 1 度だけ加わり、後は Bullet ソルバの慣性で自然に減衰しながら回り続けるシミュレーションを作る。

  1. Hinge / 自由回転の Actor COMP (コマ形状) を配置
  2. Impulse Force COMP の torquey を +100 に設定 (Y 軸まわりの強い回転モーメント)
  3. Force / Relative Position はすべて 0 のまま (純粋な回転インパルスのみ)
  4. Button COMP の押下で pulse を発火
  5. コマがその場で勢いよく回転を始め、摩擦と慣性で徐々に減衰する

関連オペレータ 🔗

類似機能OP 🔍

  • Force COMP — 継続的な線形力・トルク・力場を加える親戚 COMP (Impulse は瞬間 1 回、Force は継続)

組み合わせ推奨OP 🔄

  • Bullet Solver COMP — Impulse Force COMP の親ソルバ。配下に置かないとインパルスは適用されない
  • Actor COMP — インパルスが作用する対象 body を持つコンポーネント
  • Constraint COMP — Hinge 等で軸を拘束した body にインパルスを与えて回転駆動を実装

前処理・後処理COMP 🎯


Info COMP情報 📊

Impulse 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: Impulse Force COMP 自体のワールド位置 (Translate)
  • rx / ry / rz: Impulse Force COMP 自体の回転 (度)
  • sx / sy / sz: Impulse Force COMP 自体のスケール

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

よくある問題と解決策 🔧

❌ Problem: Pulse Force を押してもインパルスが効かない / body が動かない
✅ Solution:

  • Impulse Force COMP は必ず親の Bullet Solver COMP 配下に配置されている必要がある。階層を確認
  • Bullet Solver COMP の Play / Start Sim パルスでシミュレーションが実際に走っているか確認 (pause 中はインパルスが次フレームに到達しない)
  • Force / Torque の値が 0 のままだとパルスを押しても何も加わらない。事前に forcex/y/z または torquex/y/z に十分な値を設定する
  • 対象 Actor COMP の Mass に対し Force が小さすぎないか確認 (例: Mass 60kg のキャラに 1N を加えても動かない)

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

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

❌ Problem: Pulse Force を連打しても累積しない / 効果が薄い
✅ Solution:

  • Impulse は 1 度のパルスで 1 frame だけ適用される仕様。短時間に複数回押す場合は frame 間隔を意識し、CHOP Execute DAT 等で確実に .pulse() を発火する
  • 継続的に力を加えたい場合は Impulse Force COMP ではなく Force COMP を使う (継続力 + Force Field 対応)
  • Mass が大きい body には Force / Torque 値を桁単位で大きく取らないと体感差が出ない (F = m·a の関係)

参考資料 📚

その他 🔗

公式リソース 📖

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