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

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

Divide SOP のポリゴン分割機能を示す図

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

概要 📖 – ポリゴンを細かく分ける

Divide SOPは、入力ポリゴンを凸化・平滑分割・グリッド分割・三角化・双対変換のいずれかで細かく分けて再構成する SOPです。Convex / Smooth / Bricker / Triangulate / Compute Dual の各モードを単独または組み合わせて使い、メッシュ密度を上げたり、凹面を整形したり、グリッド状に分けたりできます。

主な用途 🎯

  • 凹ポリゴンを凸化して陰影崩れを直す用途で、凹面のある入力ポリゴンを指定辺数以下に分割し、レンダリング時のシェーディング不具合を解消する
  • 箱から立方体ダイス状の角丸メッシュを生成する用途で、Box SOP の角を平滑分割で滑らかにし、近似的に丸みのあるダイス形状を作る
  • 平面サーフェスをグリッド状の小ポリゴンに分割する用途で、Bricker モードで均一なグリッド分割し、Point SOP で頂点カラーや変位を細かく当てる
  • Creep SOP / Lattice SOP の追従精度を上げる用途で、変形対象メッシュの密度を上げて、曲面追従や格子変形時のカクつきを抑える
  • 非平面ポリゴンを三角化して陰影を安定させる用途で、Triangulate Non-Planar で平面でない面のみを三角分割し、ノーマルとシェーディングの破綻を防ぐ
  • ポリゴンを双対変換 (頂点と面を入れ替える) する用途で、Compute Dual を有効にして、立方体 → 八面体のようなトポロジ変換を 1 ノードで行う

データフロー 🔄

入力: 任意のポリゴンジオメトリ (Box / Sphere / Grid / 任意の SOP 出力)
↓
Group で対象を絞り込み、Convex / Triangulate Non-Planar / Smooth / Bricker / Remove Shared Edges / Compute Dual のいずれかまたは複数を有効化して分割・整形
↓
出力: 再構成されたポリゴンメッシュ
CHECK

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

対象グループの絞り込み 🎯

Group .group 🎯
– 入力ジオメトリに Group (グループ) が定義されている場合、ここで指定したグループ名のプリミティブのみを分割対象にする
– パターンマッチング (* や [1-10] 等) が使用可能
– 空欄なら入力すべてのポリゴンが分割対象になる

凸ポリゴン化 .convex 🔺

Convex Polygons .convex 🔺
– Convex Polygons (凸ポリゴン化) — オンにすると、入力ポリゴンを下の Maximum Edges で指定した最大辺数まで凸化分割する
– 凹形状のポリゴンが正しくシェーディングされない問題を解消する用途や、すべての入力ジオメトリを三角ポリゴンに揃える用途に有効

Maximum Edges .numsides 🔢
– Maximum Edges (最大辺数) — 凸化されたポリゴンの最大辺数を指定する
– 入力ポリゴンの辺数がこの値を超えている場合のみ分割される。指定値以下の辺数のポリゴンは変更されない
– 3〜6 程度の小さい値ほど結果が安定する (細長く歪んだポリゴンが生成されにくい)

非平面ポリゴンの三角化 .planar 📐

Triangulate Non-Planar .planar 📐
– Triangulate Non-Planar (非平面ポリゴンの三角化) — オンにすると、平面でないポリゴンのみを三角ポリゴンに分割する
– 平面でないポリゴンは法線計算が不安定になりレンダリング時にシェーディング破綻を起こすため、これを三角化することで陰影が安定する

平滑分割 (Smooth Polygons) .smooth 🌀

Smooth Polygons .smooth 🌀
– Smooth Polygons (平滑分割) — オンにすると、隣接していて同一平面上にないポリゴン (例: Box の角) を分割して滑らかに整形する
– 例: Box SOP の出力を Facet SOP の Consolidate Points で頂点共有させてから本 SOP に通すと、サイコロのような角丸メッシュが生成できる

Weight .weight ⚖️
– Weight (分割位置の重み) — 追加されるポリゴンの局所性を決める係数
– 1 より大きい値はエッジ部分に分割を集中させ、角の遷移を滑らかにする
– 1 より小さい値は平坦な領域に分割を寄せ、元形状のエッジを引き寄せて全体形状を大きく変える

Divisions .divs 🔢
– Divisions (分割回数) — Smooth Polygons オプションでの再帰的サブディビジョン回数
– 1 は角部分のポリゴン数を 2 倍に、2 はさらにその 2 倍に増やす

グリッド分割 (Bricker Polygons) .brick 🧱

