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

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

Magnet SOP のメタボール変形機能を示す図

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

概要 📖 – メタボールで形を引き寄せ変形

Magnet SOPは、入力ジオメトリをメタボールの影響範囲に沿って局所的に変形させる SOPです。入力 1 の変形対象に対し、入力 2 のメタボールが影響範囲(フォールオフ)を定義し、その範囲内だけに平行移動・回転・拡縮を加えます。

主な用途 🎯

  • メタボールの影響範囲を使ったジオメトリの局所的な変形
  • 粘土をつまんで引き伸ばすような有機的なデフォーメーション
  • 顔や体の一部だけを膨らませる・へこませるモーフィング表現
  • アニメーションでの局所的な盛り上がり・うねりの演出
  • サーフェスへ滑らかな凹凸を加えるスカルプト的な造形

データフロー 🔄

入力1: 変形させたいジオメトリ(Source)

入力2: メタボール(Magnet)の影響範囲を定義

影響範囲内で平行移動・回転・拡縮を適用

出力: 局所的に変形したジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📋

対象グループ .groups 🎯

変形対象とメタボール役のジオメトリをグループ名で指定する設定です。

Deform Group .deformgrp 🎯
Deform Group (変形対象グループ) — 変形させたいジオメトリのグループを指定します。
空欄の場合は入力 1 のすべてのジオメトリが変形対象になります。パターンマッチングが使用可能です。

Magnet Group .magnetgrp 🧲
Magnet Group (磁石役グループ) — 磁石(メタボール)として働かせるジオメトリのグループを指定します。
空欄の場合は入力 2 のすべてのメタボールが影響範囲として扱われます。パターンマッチングが使用可能です。


Deform Page 🛠️

変形順序 .xord 🔢

Transform Order (変形順序) — 平行移動・回転・拡縮を適用する順番を指定します。同じ数値でも順番が違うと結果が変わります。

項目 内部名 説明
Scale Rotate Translate .srt 拡縮 → 回転 → 平行移動 の順
Scale Translate Rotate .str 拡縮 → 平行移動 → 回転 の順
Rotate Scale Translate .rst 回転 → 拡縮 → 平行移動 の順
Rotate Translate Scale .rts 回転 → 平行移動 → 拡縮 の順
Translate Scale Rotate .tsr 平行移動 → 拡縮 → 回転 の順
Translate Rotate Scale .trs 平行移動 → 回転 → 拡縮 の順

回転順序 .rord 🔄

Rotate Order (回転順序) — 変形順序の中で 3 軸の回転を適用する順番を指定します。

項目 内部名 説明
Rx Ry Rz .xyz X → Y → Z 軸の順に回転
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 軸の順に回転

変形量の設定 .transform 📐

Translate .t ↔️
Translate (平行移動) — 影響範囲内のジオメトリを 3 軸(X / Y / Z)に沿って移動させます。
メタボールの影響の強さ(重み)に応じて移動量がスケールされます。

Rotate .r 🔁
Rotate (回転) — 影響範囲内のジオメトリを 3 軸(X / Y / Z)に沿って回転させます。
ねじれるような変形を加えたいときに使用します。

Scale .s 🔍
Scale (拡縮) — 影響範囲内のジオメトリを 3 軸(X / Y / Z)に沿って拡大・縮小させます。
膨らませる・へこませるといった造形に使用します。

Pivot .p 📍
Pivot (基準点) — 平行移動・回転・拡縮を行う際の基準となる点を 3 軸(X / Y / Z)で指定します。
ピボットチャンネルの基準点とは別物です。


実践アイデア 💡

Example 1: 粘土を引き伸ばす変形 🧱

Grid SOP → Magnet SOP (Translate) ← Metaball SOP

Grid SOP の平面に Metaball SOP を磁石として接続し、Magnet SOP の Translate でメタボール周辺だけを引き上げて、粘土を指でつまみ上げたような有機的な盛り上がりを作るフローです。

  1. Grid SOP で変形させたい平面ジオメトリを用意し、Magnet SOP の入力 1 に接続
  2. Metaball SOP を作成し、Magnet SOP の入力 2 に接続
  3. Magnet SOP の Translate Y に正の値を入れてメタボール周辺を引き上げ
  4. Metaball の位置と半径を調整して盛り上がる範囲をコントロール

Example 2: 顔の局所モーフ 🙂

Alembic SOP → Magnet SOP (Scale) ← Metaball SOP

読み込んだ顔モデルの頬の位置にメタボールを置き、Magnet SOP の Scale で局所的に膨らませて、表情のモーフィングのような部分変形を実現する用途です。

  • Alembic SOP などで顔モデルを読み込み、Magnet SOP の入力 1 に接続
  • Metaball SOP を頬の位置に配置して入力 2 に接続
  • Magnet SOP の Scale をわずかに上げて頬だけを膨らませる

Example 3: アニメーションのうねり 🌊

Sphere SOP → Magnet SOP (Translate) ← Metaball SOP (animated)

球体ジオメトリに対し、位置をアニメーションさせたメタボールを磁石として通すことで、表面を波のようにうねらせる動的な変形演出を作る例です。

  • Sphere SOP で球体を作成し、Magnet SOP の入力 1 に接続
  • Metaball SOP の中心位置を時間でアニメーションさせて入力 2 に接続
  • Magnet SOP の Translate で持ち上げ量を設定し、表面のうねりを発生させる

関連オペレータ 🔗

類似機能OP 🔍

  • Lattice SOP — 格子の制御点を動かしてジオメトリ全体を変形
  • Twist SOP — ねじり・曲げ・先細りなどの大域的な変形
  • Deform SOP — ボーンのキャプチャ重みでジオメトリを変形

組み合わせ推奨OP 🔄

  • Metaball SOP — 入力 2 に接続して影響範囲を定義する磁石役
  • Transform SOP — 変形後のジオメトリ全体を移動・回転・拡縮
  • Copy SOP — 変形結果を複製して反復パターンを生成

前処理・後処理SOP 🎯


Info情報 📊

Magnet SOP は Info CHOP / Info DAT による詳細情報の取得に対応しています。

ジオメトリ統計 📐

  • 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: このオペレータのエラー数

クック統計 ⏱️

  • cook_time: 直近のクックにかかった時間(ミリ秒)
  • total_cooks: このノードがクックされた累計回数

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: ジオメトリが変形しない
✅ Solution:

  • Translate の値がすべて 0 になっていないか確認(0 だと磁石は作用しません)
  • 入力 2 に Metaball SOP が正しく接続されているか確認
  • Metaball の半径が変形対象まで届く大きさになっているか確認

❌ Problem: 変形が強すぎる・形が崩れる
✅ Solution:

  • Translate / Scale の値を小さくして影響量を抑える
  • Metaball の重み(Weight)を下げて影響の強さを弱める
  • 変形対象を Deform Group で限定して範囲を絞る

❌ Problem: 意図しない範囲まで変形する
✅ Solution:

  • Metaball の半径を小さくして影響範囲を狭める
  • 前段で Grid SOP などの解像度を上げて変形を滑らかにする
  • Magnet Group で磁石として使うメタボールを限定する

参考資料 📚

その他 🔗

公式リソース 📖

関連オペレータ 🔗

この記事は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をコピーしました