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

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

Polyreduce SOP のポリゴン削減機能を示す図

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

概要 📖 – ポリゴン数を減らして軽量化

Polyreduce SOPは、入力されたポリゴンメッシュを単純化し、形状を保ちつつポリゴン数を減らす SOPです。削減方法を割合・枚数・距離から選び、境界や折り目を保護するバイアスを指定して軽量なメッシュを生成します。

主な用途 🎯

  • ハイポリ形状を見た目を保ったまま軽量化 (重い読み込みメッシュのポリゴン数を削って表示を高速化)
  • 削減方法を割合・枚数・距離の 3 通りから選択し、用途に合わせて削減量を制御
  • 折り目や境界を保持しながら削減し、形状の重要な特徴を崩さずに簡素化
  • 細分化後の重いメッシュを後段で間引く (Subdivide で増えすぎたポリゴンの後処理)
  • 距離に応じた段階的な簡素化で、カメラから遠い部分だけポリゴンを削る

データフロー 🔄

入力 1: 削減したいポリゴンメッシュ

削減方法 (割合・枚数・距離) を選択

残す量と保護バイアスを指定

出力: ポリゴン数が削減された軽量メッシュ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Reduce Page 📁

対象指定パラメータ 🎯

Polygons .reduce 🗂️
Polygons (削減対象のポリゴン) — 単純化の候補とするポリゴン群を指定します。
– ここで指定したポリゴンと頂点を共有する他のポリゴンも、削減の影響を受ける場合があります。

Features .creases ✂️
Features (特徴エッジ) — どのポリゴンを折り目 (特徴エッジ) として扱うかを指定します。
– ここで指定したエッジは削減時に保護されやすくなり、形状の重要な稜線が崩れにくくなります。

削減方法パラメータ .method 🔀

Method (削減方法) — ポリゴン数を減らす方法を以下から選択するメニュー

項目 内部名 説明
Percentage .percentage 残す割合 (パーセント) で削減レベルを指定
Number .number 残すポリゴン枚数で削減レベルを指定
Distance .distance オブジェクトへの距離に基づいてポリゴンを削減

削減量パラメータ 🔢

Keep % .percentage 📊
Keep % (残す割合) — Method を「Percentage」にしたとき、何パーセントのポリゴンを残すかを指定します。
– 値が小さいほど大きく削減され、見た目の劣化と引き換えに軽量になります。

Keep # .numpolys 🔣
Keep # (残す枚数) — Method を「Number」にしたとき、残すポリゴンの枚数を指定します。
– 目標ポリゴン数が決まっている場合 (描画予算の上限など) に使います。

Minimum % .minpercent 📉
Minimum % (最小割合) — 削減レベルの下限を指定します。
– これ以上は削らないという下限ラインを設けることで、削りすぎによる形状崩壊を防ぎます。

距離削減パラメータ 📏

Object .obj 🎚️
Object (基準オブジェクト) — 距離削減の基準とするオブジェクトを指定します。
Method が「Distance」のときに、このオブジェクトからの距離で削減量が決まります。

Dist. Threshhold .distance 📐
Dist. Threshhold (距離しきい値) — ポリゴンをフル詳細のまま残すワールド距離を指定します。
– この距離より近いポリゴンは削られず、遠いポリゴンほど大きく削減されます。


Clean Page 🧹

保護バイアスパラメータ 🛡️

Stiffen Border .borderweight 🚧
Stiffen Border (境界の保護) — 平面サーフェスの境界エッジが侵食されるのを防ぐバイアスを指定します。
– 制約がないと平面の縁が削れて痩せていくため、この値で侵食にペナルティを与えて境界を維持します。

Stiffen Features .creaseweight ✂️
Stiffen Features (特徴エッジの保護) — 折り目 (特徴エッジ) が削られるときに加えるペナルティの量を指定します。
– 値を大きくすると稜線が保持されやすくなり、形状の重要な特徴が崩れにくくなります。

Equalize Edges .lengthweight 📏
Equalize Edges (エッジの均等化) — 長いエッジの削除にペナルティを与えるバイアスを指定します。
– 極端に細長い三角形を減らす方向に働き、より均一なポリゴン分布に近づけます。

削減品質パラメータ 🔧

Prevent Mesh Inversion .meshinvert 🔄
Prevent Mesh Inversion (面反転の防止) — 各削減ステップで三角形の法線が反転しないかを検査します。
– わずかなコストはかかりますが、面が裏返る破綻を防げるため有効にしておく価値はほぼ常にあります。

Pre-Triangulate .triangulate 🔺
Pre-Triangulate (事前三角形化) — 削減対象は三角形ポリゴンのみのため、入力ポリゴンを自動的に三角形化します。
– 四角形以上のポリゴンを含むメッシュを削減したいときに有効にします。

境界保持パラメータ 🩹

Prevent Cracking .keepedges 🧷
Prevent Cracking (亀裂の防止) — ポリゴンの境界に位置するエッジの削除を禁止します。
– 削減されない領域との境目に隙間 (亀裂) が生じないようにする設定です。

