Lattice SOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Lattice SOP の格子点による自由変形機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 格子点で頂点を変形

Lattice SOPは、格子点や任意点群の変位に従って入力ジオメトリを自由変形 (FFD) させる SOPです。初期状態の格子 (Rest) と変形後の格子 (Deformed) の差分をジオメトリに伝播させることで、メッシュ全体を粘土のように曲げたりねじったりするキャラクターアニメーションやプロップ変形の基礎ツールになります。

主な用途 🎯

  • 格子 (Lattice) を曲げてメッシュを丸ごと自由変形 (FFD) — オブジェクト全体を粘土のように曲げ・ねじり・膨らませる
  • Grid SOP を Rest / Deformed の 2 入力に与えて変形差分を伝播 — 初期格子と変形後格子の差分でジオメトリを追従変形
  • Deform Type を Points に切替えて任意点群でメッシュを操作 — 不規則配置のコントロールポイント群で局所的に変形
  • カーネル関数 (Wyvill / Elendt / Blinn / Links) で影響範囲の減衰特性を選択 — メタボール的な滑らかさで点の影響を分布
  • Group パターンで変形対象ポイントを絞り込み — メッシュの一部分のみを格子変形対象に指定

データフロー 🔄

入力 0: 変形対象ジオメトリ + 入力 1: Rest 格子 + 入力 2: Deformed 格子

Deform Type / Divisions / Kernel / Radius で対応関係計算

各ポイントが格子変位に従い追従変形

出力: 変形後ジオメトリ SOP

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Lattice Page 📁

対象ポイント絞り込み 🎯

Group .group 🎯
Group (変形対象ポイント) — 入力 0 のうち変形対象とするポイントのサブセットを指定するパターン文字列
– 空欄の場合は入力全体が変形対象になる
*0-15 等の Pattern Matching 記法が使える

変形タイプ .deformtype 🎛️

規則的な格子で変形させるか、任意点群で変形させるかの切替

項目 内部名 説明
Lattice .lattice 規則的な格子 (Grid SOP の頂点配列) で変形。直方体状の格子を曲げ・ひねりして全体を変形させる古典的 FFD
Points .points 不規則な点群 (任意の SOP の点) を変形コントローラとして使用。点の影響範囲をメタボール的に分布させて局所変形

格子分割数 .divs 🔢

Divisions .divs 🔢
Divisions (格子分割数) — Rest / Deformed として接続する格子グリッドの X / Y / Z 軸方向の分割数
– 内部成分: X (divsx) / Y (divsy) / Z (divsz)
– 入力 1 / 入力 2 に接続する Grid SOP 等の分割数と必ず一致させる必要がある

  • X (divsx) — 横方向の分割数
  • Y (divsy) — 縦方向の分割数
  • Z (divsz) — 奥行方向の分割数

カーネル関数 .kernel 🎛️

Deform Type を Points にしたときの、各点が周囲のジオメトリに与える影響の減衰特性を選ぶメタカーネル

項目 内部名 説明
Wyvill model .wyvill Wyvill 関数 — 中心で最大、半径外で滑らかに 0 へ収束する標準的メタボール曲線
Elendt model .elendt Elendt 関数 — Wyvill より急峻な減衰で局所的な変形が出やすい
Blinn model .blinn Blinn 関数 — 古典的なガウス状減衰で柔らかい変形に向く
Links model .links Links 関数 — 隣接点同士の連結性を反映する減衰、複数点の重ね合わせがなめらかになる

※ 注意: Kernel Function は Deform Type を Points にしたときのみ意味を持ちます。Lattice モードでは無視されます。詳細は公式の Metaball Model Types を参照してください。

引用元: 公式 docs

影響半径 .radius 📏

Radius .radius 📏
Radius (影響半径) — Deform Type が Points のときに、各コントロールポイントが周囲のジオメトリに与える影響範囲の大きさ
– 大きくすると変形が広範囲になだらかに広がり、小さくすると局所的なつまみ出しのような変形になる
– Lattice モードでは無視される


実践アイデア 💡

Example 1: 格子で全体を曲げ変形 🟦

Box SOP → Lattice SOP (入力 0) ← Grid SOP (Rest, 入力 1) ← Grid SOP (Deformed, 入力 2) → 出力

立方体メッシュを 2 つの Grid SOP (Rest と Deformed) で挟み込み、Deformed 側の格子点を Transform SOP や Point SOP で曲げると、入力 0 のジオメトリが格子の変位差分に従って追従変形します。古典的 FFD ワークフローの基本形。

  1. Box SOP 等のベースメッシュを用意して Lattice SOP の入力 0 に接続
  2. Grid SOP を 1 つ作り Rest 用として Lattice SOP の入力 1 に接続
  3. 同じ分割数で 2 つ目の Grid SOP を作り Deformed 用として入力 2 に接続
  4. Lattice SOP の Deform TypeLatticeDivisions を Grid SOP の分割数と一致させる
  5. Deformed 側の Grid SOP に Transform SOP を挿入して回転 / シア / 拡大すると、入力 0 のメッシュも同じく変形する

