
概要 📖 – 頂点をボーンで変形
Deform SOPは、キャプチャ属性に従ってボーン階層でジオメトリを変形させる SOPです。Capture SOP で付与したポイントウェイトを参照し、Skeleton Root Path 配下の Bone 階層の動きに合わせてメッシュを変形させ、キャラクタースキニングを実現します。
主な用途 🎯
- キャラクターアニメーションのスキニング — Capture SOP で付与したウェイト属性に従い、Bone 階層の動きに合わせてメッシュを変形
- Capture SOP との組合せでスケルタル変形パイプラインを構築 (Capture SOP → Deform SOP → Geometry COMP の標準フロー)
- Delete Capture Attributes でメモリ節約 — 変形後はウェイト属性を破棄して後段 SOP の処理コストを削減
- Deform Normals で法線も同期変形 — シェーディングを正しく追従させて光の当たり方の崩れを防止
- Skeleton Root Path で異なるリグへの再ターゲット — 同一メッシュを別 Bone 階層で動かすバリエーション制作
データフロー 🔄
入力 0: キャプチャ済ジオメトリ (Capture SOP 出力のウェイト属性付き) + Skeleton Root Path 参照の Bone 階層
↓
各ポイントが影響度に応じて Bone の動きに追従して変形
↓
(任意) Deform Normals で法線も同期変形
↓
出力: 変形後ジオメトリ SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Deform Page 📁
対象ポイント絞り込み 🎯
Group .group 🎯
– Group (対象ポイント・プリミティブ群) — 変形対象とするポイントまたはプリミティブのグループを指定します
– 空欄の場合は入力 0 の全ポイントが変形対象になります
– * や [0-10] 等のパターンマッチングが使用可能
スケルトン参照 🦴
Skeleton Root Path .skelrootpath 🌳
– Skeleton Root Path (スケルトンの起点パス) — 変形に使う Bone 階層のルート COMP のパス
– このパス配下を traverse して見つかった Capture Region (Bone) 群の現在位置で変形を計算
– 同一メッシュを別 Bone 階層で動かしたいときはここを切替えて再ターゲット可能
変形動作・最適化 ⚙️
Deform Normals .donormal ✨
– Deform Normals (法線も同期変形) — オンにすると変形に合わせて法線も再計算します
– シェーディングを正しく追従させたい場合は基本オン
– 法線を後段で別途計算する場合 (例: Convert SOP / Point SOP) はオフにして処理コストを削減
Delete Capture Attributes .delcaptatr 🗑️
– Delete Capture Attributes (キャプチャ属性を削除) — 変形後にポイントキャプチャ属性を破棄
– ポイントキャプチャ属性はメモリ消費が大きいため、後段で再利用しない場合はオンにして節約
– 同フレームで再変形する用途 (例: 別の Skeleton Root を切替) ではオフ
Delete Point Colors .delcolatr 🎨
– Delete Point Colors (ポイントカラーを削除) — Capture SOP がキャプチャ補助として付与した点色を破棄
– 本番ライティングに点色を使わない場合はオンにして属性を整理
– 後段で Capture 状態の可視化を残したい場合はオフ
実践アイデア 💡
Example 1: キャラクターのスキニング再生 🕺
入力 SOP → Capture SOP → Deform SOP → Geometry COMP
Capture SOP でウェイト属性を付与したキャラクターメッシュを、Deform SOP で Bone 階層の動きに追従させて変形させる基本フロー。Capture SOP の Hierarchy と Deform SOP の Skeleton Root Path に同じ Bone 階層のルート COMP を指定することで、Bone のアニメーションがそのままメッシュ変形に反映されます。
- ベースメッシュ (例: Grid SOP / Box SOP / 読み込んだ FBX SOP) を用意
- Capture SOP で Hierarchy にスケルトンのルート COMP を指定し、ウェイト属性を付与
- Deform SOP の入力 0 に Capture SOP の出力を接続
- Deform SOP の
Skeleton Root Pathに Capture SOP と同じ Bone 階層のルートを指定 - Bone をアニメーションさせてメッシュが追従変形することを確認
- Geometry COMP に Deform SOP を流してレンダリング
Example 2: メモリ最適化と法線同期 💾
Capture SOP → Deform SOP (Deform Normals オン + Delete Capture Attributes オン) → 後段 SOP
高ポリゴンメッシュではキャプチャ属性のメモリ消費が無視できないため、Deform SOP の段階で Delete Capture Attributes と Delete Point Colors をオンにして属性を整理しつつ、Deform Normals をオンにしてシェーディングも正しく追従させる構成。後段の Convert SOP / Material SOP の処理コストを大きく下げられます。
- Capture SOP で付与済のウェイトメッシュを Deform SOP に接続
Deform Normalsをオンにして変形に法線を追従Delete Capture Attributesをオンにして変形後に重い属性を破棄Delete Point Colorsもオンにしてキャプチャ補助の点色を削除- 後段の Material SOP / Convert SOP / Geometry COMP の処理が軽くなることを確認
Example 3: 別リグへの再ターゲット切替 🔁
Capture SOP (Hierarchy: rig_A) → Deform SOP (Skeleton Root Path 切替) → 出力
同一のキャプチャ済メッシュに対して、Deform SOP の Skeleton Root Path だけを別の Bone 階層 (rig_A / rig_B) に切替えることで、複数のリグバリエーションを 1 メッシュで使い回せます。プリビズや A/B 比較、アクター入れ替えのようなワークフローで便利。
- Capture SOP で rig_A の階層を Hierarchy に指定してウェイト付与
- Deform SOP の
Skeleton Root Pathを rig_A に設定して動作確認 - 別 Bone 階層 rig_B (rig_A と同名・同階層構造) を用意
- Deform SOP の
Skeleton Root Pathを rig_B に切替 - rig_B のアニメーションでメッシュが追従変形することを確認
関連オペレータ 🔗
類似機能OP 🔍
- Lattice SOP — 格子状コントロールポイントによる自由変形 (FFD)。骨ではなく格子で変形させたいときの代替
- Magnet SOP — 別ジオメトリで点群を磁力的に引き寄せる変形。局所的なメッシュ膨張・凹みに便利
- Twist SOP — 軸まわりのねじり・湾曲・テーパー等のパラメトリック変形
組み合わせ推奨OP 🔄
- Capture SOP — Deform SOP の前段でウェイト属性を付与する必須コンビネーション
- Capture Region SOP — Skeleton Root Path 配下に配置する個々の Bone 形状を定義
- Bone Group SOP — Bone (Capture Region) 群をグループ単位で管理する補助 SOP
- Geometry COMP — Deform SOP の変形後ジオメトリをレンダリングパイプラインへ流す
- Bone COMP — Skeleton Root Path 配下に配置するアニメーション可能な Bone (関節)
前処理・後処理SOP 🎯
Info CHOP情報 📊
Deform SOP は Info CHOP による詳細情報取得に対応しています。
ジオメトリ統計 📐
num_points: この SOP に含まれるポイント数num_prims: この SOP に含まれるプリミティブ数num_particles: この SOP に含まれるパーティクル数
GPU 転送タイミング 🎮
last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)
汎用オペレータ情報 🔄
total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数cook_time: 直近のクック所要時間 (ミリ秒)cook_frame: このオペレータが最後にクックされたフレーム番号warnings: このオペレータの警告数errors: このオペレータのエラー数
クック統計 ⏱️
total_cooks:total_cooks— プロセス開始以降にこのオペレータがクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒、変形負荷の指標)cook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 変形が反映されない・メッシュが動かない
✅ Solution:
- 入力 0 のジオメトリに Capture SOP のウェイト属性が付与されているか確認 (Info DAT などで
pCapt属性の有無を見る) Skeleton Root Pathが Capture SOP の Hierarchy と同じ Bone 階層のルートを指しているか確認Groupに変形対象外のポイントしか含まれていないか (空欄にして全点対象でテスト)
❌ Problem: 変形後の法線が破綻してシェーディングが崩れる
✅ Solution:
Deform Normalsをオンにして法線を変形に同期させる- 後段で Convert SOP 等で法線を再計算する場合は本パラメータをオフにしてもよい
- ベースメッシュの段階で法線属性が存在するか確認 (Point SOP / Polyreduce 後は法線が落ちている場合あり)
❌ Problem: メモリ使用量が多い・後段の SOP が重い
✅ Solution:
Delete Capture Attributesをオンにして変形後に重いpCapt属性を破棄Delete Point Colorsもオンにしてキャプチャ補助の点色属性を削除- 前段で Convert SOP 等を使ってジオメトリを軽量形式に変換してから Capture/Deform を適用
❌ Problem: 別 Bone 階層に切替えるとメッシュが崩壊する
✅ Solution:
- 切替先 Bone 階層が Capture 時の階層と同じ名前・同じ階層構造になっているか確認 (Capture SOP のウェイトは Bone のパスで参照されるため命名違いで対応が崩れる)
- Capture SOP の
Capture Frame(T ポーズなど) と切替先 Bone の Capture Frame 時点の姿勢が一致しているか確認 - 必要なら Capture SOP まで戻って切替先 Bone 階層で再キャプチャしてから Deform SOP に流す
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Deform SOP
- TouchDesigner公式ドキュメント – Capture SOP
- TouchDesigner公式ドキュメント – Capture Region SOP
- TouchDesigner公式ドキュメント – Bone

