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

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

Metaball SOP のメタボール生成機能を示す図

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

概要 📖 – 粘土のような有機的な形を生成

Metaball SOPは、中心と半径から滑らかに溶け合う暗黙曲面を生成する SOPです。近くに置いた複数のメタボールは互いに引き合うように融合し、粘土や水滴のような有機的な塊を作ります。入力を接続すると、その形状を囲む範囲(バウンド)に合わせて配置します。

主な用途 🎯

  • 粘土のように溶け合う有機的な形状の生成
  • 複数の球が滑らかに融合するメタボール表現
  • 変形ツールの影響範囲を定義する磁石役のソース
  • 水滴・溶岩・液体のような柔らかい質感のモチーフ作り
  • 抽象的でぬるっとした立体のモーショングラフィックス素材

データフロー 🔄

入力: メタボールの中心と半径を定義

重み・カーネル関数で密度場(フィールド)を計算

近くのメタボール同士が滑らかに融合

出力: 滑らかにつながった暗黙曲面

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📋

バウンド設定 .modifybounds 📦

Modify Bounds .modifybounds 📦
Modify Bounds (バウンド修正) — 入力が接続されているときだけ有効になり、メタボールを囲む範囲(バウンド)を設定します。
オンにすると、下記の中心・半径のパラメータでバウンドの位置と大きさをさらに調整します。

中心と半径 .transform 🎯

Radius .rad 📏
Radius (半径) — メタボールの密度場(フィールド)の半径を X / Y / Z の 3 軸で指定します。
軸ごとに値を変えると、球ではなく楕円状のメタボールになります。

  • X (radx): X 軸方向の半径
  • Y (rady): Y 軸方向の半径
  • Z (radz): Z 軸方向の半径

Center .t 📍
Center (中心位置) — メタボールの中心を X / Y / Z の 3 軸で指定します。
複数のメタボールの中心を近づけると、互いに滑らかに融合します。

  • X (tx): X 軸方向の中心位置
  • Y (ty): Y 軸方向の中心位置
  • Z (tz): Z 軸方向の中心位置

Weight .metaweight ⚖️
Weight (重み) — メタボールの密度場の中で暗黙曲面が現れる重みを決めます。
重みを上げるとメタボールの密度が高くなり、自身と周囲のメタボールがつくる曲面が大きく膨らみます。

カーネル関数 .kernel 🧮

Kernel Function (カーネル関数) — メタボールの密度場をどの数式で解釈するかを選びます。形の溶け合い方や輪郭の硬さが変わります。

項目 内部名 説明
Wyvill .wyvill Wyvill 方式の解釈
Elendt .elendt Elendt 方式の解釈
Blinn .blinn Blinn 方式の解釈
Links .links Links 方式の解釈

膨らみと法線 .exponent 🪐

XY Exponent .expxy ↔️
XY Exponent (XY 指数) — X 軸と Y 軸方向の膨らみ・くびれ具合を決めます。
1 より大きいと星形に尖り、1 より小さいと角張った四角寄りの形になり、1 だと球状になります。

Z Exponent .expz ↕️
Z Exponent (Z 指数) — Z 軸方向の膨らみ・くびれ具合を決めます。
XY 指数と同じく、1 を基準に尖り具合・角張り具合が変化します。

Compute Normals .normals 🧭
Compute Normals (法線を計算) — ジオメトリに法線を生成します。
ライティングやシェーディングを正しく当てたいときにオンにします。


実践アイデア 💡

Example 1: 溶け合う球の生成 🫧

Metaball SOP × 複数 → Iso Surface SOP → Render TOP

中心を少しずつずらした複数の Metaball SOP を近くに配置し、互いに滑らかに融合した有機的な塊を作る基本フローです。仕上げに Iso Surface SOP でポリゴンに変換します。

  1. Metaball SOP を作成し、Center を少しずつずらして複数配置
  2. Radius と Weight を調整してメタボール同士を融合させる
  3. Kernel Function で溶け合い方の質感を選ぶ
  4. Iso Surface SOP に通してレンダリング可能なポリゴンに変換

Example 2: 粘土を盛る局所変形 🧱

Grid SOP → Magnet SOP (Translate) ← Metaball SOP

Metaball SOP を Magnet SOP の入力 2 に接続し、メタボールの影響範囲だけを引き上げて、平面に粘土を盛ったような有機的な盛り上がりを作る用途です。

  • Grid SOP で変形させたい平面を用意し、Magnet SOP の入力 1 に接続
  • Metaball SOP を作成して Magnet SOP の入力 2 に接続
  • Metaball の Center と Radius で盛り上げる位置と範囲を調整

Example 3: 水滴のうねり演出 🌊

Metaball SOP (animated) → Iso Surface SOP → Phong MAT

Metaball SOP の中心位置や重みを時間でアニメーションさせ、メタボール同士がくっついたり離れたりする水滴のような動的な表現を作る例です。

  • Metaball SOP を複数配置し、Center をアニメーションさせる
  • Weight を時間で変化させて融合・分離の動きを付ける
  • Iso Surface SOP でポリゴン化し、質感を付けてレンダリング

関連オペレータ 🔗

類似機能OP 🔍

  • Sphere SOP — 融合しない単独の球体プリミティブを生成
  • Iso Surface SOP — 密度場から等値面(暗黙曲面)を抽出

組み合わせ推奨OP 🔄

  • Iso Surface SOP — メタボール場を後段でポリゴンに変換
  • Magnet SOP — 入力 2 に接続して局所変形の影響範囲を定義
  • Convert SOP — 出力をポリゴンやメッシュ形式に変換

前処理・後処理SOP 🎯


Info情報 📊

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

  • 複数の Metaball SOP の Center を近づけて配置されているか確認
  • RadiusWeight を上げて密度場を重ね合わせる
  • 後段で Iso Surface SOP を使って等値面を抽出しているか確認

❌ Problem: 意図しない尖った形・四角い形になる
✅ Solution:

  • XY Exponent / Z Exponent を 1 に戻して球状の基準に戻す
  • Kernel Function を切り替えて溶け合い方の質感を変える
  • Radius を 3 軸で揃えて楕円ではなく球に近づける

❌ Problem: レンダリングで表面が暗い・汚い
✅ Solution:

  • Compute Normals をオンにして法線を生成する
  • 後段で Convert SOP を使ってメッシュ形式に変換する
  • Iso Surface 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をコピーしました