
概要 📖 – 軸まわりに非線形変形
Twist SOPは、入力ジオメトリを軸まわりにねじり・湾曲・テーパー・スカッシュなど非線形に変形させる SOPです。ねじり・曲げ・先細り・押しつぶしといった非線形の変形を 1 ノードで適用でき、効果を確認するにはメッシュのエッジ方向に十分な分割があることが重要です。
主な用途 🎯
- 軸を中心にメッシュをねじる (Twist) 表現 — 角柱や帯状ジオメトリをドリル・キャンディのように回転変形させる
- 軸に沿ってメッシュを湾曲させる (Bend) 表現 — 真っ直ぐなオブジェクトを弓なり・チューブ状に曲げる
- テーパー (Taper / Linear Taper) で先細り形状を作る — 円柱の片端を細くしてコーンやくさび形に整形
- スカッシュ&ストレッチで弾むような誇張変形 — アニメーション定番の押しつぶし・引き伸ばし表現を 1 ノードで実現
- シア (Shear) で軸方向に傾ける平行変形 — メッシュ全体を斜めにスライドさせて動きの溜めを作る
データフロー 🔄
入力 0: 変形対象ジオメトリ
↓
Operation で変形の種類を選択
↓
Primary Axis / Secondary Axis / Pivot で向きと基点を決定
↓
Strength / Rolloff で強さと減衰を調整
↓
出力: 非線形変形後のジオメトリ SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
対象グループ絞り込み 🎯
Group .group 🎯
– Group (対象グループ) — 入力にグループがある場合、ここでグループ名を指定するとそのグループのみを変形対象にします
– 空欄の場合は入力全体が変形対象になる
– * や [1-10] 等の Pattern Matching 記法が使える
変形の種類 .op 🎛️
Operation (変形の種類) — 適用する非線形変形の種類を選びます。以下から選択:
| 項目 | 内部名 | 説明 |
|---|---|---|
| Twist | .twist |
Twist (ねじり) — 入力ジオメトリを Primary Axis まわりに回転させてねじる |
| Bend | .bend |
Bend (曲げ) — Secondary Axis 上の点を固定したまま Primary Axis まわりに入力を湾曲させる |
| Shear | .shear |
Shear (せん断) — Primary Axis を見下ろす向きで Secondary Axis に沿って入力を平行にずらす |
| Taper | .taper |
Taper (先細り) — Primary Axis を見下ろす向きで Secondary Axis に沿って入力を先細りさせる |
| Linear Taper | .ltaper |
Linear Taper (直線先細り) — Taper と同様に先細りさせるが、エッジが直線のまま保たれる |
| Squash & Stretch | .squash |
Squash & Stretch (押しつぶし&引き伸ばし) — アニメーション定番の弾むような誇張変形ツール |
主軸 .paxis 🧭
Primary Axis (主軸) — 変形が最初に起こる軸を選びます。変形は主軸で先に発生し、その後で副軸に及びます。以下から選択:
| 項目 | 内部名 | 説明 |
|---|---|---|
| X Axis | .x |
X Axis (X 軸) — 変形の主軸として X 軸を使用 |
| Y Axis | .y |
Y Axis (Y 軸) — 変形の主軸として Y 軸を使用 |
| Z Axis | .z |
Z Axis (Z 軸) — 変形の主軸として Z 軸を使用 |
副軸 .saxis 🧭
Secondary Axis (副軸) — 主軸の後に変形が及ぶ軸を選びます。Bend / Shear / Taper では副軸が変形の方向を決める基準になります。以下から選択:
| 項目 | 内部名 | 説明 |
|---|---|---|
| X Axis | .x |
X Axis (X 軸) — 変形の副軸として X 軸を使用 |
| Y Axis | .y |
Y Axis (Y 軸) — 変形の副軸として Y 軸を使用 |
| Z Axis | .z |
Z Axis (Z 軸) — 変形の副軸として Z 軸を使用 |
変形の基点 .p 📍
Pivot .p 📍
– Pivot (変形の基点) — 変形の原点となる座標を指定します
– 内部成分: X (px) / Y (py) / Z (pz)
– オブジェクトの中心とは異なる位置に基点を置くことで変形のコントロール性が高まる (例: 押しつぶし時は基点を底面に置く)
- X (px) — 基点の X 座標
- Y (py) — 基点の Y 座標
- Z (pz) — 基点の Z 座標
変形の強さ .strength 💪
Strength .strength 💪
– Strength (変形の強さ) — 適用する効果の強さです。Operation の種類によって意味が変わります
– Bend では端部の曲がり具合 (0.5 程度が目安)、Twist ではねじり量、Shear ではずれ量、Taper では先細りの膨らみ方向を制御する
– Squash & Stretch では元の体積感を保ちながら押しつぶし量を決める
減衰の効き方 .roll 📉
Rolloff .roll 📉
– Rolloff (減衰の効き方) — 効果がジオメトリの範囲にどう広がるかを決めます
– 通常は 1 で効果がジオメトリ全体に均等に広がる。1 より大きいと同じ範囲内で効果が複数回繰り返される
– 0 にすると効果が中心の狭い範囲に局所化し、Strength が正しく効かなくなることがある
実践アイデア 💡
Example 1: 角柱をねじる基本変形 🌀
Box SOP → Subdivide SOP → Twist SOP (Operation: Twist) → 出力
細長い角柱メッシュを十分に分割したうえで Twist SOP の Twist モードに通し、Primary Axis まわりに回転させてドリルやキャンディのようにねじる基本フローです。分割数が足りないとねじりが現れないため前段で細分化します。
- Box SOP で細長い角柱を作り入力 0 に接続
- Subdivide SOP でエッジ方向の分割数を増やす
- Twist SOP の
OperationをTwistに設定 Primary Axisを角柱の長手方向の軸に合わせるStrengthを上げてねじり量を調整、Rolloffを 1 前後にして全体に均等にねじりを広げる
Example 2: チューブを弓なりに曲げる 🏹
Tube SOP → Twist SOP (Operation: Bend) → 出力
真っ直ぐなチューブメッシュを Twist SOP の Bend モードで湾曲させ、弓なり・パイプの曲がりのような形状を作る例です。Secondary Axis 上の点を固定したまま Primary Axis まわりに曲げるため、曲げの向きは 2 つの軸の組み合わせで決まります。
- Tube SOP で長さ方向に分割の多いチューブを作る
- Twist SOP の
OperationをBendに設定 Primary AxisとSecondary Axisを曲げたい平面に合わせて選ぶStrengthを 0.5 程度から調整して曲がり具合を決めるPivotをチューブの端に寄せると片持ち梁のような曲げ表現になる
Example 3: CHOPで弾む押しつぶし 🔄
Sphere SOP → Twist SOP (Operation: Squash & Stretch) ← CHOP to (Strength) → Geometry COMP
球メッシュに Twist SOP の Squash & Stretch を適用し、LFO CHOP 等の信号を Strength パラメータにエクスポートして弾むような押しつぶし・引き伸ばしをアニメーションさせる構成です。VJ ライブのバウンス表現に向きます。
- Sphere SOP を入力 0 に接続
- Twist SOP の
OperationをSquash & Stretchに設定 Pivotを球の底面に移動して接地したバウンス感を出す- LFO CHOP / Noise CHOP の出力を
Strengthパラメータにエクスポートして時間変化させる - 出力を Geometry COMP に流してレンダリング
関連オペレータ 🔗
類似機能OP 🔍
- Lattice SOP — 格子点や任意点群の変位でメッシュを自由変形 (FFD) する。より自由度の高い変形が必要なとき
- Magnet SOP — 別ジオメトリで点群を磁力的に引き寄せる局所変形。つまみ出し的な変形に使う
- Deform SOP — Capture のウェイトと Bone 階層を使ったスケルタル変形。骨で動かしたいときの代替
組み合わせ推奨OP 🔄
- Subdivide SOP — 前段でエッジ分割を増やし、ねじり・曲げが滑らかに現れるようにする
- Transform SOP — 変形後のジオメトリを回転・移動・拡大して最終配置を整える
- Copy SOP — ねじったジオメトリを複製・配列して反復パターンを作る
- Geometry COMP — Twist SOP の変形後ジオメトリをレンダリングパイプラインへ流す
前処理・後処理SOP 🎯
- 前処理: Box SOP、Tube SOP、Subdivide SOP
- 後処理: Transform SOP、Facet SOP、Null SOP
Info CHOP情報 📊
Twist 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:
- 前段に Subdivide SOP を入れてエッジ方向の分割数を増やす
Strengthの値を上げて効果の強さを確認Rolloffが 0 になっていないか確認 (0 だと効果が中心に局所化する)
❌ Problem: ねじり・曲げの向きが意図と違う
✅ Solution:
Primary AxisとSecondary Axisの組み合わせを変形させたい平面に合わせて選び直すPivotの X / Y / Z を変形の基点にしたい位置へ移動する- 前段に Transform SOP を入れてメッシュの向きを整えてから変形をかける
❌ Problem: メッシュが破綻する・尖った変形になる
✅ Solution:
Strengthを下げて変形量を抑える- ベースメッシュの分割を細かくしてから変形をかけ直す
- 後段に Facet SOP を入れて法線を再計算しシェーディングを整える
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Twist SOP
- TouchDesigner公式ドキュメント – Pattern Matching
- TouchDesigner公式ドキュメント – Subdivide SOP