Use Original Points .originalpoints 📍
Use Original Points (元のポイントを使用) — エッジを折りたたむとき、最適な内分点を計算する代わりに元の 2 点のいずれかを使います。
– 頂点位置を元の座標に保ちたい場合 (UV や属性のずれを抑えたいとき) に有効です。


実践アイデア 💡

Example 1: 重いメッシュを軽量化 🪶

File In SOP → Polyreduce SOP (Method=Percentage, Keep %=30) → Geometry COMP → Render TOP

読み込んだハイポリのメッシュを Polyreduce SOP で割合指定 30% まで削減し、見た目を保ったまま表示を軽くする最小構成。重い 3D モデルをリアルタイム描画に乗せる定番パターン。

  1. File In SOP で外部の重いポリゴンメッシュを読み込む
  2. Polyreduce SOP を後段に接続し Method を「Percentage」に設定
  3. Keep % を 30 程度から始め、形状が崩れない範囲で下げていく
  4. 境界が痩せる場合は Stiffen Border を上げて平面の縁を保護
  5. Geometry COMP に接続し、Render TOP で削減後の見た目とフレームレートを確認

Example 2: 細分化後を間引く 🔁

Subdivide SOP (Depth=3) → Polyreduce SOP (Method=Number, Keep #=5000)

Subdivide SOP で滑らかにした結果ポリゴン数が膨れ上がったメッシュを、Polyreduce SOP の枚数指定で目標枚数まで間引く例。滑らかさを得つつ描画予算の上限を守る後処理として使う。

  1. Subdivide SOP で素体を Depth 3 まで細分化して滑らかにする
  2. Polyreduce SOP を後段に接続し Method を「Number」に設定
  3. Keep # に目標ポリゴン枚数 (例: 5000) を指定
  4. Prevent Mesh Inversion をオンのままにして面反転による破綻を防ぐ
  5. Info CHOPnum_prims で削減後のポリゴン数を確認

Example 3: 距離で段階的に削減 📐

Geometry (mesh) → Polyreduce SOP (Method=Distance, Object=camera) → Geometry COMP

Polyreduce SOP の距離削減モードを使い、基準オブジェクト (カメラなど) から遠い部分だけポリゴンを削る例。手前はフル詳細、奥は粗く、という段階的な軽量化で広いシーンのコストを抑える。

  1. 削減したいポリゴンメッシュを用意する
  2. Polyreduce SOP の Method を「Distance」に設定
  3. Object に距離の基準とするオブジェクト (カメラなど) を指定
  4. Dist. Threshhold でフル詳細を保つ距離を指定し、それより遠い部分を削る
  5. Minimum % で削りすぎの下限を設け、遠景でも形状が崩壊しないようにする

関連オペレータ 🔗

類似機能OP 🔍

  • Subdivide SOP — ポリゴン数を増やして滑らかにする逆方向の操作 (削減と対になる細分化)
  • Divide SOP — ポリゴンの分割・三角形化を行う SOP (削減ではなく分割側)
  • Facet SOP — 重複ポイントの結合・法線処理など面属性のクリーンアップを行う SOP
  • Convert SOP — ジオメトリ型を変換し、必要に応じてポリゴン化する SOP

組み合わせ推奨OP 🔄

  • Subdivide SOP — 細分化で増えたポリゴンを後段の Polyreduce で間引く
  • File In SOP — 外部の重いメッシュを読み込み Polyreduce で軽量化
  • Transform SOP — 削減後の出力に移動・回転・スケールを掛ける
  • Geometry COMP — 削減した軽量メッシュをレンダリングパイプラインに投入

前処理・後処理SOP 🎯


Info CHOP情報 📊

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

  • Keep %Keep # を上げて削減量を緩め、形状が保てる最小の削減レベルを探る
  • Stiffen Features を上げて折り目 (特徴エッジ) を保護し、稜線が崩れないようにする
  • Minimum % で削減の下限ラインを設定し、削りすぎによる崩壊を防ぐ

❌ Problem: 平面の縁が痩せて隙間が出る
✅ Solution:

  • Stiffen Border を上げて境界エッジの侵食にペナルティを与え、平面の縁を維持する
  • Prevent Cracking をオンにして境界エッジの削除を禁止し、未削減領域との隙間を防ぐ
  • 細長い三角形が原因の場合は Equalize Edges を上げてポリゴン分布を均一化する

❌ Problem: ポリゴンがうまく削減されない
✅ Solution:

  • 四角形以上のポリゴンを含む場合は Pre-Triangulate をオンにして三角形化してから削減する (削減対象は三角形のみ)
  • Polygons パラメータで削減候補のポリゴン群が正しく指定されているか確認する
  • 事前に Facet SOP で重複ポイントを結合しておくと削減が安定する

❌ Problem: 削減後に面が裏返る
✅ Solution:

  • Prevent Mesh Inversion をオンにして、各削減ステップで法線が反転しないか検査させる
  • Use Original Points をオンにして元のポイント座標を使い、頂点移動による破綻を抑える
  • 削減後の法線が乱れる場合は後段に Facet 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をコピーしました