
概要 📖 – 参照用の中継点になる
Null COMPは、シーン内のプレースホルダとして配置され、子コンポーネントの Transform 継承・カメラやライトの Look At ターゲット・ボーンチェーンの End Affector などの参照アンカーとして機能する COMPです。ジオメトリを持たないため描画には現れず、Display フラグをオフにすればビューポート上も非表示にできるため、シーン整理や非可視の参照点として頻用されます。
主な用途 🎯
- シーン内のプレースホルダとして配置し、子 COMP のグループ化・ピボット中心・3D 空間上の参照点として機能
- カメラやライトの Look At ターゲットとして使用し、シーン中の存在しない注視点を非表示の Null COMP で定義 (Display フラグ オフで非表示化可)
- ボーンチェーンの End Affectorとして IK の到達先 (手首・足首の目標位置) を定義
- 子オブジェクトの一括 Transform: Translate / Rotate / Scale で複数の Geometry COMP / Light COMP を共通の局所座標で動かす
- パス追従アニメーション: Path SOP を指定して Position パラメータで 0~1 の位置を移動させ、上にカメラや Geometry をペアレント
データフロー 🔄
入力: Transform 値 (Translate / Rotate / Scale / Pivot) + Look At / Path SOP / Parent 参照
↓
4x4 トランスフォーム行列を構築 (Pre-Xform + Xform の順で合成)
↓
出力: 子 COMP に継承される transform / 他 COMP からの Look At ターゲット / IK の End Affector として機能
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Xform Page 📋
Transform Order .xord 🔄
Translate / Rotate / Scale の適用順序を指定するメニューパラメータ。順序を変えると最終的な配置が変わる (行列演算順 T * R * S * Position)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Scale Rotate Translate | .srt |
S → R → T の順で適用 (デフォルト、最も一般的) |
| Scale Translate Rotate | .str |
S → T → R の順で適用 |
| Rotate Scale Translate | .rst |
R → S → T の順で適用 |
| Rotate Translate Scale | .rts |
R → T → S の順で適用 |
| Translate Scale Rotate | .tsr |
T → S → R の順で適用 |
| Translate Rotate Scale | .trs |
T → R → S の順で適用 |
Rotate Order .rord 🔁
Rx / Ry / Rz の回転を適用する順序を指定するメニューパラメータ。回転は非可換のため順序を変えると最終姿勢が変わる
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rx Ry Rz | .xyz |
X → Y → Z の順で回転 (行列合成は Rz * Ry * Rx) |
| Rx Rz Ry | .xzy |
X → Z → Y の順で回転 |
| Ry Rx Rz | .yxz |
Y → X → Z の順で回転 |
| Ry Rz Rx | .yzx |
Y → Z → X の順で回転 |
| Rz Rx Ry | .zxy |
Z → X → Y の順で回転 |
| Rz Ry Rx | .zyx |
Z → Y → X の順で回転 |
Translate / Rotate / Scale / Pivot 🎯
Null COMP の Transform 値 (Translate / Rotate / Scale / Pivot / Uniform Scale):
- Translate:
t(tx / ty / tz) — 3 軸方向の平行移動量。子 COMP はこの位置を基準に配置される - Rotate:
r(rx / ry / rz) — 3 軸まわりの回転角度 (度)。Rotate Order で適用順が決まる - Scale:
s(sx / sy / sz) — 3 軸方向の非一様スケール (1.0 が原寸大) - Pivot:
p(px / py / pz) — Scale / Rotate の中心点。Pivot をずらすと回転・拡縮の効果が変わる (例: 端を支点に回転) - Uniform Scale:
scale— 全 3 軸に均一にかかるスケール係数 (Scale パラメータと乗算)
Parent Transform .parentxformsrc 🌳
親のトランスフォーム継承元を指定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Parent (Hierarchy) | .parent |
ネットワーク階層上の親 COMP の transform を継承 (デフォルト) |
| Specify Parent Object | .object |
Parent Object パラメータで指定した任意の COMP の transform を継承 |
| World Origin | .world |
ワールド原点を基準にして親の transform を継承しない |
Parent Object .parentobject 📎
Specify Parent Object モード時の参照 COMP:
- Parent Object パス:
parentobject— ネットワーク階層に依存せず、ここで指定した COMP の transform をこの Null COMP の親として継承する
Look At .lookat 👀
他の COMP を注視し続ける Look At 設定:
- Look At:
lookat— 注視対象とする COMP のパス。指定すると対象が移動しても常にそちらを向く - Forward Direction:
forwarddir— どの軸を「前方」とみなすかのメニュー (+X / -X / +Y / -Y / +Z / -Z)
Look At Up Vector .lookup ⬆️
Look At 時の上方向ベクトルの扱いを指定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Don’t Use Up Vector | .none |
Up Vector を使わない。対象が Y 軸を通過しないシーンで使用 |
| Use Up Vector | .vector |
Orient Up Vector を上方向として使い、姿勢を厳密に定義 (Up Vector は look-at 方向と平行にしないこと) |
| Use Quaternions | .quat |
クォータニオン補間で球面上の最短経路を使い姿勢を決定 |
Path Follow (パス追従) 🛤️
Path SOP を使ったパス追従アニメーションの設定:
- Path SOP:
pathsop— 追従させたいパスを供給する SOP のパス - Roll:
roll— パスに沿った進行方向まわりの回転角度 - Position:
pos— パス上の位置 (0 = 始点 / 1 = 終点)。スライダ範囲は 0~10 まで設定でき、1 を超えると複数周回が可能 - Orient along Path:
pathorient— オンにすると Null COMP の +Z 軸がパス進行方向を向くように自動回転 - Orient Up Vector:
up— Orient along Path 時に +Y 軸が指す方向を定義するベクトル - Auto-Bank Factor:
bank— パスの曲率に応じて自動でロール (バンク) させる強度。0 でバンクなし
Pre-Xform Page 📋
Pre-Transform 適用 .pxform ✅
Pre-Xform Page を有効化するトグル:
- Apply Pre-Transform:
pxform— オンにすると Pre-Xform Page の値が main Xform の前に適用される (合成順: XformMatrix * PreXform * Position)
Pre-Xform Transform 値 🎚️
Pre-Xform の各 Transform 値 (Xform Page と同じ意味):
- Transform Order (Pre):
pxord— Pre-Xform の Translate / Rotate / Scale 適用順 (Xform Page と同じメニュー) - Rotate Order (Pre):
prord— Pre-Xform の回転適用順 (Xform Page と同じメニュー) - Translate (Pre):
pt(ptx / pty / ptz) — Pre-Xform の平行移動量 - Rotate (Pre):
pr(prx / pry / prz) — Pre-Xform の回転角度 - Scale (Pre):
ps(psx / psy / psz) — Pre-Xform のスケール - Pivot (Pre):
pp(ppx / ppy / ppz) — Pre-Xform の Pivot 点 - Uniform Scale (Pre):
pscale— Pre-Xform の一様スケール係数
Pre-Xform リセット / 統合 🔧
Pre-Xform 値のリセット / 統合ボタン:
- Reset Transform:
preset— Pre-Xform Page の transform 値をすべてリセット (Translate=0 / Rotate=0 / Scale=1) - Commit to Main Transform:
pcommit— Pre-Xform の transform を Main Xform Page にコピーしたうえで Pre-Xform をリセット (値の昇格)
Xform Matrix .xformmatrixop 📐
4×4 行列を直接指定する transform 上書き:
- Xform Matrix / CHOP / DAT:
xformmatrixop— 4×4 行列を提供する CHOP / DAT のパス。Pre-Xform の後段 (合成順: XformMatrix * PreXform * Position) で適用される
Render Page 📋
Material / Render ✨
Null COMP のマテリアル・描画関連の設定:
- Material:
material— 内部のジオメトリに適用される MAT (Material) のパス - Render:
render— Render TOP での描画可否トグル。COMP の Render フラグと論理 AND で評価される
Draw / Pick Priority 🎚️
描画順序・ピック判定の優先度:
- Draw Priority:
drawpriority— 描画順を決める優先度。小さい値ほど後に描画 (透過処理のソート補助に使用) - Pick Priority:
pickpriority— Render Pick CHOP / Render Pick DAT での選択優先度。Search Area 内で複数候補があるとき高い値が選ばれる
Wireframe Color / Light Mask 🎨
ワイヤーフレーム色・ライトマスクの設定:
- Wireframe Color:
wcolor(wcolorr / wcolorg / wcolorb) — ワイヤーフレームシェーディングモード時の表示色 (RGB) - Light Mask:
lightmask— Render TOP のライト群のうち、このジオメトリに影響させたいライトを名前指定で絞り込み (デフォルトは全ライト適用)
Extensions Page 📋
Python Extensions 🔧
Python 拡張のコンパイル / 起動時初期化の設定:
- Re-Init Extensions:
reinitextensions— Python 拡張オブジェクトを再コンパイル。通常は参照されたとき・定義が変わったときにのみコンパイルされるため、強制再構築時に押す - Init Extensions On Start:
initextonstart— TouchDesigner 起動時に拡張を自動的に Re-Init するかのトグル
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:
loadondemand— オンの場合、このコンポーネントは実際に必要となるまでメモリにロードされない (起動時間・メモリ消費の最適化)
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 ファイルからの相対パスとして解決 |
実践アイデア 💡
Example 1: カメラの Look At ターゲットとして使う 🎥
Null COMP (注視点) → Camera COMP (Look At = Null COMP のパス) → Render TOP
カメラに「シーン中の存在しない一点」を見続けさせたいときの基本パターン。Null COMP をターゲット位置に配置し、Camera COMP の Look At パラメータでそのパスを指定すると、Null を動かすだけでカメラが追従する。Null は Display フラグをオフにすればビューポート上から消せるため、レンダリング結果には現れない。
- シーン内の注視させたい位置に Null COMP を作成し、Translate (tx / ty / tz) で配置
- Camera COMP の Look At パラメータに作成した Null COMP のパス (例:
../null1) を指定 - Null COMP の Display フラグ (Network エディタの右側の青いドット) をオフにしてビューポートから非表示化
- Null COMP の Translate をアニメーションさせると、Camera は常にそれを向き続ける
Example 2: 子の一括Transform(親)として使う 🧩
Null COMP (グループ親) → 子に Geometry COMP × 複数 → 子の Parent = Null COMP
複数の Geometry COMP / Light COMP を一括で動かしたいとき、Null COMP を親に置きそれらを子として配置すると、Null の Translate / Rotate / Scale が子全体に伝播する。シーン整理 + 共通ピボットでの回転 / 拡縮を 1 箇所で制御できる。
- Null COMP を作成し、グループのピボット位置に Translate を設定
- 動かしたい複数の Geometry COMP や Light COMP を Null COMP の子として配置 (ネットワーク内に入れる、または Parent Transform Source = Specify Parent Object で Null を指定)
- Null COMP の Rotate を変えると子全体が同じ中心まわりに回転、Uniform Scale で子全体が一括拡縮
- Pivot を子グループの一端に動かすと、回転 / 拡縮の中心がそこに移る (例: 扉の蝶番位置を Pivot にして開閉アニメ)
Example 3: ボーンチェーンの End Affector として使う 🦴
Bone COMP (root) → Bone COMP (children) → ... → Bone COMP (tip) → IK 計算は Null COMP (End Affector) の位置を目標とする
Bone COMP でキャラクターの骨組みを構築し IK (逆運動学) で動かす際、手先 / 足先の到達目標として Null COMP を End Affector に指定する。Null を動かせばボーンチェーン全体が IK ソルバで自動追従する。
- Bone COMP でキャラクターのボーンチェーンを構築 (例: 肩 → 上腕 → 前腕 → 手首)
- 手首ボーンの先に Null COMP を配置し、これを End Affector として参照させる
- IK ソルバ (Kinematic Chain) で Null COMP の位置を目標にチェーンの回転を逆算
- Null COMP の Translate をマウス・センサ入力・アニメーションで動かすと、それに追従して肘・肩が自然な姿勢で曲がる
関連オペレータ 🔗
類似機能OP 🔍
- Base COMP — 汎用コンテナ COMP。ネットワーク階層のグルーピングに使う点で似ているが、Transform Page / Look At を持たない (Object COMP ではない)
- Geometry COMP — Null COMP と同じ Object COMP ファミリ (Transform 系パラメータを持つ) だが、内部に SOP ジオメトリを描画する違いがある
- Container COMP — Panel 系の汎用コンテナ。GUI レイアウト用途のグルーピング (3D 空間の参照点ではない)
組み合わせ推奨OP 🔄
- Camera COMP — Look At ターゲットとして Null COMP のパスを指定し、カメラを注視点に追従させる
- Light COMP — スポットライトの照射ターゲットとして Null COMP を Look At に指定
- Geometry COMP — Null COMP を親に置き、複数の Geometry COMP を子として一括 Transform で動かす
- Bone COMP — ボーンチェーンの End Affector として Null COMP の位置を IK の目標値に使う
- Object CHOP — Null COMP の transform を CHOP チャンネルとして読み出し、他ノードへ参照・補間に使う
- Render TOP — Null COMP は描画されないが、子の Geometry COMP は Render TOP の Geometry 入力経由でレンダリングされる
前処理・後処理COMP 🎯
- 前処理: Base COMP、Geometry COMP
- 後処理: Camera COMP、Light COMP、Geometry COMP
Info COMP情報 📊
Null COMP は Info CHOP / Info DAT で transform / cook 情報を取得できます。Object 系の transform は Object CHOP でも参照可能です。
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: OP が確保している CPU メモリ使用量
Object 固有情報 📊
tx / ty / tz: Null COMP のワールド位置 (Translate)rx / ry / rz: Null COMP のワールド回転 (度)sx / sy / sz: Null COMP のワールドスケール
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Look At しているのにカメラが対象を向かない
✅ Solution:
- Camera COMP の Look At パラメータに正しい Null COMP の相対パス / 絶対パスが入っているか確認 (例:
../null1//project1/null1) - Null COMP と Camera COMP が同じ World 座標系に存在するか確認 (異なる親 COMP 配下にあると親の Transform で位置がずれる)
- Camera COMP の Forward Direction が想定どおりの軸 (通常 -Z 軸) になっているか確認
❌ Problem: 子オブジェクトが Null COMP の Transform に追従しない
✅ Solution:
- 子 COMP の Parent Transform Source が
Parent (Hierarchy)になっており、かつ Null COMP の子として正しく配置されているか確認 - Specify Parent Object モードを使う場合は Parent Object パラメータに Null COMP の正しいパスが指定されているか確認
- Pre-Xform Page の Apply Pre-Transform がオフのままだと Pre-Xform 値は反映されない — 必要なら Pre-Xform 側もオンにする
❌ Problem: Path SOP に追従させたいが Null COMP がパス上を動かない
✅ Solution:
- Path SOP パラメータに有効な SOP のパスが入っているか確認 (例:
../path_sop) - Position パラメータ (0~1) を実際にアニメーションさせる (CHOP / Animation COMP / Expression で時間と紐付け)
- Orient along Path をオンにしないと向きはパスに沿わない (位置のみ移動して姿勢は固定のまま)
- Path SOP が空 (point が 0) になっていないか確認 — 上流でフィルタ条件によりポイントが消えているケースに注意
❌ Problem: ボーンチェーンの End Affector として動かしても IK が解けない
✅ Solution:
- Bone COMP 側で IK ソルバ (Kinematic Chain) が有効化され、End Affector に Null COMP のパスが指定されているか確認
- Null COMP がボーンチェーンの到達可能範囲内に存在するか確認 (チェーン全長より遠い位置は伸びきって解けない)
- Bone の Limits (関節可動範囲) が制約しすぎていないか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — COMP 概要
- TouchDesigner Wiki — Category:COMPs
- TouchDesigner Wiki — Category:Components
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Null COMP
- TouchDesigner公式ドキュメント – Camera COMP (Look At ターゲットの参照先)
- TouchDesigner公式ドキュメント – Bone COMP (End Affector の参照先)
- TouchDesigner公式ドキュメント – Extensions (Python 拡張)

