
概要 📖 – Bullet / Flex 物理アクター
Actor COMPは、Bullet / Flex 物理ソルバの配下でコライダー形状・質量・速度を定義する剛体 / 粒子アクター COMPです。Bullet Solver COMP または Flex Solver COMP の子として配置し、Collision SOPs と Collision Shape を指定することで剛体物理 / 流体シミュレーションの対象になります。
主な用途 🎯
- Bullet Solver 配下に剛体・コライダーを登録するための物理アクター
- Collision Shape (Concave / Convex Hull / OBB / AABB / Ellipsoid / Sphere / Compound) の生成と表示
- Kinematic State による Static (固定) / Dynamic (動体) の切替と質量・摩擦・反発係数の指定
- Linear / Angular Velocity や Bullet Feedback CHOP による速度・力のフィードバック制御
- Flex Solver 配下での流体・粒子エミッタとして粒子発生を扱う
データフロー 🔄
入力: SOP (コライダー形状) + 物理プロパティ (Mass / Friction / Restitution)
↓
Bullet Solver COMP / Flex Solver COMP の配下で 1 frame シミュレーション
↓
出力: Translate / Rotate が物理結果で書換わる
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
General Page 📁
Initialize / Update ⚙️
コリジョン形状の初期化・自動更新パラメータ:
- Initialize Actor:
initialize— Actor COMP 内の全 body のコリジョン形状を再生成し、速度・位置をデフォルトにリセット。Collision SOPs / Collision Shape / 内部 SOP が変わったらパルス必須 - Update Collision Shape:
updatecs— オンの場合、Collision SOPs / Collision Shape の変更や内部 SOP の cook count 増加に追従してコリジョン形状を自動更新 - Update Collision Shape Pulse:
updatecspulse— クリックで即時にコリジョン形状を更新するパルス
Active .active 🔌
アクターのシミュレーション参加切替:
- Active:
active— オンの場合、シミュレーションに参加し他アクターと衝突する。オフの場合はシミュレーションから除外され transform 更新も停止
Kinematic State .kinstate 🎛️
アクターが外力で動けるか (Dynamic) / 動かないか (Static) を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Static (Infinite Mass) | .static |
シミュレーション内で動かないアクター (床・壁・固定オブジェクト等) |
| Dynamic (Finite Mass) | .dynamic |
シミュレーション内で動けるアクター (落下する剛体・衝突する物体等) |
Collision Shape .shape 🎛️
Collision SOPs から生成するコリジョン形状の種類を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Concave (Static only) | .concave |
全 SOP から凹形状を生成。Static アクター専用 (Dynamic では Compound にフォールバック)。3-4 頂点ポリゴンのみ対応 |
| Convex Hull | .convex |
SOP の頂点群を内包する凸包を生成。Dynamic に最適 |
| Oriented Bounding Box | .obb |
体積最小化方向に整列した方向付きバウンディングボックス |
| Axis-Aligned Bounding Box | .aabb |
XYZ 軸に整列した非回転バウンディングボックス |
| Bounding Ellipsoid | .bellipsoid |
体積最小化された楕円体 |
| Bounding Sphere | .bsphere |
体積最小化された球 (XYZ 半径が同一) |
| Compound | .compound |
複数 SOP を各々 Convex Hull にし、それらを 1 つの複合形状に統合 (Dynamic で凹形状を扱うときの代替) |
General 値 📏
コライダー入力・楕円体精度・質量パラメータ:
- Collision SOPs:
sops— コリジョン形状の元となる SOP / COMP のパス。COMP 指定時はその内部の全 SOP を再帰的に使用、空欄時は Actor COMP 内部の Display / Render フラグが立った SOP を全て使用 - Ellipsoid Tolerance:
elltol— Bounding Ellipsoid 選択時の最適解への接近度許容値 - Infinite Mass:
infinitemass— オンの場合、Dynamic でも質量無限大として動かなくなる。Kinematic State 変更と違いコリジョン形状の再生成は不要 - Mass:
mass— アクターの質量 (kg)
Velocity / Cue 🚀
初期速度・Cue 機能パラメータ:
- Cue Velocity:
cuevel— Linear Velocity / Angular Velocity の値をオン中常にアクターへ書込む (他オブジェクトとの衝突は継続) - Cue Pulse:
cuevelpulse— 次フレーム冒頭で 1 回だけ Linear / Angular Velocity の値をアクターに書込むパルス - Linear Velocity:
linvel (linvelx, linvely, linvelz)— 初期の並進速度 (m/s)。シミュレーション中も Cue Velocity / Pulse と併用して速度を上書き可能 - Angular Velocity:
angvel (angvelx, angvely, angvelz)— 初期の角速度 (度/秒)。Cue Velocity / Pulse との併用で角速度を上書き可能
Bullet Page 📁
Forces / Gravity 🌍
ローカル外力・個別重力パラメータ:
- Forces:
forces— このアクター専用のローカル外力 (Force COMP) のリスト - Use Global Gravity:
globalgrav— オンの場合、Bullet Solver COMP のグローバル重力を使用。オフの場合は下記 Gravitational Acceleration を使用 - Gravitational Acceleration:
gravity (gravityx, gravityy, gravityz)— アクターのローカル重力 (m/s²)。Use Global Gravity がオフの時のみ適用
Friction / Restitution 🪨
摩擦・反発・連続衝突判定パラメータ:
- Friction:
friction— 動摩擦係数。衝突中の 2 body の係数の積が総合摩擦になる (片方 0 なら結果も 0) - Rolling Friction:
rollfric— 転がり摩擦。球・円錐が他面を転がるときの抵抗 - Restitution:
rest— 反発係数 (0-1)。1 なら衝突後も同じ速度で跳ね返る完全弾性衝突 - Continuous Collision Detection:
ccd— 連続衝突判定の有効化。高速移動物体のすり抜けを防ぐ。閾値超の速度時のみ作動するためパフォーマンス影響は限定的 - Display Guide:
dispguide— COMP ビューアにコリジョン形状ガイドを表示
Center of Mass / Feedback 🎯
重心位置・外部フィードバックパラメータ:
- Center of Mass:
com (comx, comy, comz)— 重心位置 (回転の中心)。COMP ビューアでは赤軸として表示 - Bullet Feedback CHOP:
bulletfb— 参照 CHOP から transform / velocity を読み取り次フレーム冒頭で現在値を上書き。Bullet Solver CHOP と組み合わせてフィードバックループを構築可能 (スケールは feedback 不可、force[xyz]/torque[xyz]で力を加算可能)
Flex Page 📁
Triangle Collision Direction .tricolldir 🎛️
三角形コリジョンの法線方向の有効面を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Outward | .outward |
三角形の法線方向 (外側) からの衝突のみ有効 |
| Inward | .inward |
法線とは逆方向 (内側) からの衝突のみ有効 |
| Both | .both |
両面とも衝突有効 (薄い壁等) |
Flex Type .flextype 🎛️
Flex アクターのタイプを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Fluid | .fluid |
流体アクター。粒子数は入力インスタンス数で決定 |
| Fluid Emitter | .fluidemit |
流体エミッタ。Emission Size / Speed に比例して粒子を発生、最大数到達後は既存粒子を再利用 |
Emission / Feedback 💨
Flex 粒子発生・TOP フィードバックパラメータ:
- Enable Emission:
emit— 粒子の発生を有効化 - Emission Size:
emitsize (emitsizex, emitsizey)— 2D エミッショングリッドの粒子数 (横 × 縦) - Emission Speed:
emitspeed— エミッタから粒子が放出される速度 - Max Emission Particles:
emitmax— Actor COMP 内の最大粒子数。到達後は既存粒子を再利用 - Position Feedback TOP:
flexposfb— 位置データを書込み済みの TOP。Flex TOP の位置テクスチャ形式で位置を上書き - Velocity Feedback TOP:
flexvelfb— 速度データを書込み済みの TOP。Flex TOP の速度テクスチャ形式で速度を上書き
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 軸の移動量。物理アクターでは初期位置となり、シミュレーション中は Bullet が書換える - Rotate:
r (rx, ry, rz)— X / Y / Z 軸まわりの初期回転角度 (度) - Scale:
s (sx, sy, sz)— X / Y / Z 軸の非一様スケール (Bullet Feedback CHOP では feedback 不可) - 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 📁
Pre-Xform レイヤ 📁
Pre-Xform レイヤ (メイン Xform の前に適用される追加 transform):
- Apply Pre-Transform:
pxform— Pre-Xform レイヤの有効化 - Transform Order (Pre):
pxord— Xform Page と同じ 6 種の順序選択 - Rotate Order (Pre):
prord— Xform Page と同じ 6 種の回転順序選択 - 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 🔧
Parent Shortcut .parentshortcut 🔗
コンポーネント内部からこの COMP へのパスとして使えるショートカット名:
- Parent Shortcut: コンポーネント内部の任意の場所からこの COMP を参照する際のショートカット名 (
parent.<name>形式で利用可能)
Global OP Shortcut .opshortcut 🌐
プロジェクト全体からこの COMP を参照するグローバル名:
- Global OP Shortcut: プロジェクト内のあらゆる場所からこの COMP へのパスとして使えるグローバル名 (
op.<name>形式で利用可能)
Internal OP .iop 📎
Internal OP シーケンス (コンポーネント内部 OP への名前付き参照):
- Shortcut:
iop0shortcut— コンポーネント内部の OP に対するショートカット名 - OP:
iop0op— このコンポーネント内部の対象 OP へのパス
Node View .nodeview 👁️
ノードビューア (Network エディタ上のサムネイル) に表示する内容を決定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Default Viewer | .default |
コンポーネントタイプ標準のビューアを表示 |
| Operator Viewer | .opviewer |
指定した任意 OP のノードビューアを表示 |
Operator Viewer .opviewer 🖼️
Operator Viewer モード時に表示する対象 OP:
- Operator Viewer パス: Node View が
opviewerモードのとき、そのビューア内容として表示する OP のパス
Cloning .cloning 🧬
マスター COMP の内容を複製する Cloning 設定:
- Enable Cloning:
enablecloning— Clone Master の内容を継続的に複製するかを切替 - Enable Cloning Pulse:
enablecloningpulse— その瞬間だけ Clone Master の内容を瞬時に複製 - Clone Master:
clone— 複製元となるマスターコンポーネントへのパス
Load on Demand .loadondemand ⏳
必要時のみメモリにロードする遅延ロード設定:
- Load on Demand: オンの場合、このコンポーネントは実際に必要となるまでメモリにロードされない (起動時間・メモリ消費の最適化)
External .tox .externaltox 💾
外部 .tox ファイルとの連携設定:
- Enable External .tox:
enableexternaltox— 起動時に外部 .tox ファイルからロード - Enable External .tox Pulse:
enableexternaltoxpulse— 外部 .tox ファイルから即時リロード - External .tox Path:
externaltox— ディスク上の .tox ファイルへのパス - Reload Custom Parameters:
reloadcustom— コンポーネントのカスタムパラメータ値を再読み込み - Reload Built-In Parameters:
reloadbuiltin— コンポーネントの組み込みパラメータ値を再読み込み - Save Backup of External:
savebackup— .toe ファイル内に外部 .tox のバックアップコピーを保存 - Sub-Component to Load:
subcompname— .tox 内部の特定 COMP のみを取り出してロード
Relative File Path Behavior .relpath 📁
このコンポーネント内部での相対ファイルパスの解決基準
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Parent’s Behavior | .inherit |
親コンポーネントの設定を継承 |
| Relative to Project File (.toe) | .project |
.toe プロジェクトファイルからの相対パスとして解決 |
| Relative to External COMP File (.tox) | .externaltox |
外部 .tox ファイルからの相対パスとして解決 |
Parameter Color Space .parmcolorspace 🎨
このコンポーネント内の色パラメータをどの色空間として解釈するか
| 項目 | 内部名 | 説明 |
|---|---|---|
| sRGB | .srgb |
標準的な sRGB ガンマ空間 |
| sRGB – Linear | .srgblinear |
sRGB プライマリでガンマ線形 (1.0) |
| Rec.601 (NTSC) | .rec601ntsc |
Rec.601 NTSC 規格の色空間 |
| Rec.709 | .rec709 |
HDTV 用 Rec.709 色空間 |
| Rec.2020 | .rec2020 |
UHDTV / HDR 向け Rec.2020 広色域 |
| DCI-P3 | .dcip3 |
デジタルシネマ DCI-P3 色空間 |
| DCI-P3 (D60) | .dcip3d60 |
D60 白点 DCI-P3 |
| Display-P3 (D65) | .displayp3d65 |
D65 白点 Display-P3 (Apple ディスプレイ等) |
| ACES2065-1 | .aces2065-1 |
ACES アーカイブ用色空間 (AP0 プライマリ) |
| ACEScg | .acescg |
ACES CG 作業用色空間 (AP1 プライマリ) |
| Passthrough | .passthrough |
色変換を行わず値をそのまま扱う |
Parameter Reference White .parmreferencewhite ⚪
色パラメータの基準白色の扱い
| 項目 | 内部名 | 説明 |
|---|---|---|
| Default For Color Space | .default |
選択した色空間のデフォルト基準白を使用 |
| Standard (SDR) | .sdr |
標準ダイナミックレンジ (SDR) 基準白 |
| High (HDR) | .hdr |
ハイダイナミックレンジ (HDR) 基準白 |
| UI | .ui |
UI 表示用の基準白 |
実践アイデア 💡
Example 1: Bullet 剛体: 落下する箱を床に衝突させる 📦
Box SOP → Actor COMP (Dynamic + Convex Hull + Mass=1.0) → Bullet Solver COMP → 描画用 Render TOP
Dynamic な Actor COMP を Bullet Solver COMP の子として配置し、Mass と Linear Velocity を与えて落下させる。床用には別の Static な Actor COMP を Convex Hull / AABB で配置することで衝突が発生する。
- Bullet Solver COMP を作成 (Gravity = (0, -9.8, 0))
- Box SOP を含む Actor COMP を Solver の子として作成し Kinematic State を
Dynamicに - Collision Shape を
Convex Hull、Mass を1.0、Translate Y を5に設定 - 床用に別 Actor COMP を作成し Kinematic State を
Static、Collision Shape をConcaveに - Initialize Actor をパルスして物理シミュレーションを開始
Example 2: Bullet Feedback CHOP で速度を制御 🎮
Constant CHOP (velocity 値) → Bullet Solver CHOP → Actor COMP (Bullet Feedback CHOP)
Bullet Feedback CHOP に Bullet Solver CHOP 経由の速度データを与えることで、シミュレーション中のアクター速度を外部から上書きできる。インタラクティブにジャンプさせるなどの操作に有効。Scale は feedback 不可、力を加えたい場合は force[xyz] / torque[xyz] チャンネルを使用する。
- Bullet Solver CHOP を作成し対象 Actor COMP を参照
- Constant CHOP で
linvelx / linvely / linvelzを定義 - Bullet Solver CHOP の出力を Actor COMP の Bullet Feedback CHOP に接続
- 次フレーム冒頭で書込まれた速度が反映されることを確認
Example 3: Flex 流体エミッタ: 粒子の連続発生 💦
Sphere SOP → Actor COMP (Flex Type=Fluid Emitter + Emit ON) → Flex Solver COMP → Flex TOP
Flex Solver COMP の子として Actor COMP を配置し、Flex Type を Fluid Emitter に設定。Emission Size と Emission Speed で粒子の発生量と初速を制御し、Max Emission Particles を超えると既存粒子が再利用される。
- Flex Solver COMP を作成
- Actor COMP を子として作成し Flex Type を
Fluid Emitterに - Enable Emission をオン、Emission Size を
(8, 8)、Emission Speed を2.0に - Max Emission Particles を
10000に設定して上限を制御 - Flex TOP で粒子の位置テクスチャを取得して可視化
関連オペレータ 🔗
類似機能OP 🔍
- Force COMP — アクターに力場 (重力・風・引力など) を加える COMP
- Constraint COMP — 2 つのアクター間に関節 / バネ / ヒンジ拘束を設定する COMP
組み合わせ推奨OP 🔄
- Bullet Solver COMP — Actor COMP の親として剛体シミュレーションを駆動するソルバ
- Geometry COMP — コライダーとなる SOP コンテナを Actor COMP に供給
- Bullet Solver CHOP — シミュレーション中の transform / velocity を読み書きする CHOP インタフェース
前処理・後処理COMP 🎯
Info COMP情報 📊
この 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: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Dynamic アクターが床をすり抜けて落下する
✅ Solution:
- 高速で動く場合は Continuous Collision Detection (
ccd) をオンにして連続衝突判定を有効化 - 床側 Actor COMP の Collision Shape が
Concaveの場合、ポリゴンが 3-4 頂点のみで構成されているか確認 - Initialize Actor をパルスしてコリジョン形状を再生成、Update Collision Shape をオンにして自動更新を有効化
❌ Problem: Collision Shape の表示と実際の衝突境界がずれている
✅ Solution:
- Display Guide (
dispguide) をオンにして COMP ビューアでコリジョン形状を実体視 - Center of Mass (
com) が形状の中心と一致しているか確認 (赤軸として表示) - Compound 形状の場合、内部 SOP それぞれが Convex Hull 化された後に合成されることを念頭に SOP 構成を見直す
❌ Problem: Flex Emitter から粒子が発生しない
✅ Solution:
- Enable Emission (
emit) がオンか確認、Flex Type がFluid Emitterになっているかも確認 - Emission Size と Emission Speed が 0 になっていないかチェック (両者が 0 だと粒子は発生しない)
- Max Emission Particles に達して新規発生が止まっている可能性 — 既存粒子が再利用される仕様のため、上限値を引き上げて検証
参考資料 📚
その他 🔗
- TouchDesigner Wiki — COMP 概要
- TouchDesigner Wiki — Category:COMPs
- TouchDesigner Wiki — Category:Components
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