Example 2: 任意点群でつまみ出し変形 📌

Sphere SOP → Lattice SOP (Deform Type: Points) ← Point SOP (Rest) ← 同点群を移動した SOP (Deformed)

球メッシュに対し、不規則配置の数点だけをコントローラとして使い、Deform Type を Points に切替えて部分的なつまみ出し・凹み変形を作る例。Kernel FunctionRadius で各点の影響範囲をメタボール的に滑らかに分布させます。

  1. Sphere SOP を入力 0 に接続
  2. Add SOP / Point SOP 等で不規則な数点の点群を作り Rest 用として入力 1 に接続
  3. 同じ点群を Transform SOP または Point SOP で局所的に移動した出力を Deformed として入力 2 に接続
  4. Lattice SOP の Deform TypePoints に切替
  5. Kernel FunctionWyvill 等から選び、Radius を調整して影響範囲の広さを決める

Example 3: CHOPで格子をアニメ変形 🔄

Grid SOP (Rest) / Grid SOP + CHOP to SOP (Deformed) → Lattice SOP → Geometry COMP

Deformed 側の格子点を CHOP to SOP でドライブし、LFO / Noise CHOP 等の信号で格子全体を時間的に揺らすことで、入力ジオメトリにアニメ変形を加える構成。VJ ライブのプロップ変形や呼吸表現に向きます。

  1. Grid SOP 2 個を同じ分割数で用意し、Rest / Deformed として入力 1 / 入力 2 に接続
  2. Deformed 側 Grid SOP に CHOP to SOP を挿入し、LFO CHOP / Noise CHOP の出力を点位置に流す
  3. Lattice SOP の Deform TypeLatticeDivisions を Grid SOP の分割数と揃える
  4. 入力 0 に変形させたいベースメッシュを接続
  5. 出力を Geometry COMP に流してレンダリング、CHOP の振幅・周波数で変形の強さを制御

関連オペレータ 🔗

類似機能OP 🔍

  • Magnet SOP — 別ジオメトリで点群を磁力的に引き寄せる変形。局所的なメッシュ膨張・凹みに使う
  • Deform SOP — Capture SOP のウェイト属性と Bone 階層を使ったスケルタル変形。骨で動かしたいときの代替
  • Twist SOP — 軸まわりのねじり・湾曲・テーパー等のパラメトリック変形

組み合わせ推奨OP 🔄

  • Grid SOP — Rest / Deformed として入力 1 / 入力 2 に接続する標準的格子ソース
  • Transform SOP — Deformed 側格子を回転・シア・拡大して FFD の変形量を決めるドライバ
  • Point SOP — 格子点を個別に書換えて局所的な変形パターンを作る
  • CHOP to SOP — CHOP 信号を格子点位置に流してアニメ変形を駆動
  • Geometry COMP — Lattice SOP の変形後ジオメトリをレンダリングパイプラインへ流す

前処理・後処理SOP 🎯


Info CHOP情報 📊

Lattice 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:

  • 入力 1 (Rest) と入力 2 (Deformed) の両方に格子オブジェクトが接続されているか確認
  • Divisions の X / Y / Z が Rest / Deformed の Grid SOP の分割数と一致しているか確認
  • Group に変形対象外のポイントしか含まれていないか (空欄にして全点対象でテスト)

❌ Problem: 格子分割数がズレてメッシュが破綻する
✅ Solution:

  • Rest 側 Grid SOP と Deformed 側 Grid SOP の Rows / Columns / 厚み方向分割を完全に一致させる
  • Lattice SOP の Divisions パラメータも同じ値に合わせる
  • 格子全体が変形対象メッシュの bounding box を包んでいるか確認 (はみ出した点は外挿で予期しない位置に飛ぶ)

❌ Problem: Points モードで影響範囲がおかしい・尖った変形になる
✅ Solution:

  • Radius を大きくしてコントロールポイント同士の影響範囲を重ねる
  • Kernel FunctionWyvillBlinn に切替えて滑らかな減衰特性にする
  • Rest / Deformed の点群が同じ順序・同じ点数で並んでいるか確認 (順序不一致で対応が崩れる)

❌ Problem: 変形後の法線が崩れる・シェーディングがおかしい
✅ Solution:

  • 後段に Convert SOP や Point SOP を入れて法線を再計算する
  • 変形量が大きすぎる場合はベースメッシュの分割を細かくしてからかけ直す
  • 入力ジオメトリの段階で法線属性が存在するか確認

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました