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

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

LOD SOP のレベルオブディテール機能を示す図

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

概要 📖 – カメラ距離で詳細度を変える

LOD SOPは、カメラからの距離に応じてジオメトリの詳細度を自動的に切り替える SOPです。ジオメトリ自体は変更せず、距離に応じた複数の詳細レベルをキャッシュとして保持し、遠景では軽量メッシュで描画して描画負荷を下げます。

主な用途 🎯

  • 遠景オブジェクトの自動軽量化 (カメラから離れたモデルを低ポリゴンで描画)
  • 大規模シーンの描画負荷削減 (建築・都市規模ビジュアライゼーション)
  • VR・インタラクティブ作品のフレームレート維持
  • カメラ移動に追随した連続的な詳細度遷移
  • Rest Geometry 入力を活用した高品質ポリゴン削減

データフロー 🔄

入力 0: 元ジオメトリ SOP

入力 1 (任意): リダクション用 Rest Geometry

LOD キャッシュ構築 (Step % / Minimum % で複数詳細レベル生成)

カメラ距離に応じた詳細レベル選択

出力: 距離に対応した詳細度のジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

詳細度の階段設定 📐

Step % .steppercent 📊
Step % (詳細度ステップ %) — 1 段階下の詳細レベルに移るときに残すポリゴン数の割合
– 例: 50 なら 1 段階ごとにポリゴン数が約半分になり、複数段のキャッシュが構築される
– 小さくするほど詳細度の落差が大きく、各段階のメッシュ品質差が目立ちやすくなる

Minimum % .minpercent 📉
Minimum % (最小ポリゴン割合) — どれだけ遠ざかってもポリゴン数がこの割合を下回らないようにする下限値
– 例: 5 なら元ジオメトリの 5% 未満には削減されない
– 大きくし過ぎると遠景でも負荷が下がらず、小さくし過ぎると遠景でシルエットが破綻する

カメラ距離設定 📏

Dist. Threshhold .distance 📷
Dist. Threshhold (距離しきい値) — カメラからこの距離以内では元のフル詳細メッシュで描画される
– しきい値を越えた距離からは Step % に従って詳細度が段階的に下がる
– シーンのワールドスケールに合わせて調整する (例: 建築シーンで 1050 など)

リダクション品質 🎚️

Stiffen Border .borderweight 🧱
Stiffen Border (境界の硬さ) — ジオメトリの外周 (境界) ポリゴンが削減で崩れにくくなる重み
– 値を大きくするほど境界形状が保持され、シルエットの破綻を防ぎやすい
– 開いたメッシュ (穴あき形状や板状) で特に効果がある

Equalize Edges .lengthweight 📐
Equalize Edges (辺の均等化) — ポリゴンサイズの偏りを抑え、均等な大きさの三角形を優先する重み
– 値を大きくするほど見た目が均一になるが、細部ディテールは丸まりやすくなる

描画オプション 🎨

Pre-Triangulate .triangulate 🔺
Pre-Triangulate (事前三角形化) — ポリゴン削減は三角形のみが対象となるため、入力を事前に三角形化する
– 四角ポリゴンや多角形を含むモデルに LOD を効かせたい場合はオンにする

Optimize Rendering .tstrips
Optimize Rendering (描画最適化) — 描画時に三角形ストリップ (triangle strips) を生成して GPU 描画を最適化する
– 単純なメッシュではオンにすると描画速度が向上する

Only Affect Polygons .polysonly 🔷
Only Affect Polygons (ポリゴンのみ適用) — オンにするとモデルのうちポリゴン部分のみが低詳細度で表示される
– オフにすると NURBS や Bezier などのサーフェスを含む全タイプがカメラ距離の影響を受ける


実践アイデア 💡

Example 1: 遠景の自動軽量化 🏙️

File In SOP (高ポリゴン建築モデル) → LOD SOP (Dist. Threshhold=30, Step %=50, Minimum %=10) → Geometry COMP → Render TOP

大規模な建築モデルをそのまま描画すると遠景でも全ポリゴンを処理してしまうため、LOD SOP を間に挟んでカメラ距離に応じてポリゴン数を段階的に減らし、遠景の負荷を抑える基本構成。

  1. 高ポリゴンの建築モデルを File In SOP または Alembic SOP で読み込む
  2. 後段に LOD SOP を接続し Dist. Threshhold をシーンスケールに合わせて設定 (例: 30)
  3. Step %50Minimum %10 に設定して詳細度の階段を定義
  4. Pre-Triangulate をオンにして四角ポリゴンも削減対象にする
  5. Geometry COMP 経由で Render TOP に描画し、カメラを引いた際にポリゴン数が減ることを Info CHOP の num_prims で確認

Example 2: 高品質リダクション設定 ♻️

Sphere SOP (高解像度) → LOD SOP (Input 0) / Sphere SOP (低解像度 Rest Geometry, Input 1) → Geometry COMP

ポリゴン削減アルゴリズム自体に高品質な参照メッシュを与えたい場合は Input 1 に Rest Geometry を渡す。Input 0 のポイントは保ちつつ、Input 1 のジオメトリを基準に削減計算を行うため、形状破綻を抑えながら軽量化できる。

  1. 詳細度の高いジオメトリを Input 0 (左側) に接続
  2. 削減計算用の Rest Geometry (同じ形状の整ったメッシュ) を Input 1 (右側) に接続
  3. Stiffen Border を大きめ (例: 5) に設定して境界の崩れを抑制
  4. Equalize Edges で均一な三角形を優先するか、ディテール優先で小さめに設定するかを調整
  5. Minimum % で過度な削減を防ぐ下限を設定

Example 3: VR シーンでの負荷分散 🥽

Merge SOP (シーン内オブジェクト統合) → LOD SOP (Optimize Rendering=ON) → Geometry COMP → Camera COMP (VR) → Render TOP

両眼レンダリングで描画コストが倍になる VR シーンでは、遠くのオブジェクトを軽量化することがフレームレート維持の決め手になる。LOD SOP の Optimize Rendering をオンにして三角形ストリップでの描画も併用する。

  1. シーン内の複数オブジェクトを Merge SOP で 1 ノードに統合
  2. LOD SOP を後段に置き Optimize Rendering をオンにして GPU 描画を最適化
  3. Only Affect Polygons をオンにして NURBS など他の表面タイプは影響外にする
  4. VR 用 Camera COMP で両眼カメラを設定し Render TOP で描画

関連オペレータ 🔗

類似機能OP 🔍

  • Polyreduce SOP — 距離に関係なく直接ポリゴン数を削減する SOP
  • Convert SOP — サーフェスタイプ変換 (NURBS → ポリゴン等) で前処理として併用

組み合わせ推奨OP 🔄

  • Geometry COMP — LOD SOP の出力をレンダリングパイプラインに投入
  • Camera COMP — LOD 計算の基準となるカメラ位置を提供
  • Render TOP — LOD で軽量化されたジオメトリを最終描画
  • Info CHOPnum_points / num_prims で削減効果を数値確認

前処理・後処理SOP 🎯


Info CHOP情報 📊

LOD 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: ポリゴンが削減されない / LOD が効かない
✅ Solution:

  • Pre-Triangulate をオンにする — ポリゴン削減は三角形にしか効かないため、四角ポリゴンや多角形のままだと対象外になる
  • 入力ジオメトリにポリゴンが含まれているか確認 — NURBS / Bezier 等のサーフェスのみの場合は Only Affect Polygons オフでも詳細度は変わらない
  • Minimum % が高すぎないか確認 — 50 以上だとほぼ削減効果が見えない

❌ Problem: カメラを引いてもフレームレートが下がらない / 描画負荷が減らない
✅ Solution:

  • Dist. Threshhold がシーンのワールドスケールに対して大き過ぎないか確認 — ほとんどのカメラ位置がしきい値内に収まると LOD が発動しない
  • Optimize Rendering をオンにして三角形ストリップ描画を有効化
  • 前段に Polyreduce SOP を併用してベースのポリゴン数自体を下げる

❌ Problem: 削減後にメッシュの境界やシルエットが崩れる
✅ Solution:

  • Stiffen Border を大きめ (例: 510) に設定して境界形状の保持を優先する
  • Input 1 に整った Rest Geometry を渡してリダクション基準を安定させる
  • Equalize Edges を小さめにしてディテール保持を優先する

❌ Problem: 詳細度の切り替わりが急に見える / カクツク
✅ Solution:

  • Step % を大きめ (例: 7080) に設定して 1 段階あたりの差を小さくする
  • Minimum % を上げて遠景でもある程度の詳細度を保つ
  • シーン全体のカメラ動作速度を抑えるか、視差の少ないアングルを選ぶ

参考資料 📚

その他 🔗

公式リソース 📖

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