
概要 📖 – U/V パラメータ位置をターゲットにした粘土的サーフェス変形
Clay SOPは、入力サーフェス・フェイスプリミティブの U/V ターゲット位置近傍の CV を Matrix または Vector 方式で引き寄せて粘土のように変形させる SOPです。NURBS / Bezier サーフェスではノット挿入による Sharpness 制御、Polygon / Mesh ではターゲット点近傍のポイント移動として動作し、Bias で引きつけ方向を非対称に偏らせます。
主な用途 🎯
- NURBS / Bezier サーフェスの局所変形で、U/V パラメータ空間上の任意位置 (ターゲット) を粘土のように引き出して凹凸を作る
- Face プリミティブ (Polygon / Mesh / NURBS Curve 等) のターゲット点変形で、近傍 CV (制御点) を引き寄せて滑らかな変形を生成
- Warp Method の使い分けで、Matrix 方式 (Transform 行列ベース) と Vector 方式 (距離+方向ベクトル) を切替えて変形を制御
- U Sharpness / V Sharpness によるノット挿入制御で、NURBS サーフェスのターゲット位置にノットを挿入し変形の鋭さを段階的に調整
- U Bias / V Bias によるプル方向の偏り制御で、ターゲット周辺 CV への引きつけ量を左右非対称に偏らせて波形を傾ける
- Deform along U / V トグルでの軸方向限定で、サーフェスを U 方向のみ・V 方向のみに引っ張る (どちらかオフ時はそのアイソパラメトリック曲線全体が変形)
データフロー 🔄
入力: 入力 SOP (Face / Surface プリミティブ)
↓
Clay Page でターゲット U/V と Warp Method (Matrix/Vector) を指定
↓
U Page / V Page で各軸の Bias と Sharpness を制御
↓
出力: ターゲット位置の CV が変形された Source プリミティブ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Clay Page 📋
対象グループの指定 🎯
Group .group 🎯
– 入力 SOP にグループが定義されている場合、特定グループ名のみを対象に変形を適用
– * 等のパターンマッチング (Scripting Guide の Pattern Matching 準拠) が利用可能
– 空欄時は入力全体が対象
Warp Method の選択 .method 🛠️
ターゲット (U, V) 点またはアイソパラメトリック曲線 (U または V) に対してどのタイプの変形を適用するかを選択。いずれの方式も最終的には方向に沿った符号付き移動に帰着し、その移動量と方向の与え方が異なる。
| 項目 | 内部名 | 説明 |
|---|---|---|
. |
変換行列でターゲット点を再配置する方式。Translate / Rotate / Scale / Pivot のセットで Transform SOP と同じ感覚でターゲットを移動できる | |
. |
Distance (距離) と方向ベクトルを指定して、その方向に沿って平行移動させる方式。Normal トグルがオンなら方向はプリミティブ法線に自動追従、オフなら Direction で明示指定 |
Transform Order の選択 .xord 🔀
Matrix 方式での変換順序。同じ値でも順序が違うと結果が変わる。
| 項目 | 内部名 | 説明 |
|---|---|---|
. |
拡縮 → 回転 → 平行移動の順 | |
. |
拡縮 → 平行移動 → 回転の順 | |
. |
回転 → 拡縮 → 平行移動の順 | |
. |
回転 → 平行移動 → 拡縮の順 | |
. |
平行移動 → 拡縮 → 回転の順 | |
. |
平行移動 → 回転 → 拡縮の順 |
Rotate Order の選択 .rord 🔄
Transform Order 内の回転の軸順序。
| 項目 | 内部名 | 説明 |
|---|---|---|
. |
X 軸 → Y 軸 → Z 軸 の順で回転 | |
. |
X 軸 → Z 軸 → Y 軸 の順で回転 | |
. |
Y 軸 → X 軸 → Z 軸 の順で回転 | |
. |
Y 軸 → Z 軸 → X 軸 の順で回転 | |
. |
Z 軸 → X 軸 → Y 軸 の順で回転 | |
. |
Z 軸 → Y 軸 → X 軸 の順で回転 |
Matrix 方式の変換量 (Translate / Rotate / Scale / Pivot) 📐
Translate .t ➡️
– Source ジオメトリを X / Y / Z (tx / ty / tz) 各軸で平行移動
– Matrix 方式時に有効
Rotate .r 🔄
– Source ジオメトリを X / Y / Z (rx / ry / rz) 各軸で回転 (degrees)
– Matrix 方式時に有効
Scale .s 🔍
– Source ジオメトリを X / Y / Z (sx / sy / sz) 各軸で拡縮
– Matrix 方式時に有効
Pivot .p 🎯
– 変換の基準点 (X / Y / Z = px / py / pz)
– 拡縮と回転の中心になり、Pivot 位置を変えると同じ Scale / Rotate でも結果が大きく変わる
– 例: Pivot が (-1, -1, 0) でオブジェクトを 0.5 倍すると、オブジェクトは Pivot 側 (左下) へ縮んでスライドして見える
Vector 方式の距離・方向 📏
Distance .dist 📏
– Vector 方式時の移動距離 (符号付き)
– 方向ベクトル (Normal または Direction) に沿って指定距離だけ平行移動
Normal .normal 🧷
– オンにすると Vector 方式の移動方向がターゲット (U, V) 点でのプリミティブ法線に追従
– オフにすると Direction パラメータで方向ベクトルを明示指定
– Face プリミティブでは法線がターゲット点 U に依存しないため、U の位置を変えても法線方向は同じ点に注意
Direction .dir 🧭
– Normal オフ時の方向ベクトル (dirx / diry / dirz)
– Vector 方式時のみ有効
Coordinates / 直接座標指定 📍
Coordinates .coord 📍
– ターゲット (U, V) 点を移動させる 3D の絶対座標 (coordx / coordy / coordz)
– 「ターゲット点をどこに移動させたいか」を直接ワールド座標で指定する方式
プリミティブスナップによる U / V 指定 🧲
U and V .uvsnap 🧲
– Primitive (プリミティブスナップ) 方式時に、ターゲット点をスナップさせる別プリミティブ上の U と V を指定
– 詳細は Warp Method パラメータの説明を参照
U Page 📐
U 方向の変形と U パラメータ 📐
Deform along U .uwarp ✅
– U パラメータ方向の変形を有効化するトグル
– Face / Surface 共通で適用
– Face で U オフ: 入力は一切変形されない
– Surface で U オフ: V がオンなら V 方向全体に沿って引っ張る (オフなら全く変形されない)
U .u 📐
– Face のパラメトリック空間内のターゲット点 U 座標
– Surface では U と V で 2 次元位置を指定 (V Page も参照)
– Spline (NURBS / Bezier) Face / Surface: ドメイン値 ([0, 1] に限らない実数値) を Clay SOP が実ドメインにマップ
– Polygon / Mesh: 頂点数 / 列数とその相対位置で表現
U Bias の制御 ⚖️
U Bias (toggle) .uusebias 🔘
– Clay アルゴリズムが U 用に推奨する自動 Bias を使うか、明示値を使うかを切替えるトグル
– オフ時は自動 Bias、オン時は隣の数値フィールド ubias の値を使用
U Bias (value) .ubias ⚖️
– U Bias トグルがオンのときに使う Bias 値
– ターゲット U 周辺の左右どちらの CV を強く引きつけるかを傾ける
– 結果として「波」がターゲット点を中心に左右どちらかへ傾く
U Sharpness によるノット挿入 🔪
U Sharpness .usharp 🔪
– NURBS Curve / Surface のみに適用
– ターゲット U にノットを挿入することで、引きつけ範囲を狭めて変形を鋭くする
– 0 ではノット挿入なし、1 ではノットを最大数 (= ドメインの degree 分) 挿入して非常に鋭い形状になる
– 離散的に変化し、ステップ数はスプライン degree と同じ。スライダはドメインに応じて自動的に有効位置にジャンプ
V Page 📐
V 方向の変形と V パラメータ 📐
Deform along V .vwarp ✅
– V パラメータ方向の変形を有効化するトグル (Surface のみ)
– Surface で V オフ: U がオンなら U 方向全体に沿って引っ張る (オフなら全く変形されない)
– U と V が両方オン: U Page / V Page で指定した (U, V) ターゲット点でサーフェスを引っ張る
– Face タイプには適用されない
V .v 📐
– Surface のパラメトリック空間内のターゲット点 V 座標
– Spline Surface: ドメイン値を Clay SOP が実ドメインにマップ
– Mesh: 行数とその相対位置で表現
V Bias の制御 ⚖️
V Bias (toggle) .vusebias 🔘
– Clay アルゴリズムが V 用に推奨する自動 Bias を使うか、明示値を使うかを切替えるトグル
– オフ時は自動 Bias、オン時は隣の数値フィールド vbias の値を使用
V Bias (value) .vbias ⚖️
– V Bias トグルがオンのときに使う Bias 値
– ターゲット V 周辺の左右どちらの CV を強く引きつけるかを傾ける
V Sharpness によるノット挿入 🔪
V Sharpness .vsharp 🔪
– NURBS Surface のみに適用
– ターゲット V にノットを挿入することで、引きつけ範囲を狭めて変形を鋭くする
– 0 ではノット挿入なし、1 ではノットを最大数 (= V degree 分) 挿入して非常に鋭い形状になる
– 離散的に変化し、ステップ数は V degree と同じ。スライダはドメインに応じて自動的に有効位置にジャンプ
実践アイデア 💡
Example 1: NURBS面の局所凸変形 🏔️
Grid SOP (NURBS Surface) → Clay SOP (Vector, Normal=On, U=0.5, V=0.5, Distance=0.4) → Material SOP → Geometry COMP
NURBS サーフェスの中央 (U=0.5, V=0.5) を法線方向に 0.4 だけ引き出して凸状の盛り上がりを作る最も基本的な使い方です。Warp Method を Vector にし、Normal トグルをオンにするとターゲット点でのサーフェス法線に沿って自動的に変形方向が決まり、Distance の符号で凸 (正) / 凹 (負) を切替えられます。地形・布・有機形状の手付け変形に頻出するパターンで、複数 Clay を直列に重ねれば複数の凹凸を順に積み上げられます。
- Grid SOP を作成し、
Primitive TypeをNURBS Surfaceにして 10×10 程度の分割で生成 - Clay SOP を後段に接続し、
Warp MethodをVectorに設定 Normalをオンにして法線方向に変形U=0.5、V=0.5でサーフェス中央をターゲット指定Distance=0.4で凸方向に引き出し (負値にすると凹)- 後段に Material SOP / Geometry COMP を繋げてレンダリング
Example 2: Clay SOP の直列スタックで複数凹凸を手付け 🗻
Grid SOP (NURBS Surface) → Clay SOP × 3 (各ターゲット U/V 異なる) → Material SOP
1 個の Clay SOP は単一ターゲット点の変形しかできませんが、Clay SOP を直列に複数積むことで複数の凹凸を順に積み上げて手付け地形のような形状を作れます。各 Clay でターゲット (U, V) と Distance を変え、Normal モードで法線方向に引き出していけば、低周波の山と谷を意図通りに配置できます。Sharpness を 0.0〜0.3 程度に抑えることで丸みを保ったまま自然な手付け感を維持できます。
- Grid SOP で NURBS Surface のベースを生成
- 1 個目の Clay SOP:
U=0.3/V=0.3/Distance=0.5で 1 つ目の山 - 2 個目の Clay SOP:
U=0.7/V=0.4/Distance=-0.3で谷 - 3 個目の Clay SOP:
U=0.5/V=0.8/Distance=0.4で 2 つ目の山 - 各 Clay で
U Sharpness/V Sharpnessを0.2程度に抑えて丸い変形を維持
Example 3: U Bias で非対称な「引き」を表現 (布の片寄せ) 🧵
Grid SOP (NURBS Surface) → Clay SOP (Vector, U Bias=On, U Bias value=0.8) → Material SOP
U Bias / V Bias は、ターゲット点を中心とする「変形の波」を左右どちらかへ意図的に偏らせる仕組みです。布の角を片側だけ強く引っ張るような表現や、ターゲットの片側だけ強く凹ませる非対称な歪みに使えます。U Bias トグルをオンにして ubias 値を 0.5 から大きくずらすほど偏りが強くなります。
- Grid SOP で NURBS Surface を生成
- Clay SOP の
Warp MethodをVectorに設定 U Bias (toggle)をオンにするU Bias (value)を0.8に設定して右寄りの引きを強めるU/Vでターゲット位置とDistanceを指定して非対称な変形を確認
関連オペレータ 🔗
類似機能OP 🔍
- Point SOP — 個別ポイント属性の編集による頂点ベース変形 (Clay はパラメトリック U/V 経由)
- Lattice SOP — 格子ケージで包んだ広域変形 (Clay は単一ターゲット点の局所変形)
- Transform SOP — 全体変換 (Clay は U/V ターゲット周辺のみ変形)
組み合わせ推奨OP 🔄
- Grid SOP — Clay の入力となる NURBS / Bezier / Polygon Surface の生成ソース
- Material SOP — Clay 変形後のサーフェスに質感を付与
- Refine SOP — Clay 前段で CV / ノット密度を増やして変形の自由度を上げる
- Point SOP — Clay 後段で頂点法線を再計算したり属性を整える
- Magnet SOP — Clay と組合せ広域なソフトデフォーム + 局所ターゲット変形を両立
前処理・後処理SOP 🎯
Info CHOP情報 📊
Clay 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: Distance や Translate を変えてもサーフェスが変形しない
✅ Solution:
Deform along Uがオンになっているか確認 (Face タイプは U オフだと全く変形されない)- Surface の場合は
Deform along Vも併せて確認 (両方オフだと変形ゼロ) Warp MethodがVectorならDistanceが0でないか、MatrixならTranslate/Rotate/Scaleがデフォルト値のまま変えていないか確認
❌ Problem: Sharpness を上げても変形が鋭くならない
✅ Solution:
U Sharpness/V Sharpnessは NURBS Curve / Surface のみに作用するため、Polygon / Mesh / Bezier では効果がない- 入力 SOP の
Primitive Typeが NURBS であることを確認 (Bezier では U Sharpness は無効) - Sharpness のスライダはスプライン degree により離散ステップで動くため、中間値を入れても valid な位置に自動スナップする点に注意
❌ Problem: Bias を変えても変形の偏りが見えない
✅ Solution:
U Bias (toggle)/V Bias (toggle)がオフのままだと隣の数値フィールド (ubias/vbias) が無視され、自動 Bias が使われる- 明示的に偏らせたい場合はトグルをオンにしてから数値を変更する
- Bias は
0.5付近で対称、そこからずれるほど偏りが大きくなる
❌ Problem: Normal をオンにしても期待した法線方向に動かない
✅ Solution:
- Face プリミティブでは法線がターゲット (U) に依存せずプリミティブ全体で同じ方向のため、U の値を変えても法線方向は変わらない
- Surface でローカルな法線方向に変形したい場合は、変形前のサーフェスを Display Options でプリミティブ法線を表示して期待値を確認
- 明示的に方向指定したい場合は
NormalをオフにしてDirection(dirx/diry/dirz) で方向ベクトルを直接入力
❌ Problem: 変形範囲が広すぎる / 狭すぎる
✅ Solution:
- NURBS / Bezier では入力 SOP の CV 密度 (ノット数) が変形範囲を決めるため、前段に Refine SOP を入れて CV を増やすと変形を局所化できる
- Polygon / Mesh では入力ポイント数が直接影響するので、密度を上げてから Clay を適用する
- 範囲を狭くしたい場合は
U Sharpness/V Sharpnessを上げる (NURBS のみ)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Clay SOP
- TouchDesigner公式ドキュメント – Transform SOP
- TouchDesigner公式ドキュメント – Spline
- TouchDesigner公式ドキュメント – Primitive