Bricker Polygons .brick 🧱
– Bricker Polygons (グリッド分割) — オンにすると、入力ポリゴンをグリッド状の正方形領域に切り分け、新しいポリゴンを生成する
– Creep SOP で別サーフェスに巻き付ける際の追従精度を上げたり、Lattice SOP で捻じる際の変形精度を上げたり、平面サーフェスを小ピース化して Point SOP で頂点カラーを当てる用途に使う
– 出力はメッシュではなく独立したポリゴン群

Size .size 📏
– Size (グリッドサイズ) — Bricker のグリッド分割マス目のサイズを XYZ 各軸で指定する

Offset .offset ↔️
– Offset (グリッドオフセット) — Bricker のグリッドを入力ジオメトリに対して XYZ 方向にずらすオフセット値

Angle .angle 🔄
– Angle (グリッドの傾き) — Bricker のグリッドを XYZ 各軸に対してどの角度で配置するかを指定する

共有エッジ除去と双対変換 🔁

Remove Shared Edges .removesh ✂️
– Remove Shared Edges (共有エッジ除去) — オンにすると、隣接ポリゴン同士が共有しているエッジ (内部エッジ) を削除する
– グリッド分割や凸化で生じた内部エッジを取り除いて、外形のみのワイヤフレームを得たい場合に有効

Compute Dual .dual 🔁
– Compute Dual (双対変換) — オンにすると、入力ポリヘドラの頂点と面を入れ替えた双対 (dual) ポリヘドラを出力する
– 例: 立方体 (頂点 8 / 面 6) を双対化すると、八面体 (頂点 6 / 面 8) になる


実践アイデア 💡

Example 1: 角丸サイコロ形状を作る 🎲

Box SOP → Facet SOP (Consolidate Points) → Divide SOP (Smooth Polygons オン, Weight=4, Divisions=2) → Material SOP → Render TOP

Box SOP のデフォルト出力は各面のポイントが共有されておらず、そのままでは Divide SOP の Smooth Polygons モードが効きません。前段に Facet SOP を挟んで Consolidate Points でポイントを共有化してから、Divide SOP の Smooth Polygons を有効化し、Weight を 4 程度・Divisions を 2 に設定すると、角に分割が集中して角丸の立方体 (サイコロのような形状) が得られます。

  1. Box SOP を配置 (デフォルト設定で OK)
  2. 下流に Facet SOP を接続し、Consolidate Points を有効化してポイントを共有化
  3. さらに下流に Divide SOP を接続し、Smooth Polygons をオンにする
  4. Weight を 4 程度、Divisions を 2 に設定し、角に分割が集中するように調整
  5. Material SOP でマテリアルを当て、Render TOP で角丸のサイコロ形状を確認

Example 2: 平面を細かく分けて着色 🧱

Grid SOP → Divide SOP (Bricker Polygons オン, Size=0.1) → Point SOP (頂点カラー) → Material SOP

Grid SOP で生成した平面サーフェスを Divide SOP の Bricker Polygons モードでさらに均一なグリッド分割すると、後段で Point SOP による頂点カラーや頂点ノイズ変位を細かく適用できる準備が整います。Size パラメータを XYZ 方向に小さく設定するほどメッシュ密度が上がり、頂点ベースのアニメーション解像度が向上します。

  1. Grid SOP を配置し、ベースとなる平面サーフェスを作る
  2. 下流に Divide SOP を接続し、Bricker Polygons をオンにする
  3. Size を 0.1 程度の小さな値に設定し、グリッドマス目を細かくする
  4. 出力を Point SOP に接続し、頂点カラーや変位を頂点単位で適用
  5. Material SOP 経由でレンダリングし、細かい頂点ベース表現が反映されることを確認

Example 3: 立方体を八面体に変換 🔁

Box SOP → Divide SOP (Compute Dual オン) → Material SOP → Render TOP

Compute Dual はポリヘドラの頂点と面を入れ替えた双対 (dual) を出力する機能です。Box SOP で生成した立方体 (頂点 8 / 面 6) を Divide SOP に通して Compute Dual をオンにすると、各面の中心が新しい頂点となり、隣接面同士が共有する関係が新しい辺として生まれて、八面体 (頂点 6 / 面 8) のメッシュが生成されます。1 ノードでトポロジ変換できるため、双対関係を持つ立体を簡易的に表現したい場合に便利です。

  1. Box SOP を配置し、立方体を出力させる
  2. 下流に Divide SOP を接続し、Compute Dual をオンにする (他のオプションはオフ)
  3. 出力ジオメトリを確認すると、立方体の双対である八面体が得られる
  4. Info CHOP で num_points / num_prims を確認すると、頂点 6 / プリミティブ 8 になっていることが分かる
  5. 他の入力 (ドデカヘドラ等) を切り替えると、別の双対関係を持つ多面体に変換できる

関連オペレータ 🔗

類似機能OP 🔍

  • Subdivide SOP — Catmull-Clark 等の滑らかな再帰サブディビジョンでメッシュ密度を上げる SOP (Divide の Smooth よりも汎用で滑らか)
  • Facet SOP — Consolidate Points / 平面化 / 法線統一などポリゴン整形系の処理を行う SOP (Divide の Smooth Polygons 前処理として頻出)
  • Polyreduce SOP — メッシュのポリゴン数を減らす逆方向の SOP (Divide が分割するのに対し、Polyreduce は削減する)

組み合わせ推奨OP 🔄

  • Box SOP — 立方体を生成し、Divide の Smooth Polygons でサイコロ風角丸メッシュ化する起点
  • Grid SOP — 平面サーフェスを生成し、Divide の Bricker Polygons でさらに均一分割する起点
  • Facet SOP — Divide の Smooth Polygons 前段で Consolidate Points によりポイント共有化する必須前処理
  • Creep SOP — Divide で密度を上げたメッシュを別サーフェスに巻き付けて追従精度を高める
  • Material SOP — Divide で生成されたメッシュにマテリアルをアサインしてレンダリングする

前処理・後処理SOP 🎯


Info CHOP情報 📊

Divide 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 — このオペレータが最後にクックされたフレーム番号
  • cooked_this_frame: cooked_this_frame — 当該フレームでクックされた場合は 1

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

よくある問題と解決策 🔧

❌ Problem: Smooth Polygons をオンにしてもメッシュが滑らかにならない
✅ Solution:

  • 前段に Facet SOP を入れて Consolidate Points を有効化し、ポイントを共有化する (Smooth Polygons の前提条件)
  • Divisions が 1 のままだと分割が浅いため、2 以上に上げる (3 以上はポリゴン数が爆発するので注意)
  • Weight を 1 より大きく設定して、エッジ部分に分割を集中させる

❌ Problem: ポリゴン数が想定以上に増えて重くなる
✅ Solution:

  • Smooth Polygons の Divisions を下げる (3 以上は指数的に増加)
  • Bricker Polygons の Size を大きくしてマス目を粗くする
  • Info CHOP で num_points / num_prims を監視し、必要に応じて後段に Polyreduce SOP を入れてポリゴン数を削減

❌ Problem: Convex Polygons を有効にしても凹形状が直らない
✅ Solution:

  • Maximum Edges が 3 未満になっていないか確認 (3 以上が必須)
  • 入力ポリゴンの辺数が Maximum Edges 以下の場合は分割されないため、値を小さく設定する (例: 3 で完全三角化)
  • シェーディング崩れが目的の場合は Triangulate Non-Planar も併用すると、非平面の凹面が三角化される

❌ Problem: Bricker Polygons の分割が期待した方向や位置にならない
✅ Solution:

  • Offset パラメータでグリッドの基準位置を入力ジオメトリに対してずらす
  • Angle パラメータで XYZ 各軸に対する傾きを指定し、グリッドの向きを変える
  • Size は XYZ 個別に指定できるため、特定の軸方向だけ細かいスラブ状分割にしたい場合は対応する軸の値だけ小さくする

参考資料 📚

その他 🔗

公式リソース 📖


関連まとめ 🔗

ファミリー別一覧 📑

厳選オペレータ ⭐

逆引き 🔎


この記事はLLMと共に内容を執筆、更新しています。
なるべく正確な情報を心掛けていますが、最新バージョンとの項目差異など情報の不一致を見つけたらXもしくはInsta、メールなどから管理者までご連絡いただけると嬉しいです🫠


まる。

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

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

日常を垂れ流すだけのアカウント
Instagram:@malmal0v0

発信を今後がんばる予定のアカウント
Youtube:https://www.youtube.com/@malmal0v0

まる。をフォローする
その他の記事はこちら
今流行りのクリエイティブツール、Touchdesignerとは?業界の現役ちいかわエンジニアができることを解説ッ
トカゲのポーズ(ウッターナ・プリシュターサナ)のやり方|効果・コツ・注意点【ヨガ】
針の糸通しのポーズ(パールシュヴァ・バーラーサナ)のやり方|効果・コツ・注意点【ヨガ】
ウサギのポーズ(ササンガーサナ)のやり方|効果・コツ・注意点【ヨガ】
スフィンクスのポーズ(サーランバ・ブジャンガーサナ)のやり方|効果・コツ・注意点【ヨガ】

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