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

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

Bone Group SOP のボーングループ分割機能を示す図

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

概要 📖 – スキニング用ボーングループの最適化

Bone Group SOPは、Capture 済みスキンメッシュのポイント別ボーン数とグループ別ボーン数を制限し、GPU スキニング向けに最適化された SOPです。Max Bones per Point で各ポイントに作用するボーン数を低重み側から切り捨て、Max Bones per Group でプリミティブグループあたりのボーン数上限を超えた場合に新しいグループへ自動分割します。

主な用途 🎯

  • 1 ポイントあたりに作用するボーン数を制限して GPU スキニングに必要な上限 (例: 4 本) に揃える
  • プリミティブグループあたりのボーン数を制限してハードウェア / シェーダ制約に合わせたサブグループへ自動分割
  • Capture SOP で生成された Capture Weight 属性をトリムし、重みの低いボーンを無視して軽量化
  • Deform SOP に渡す前段でスキンメッシュを最適化してリアルタイム描画コストを下げる
  • キャラクターリギングのスキンメッシュをサブメッシュ群に分解し、ボーン数の多いキャラを描画可能な単位へ変換

データフロー 🔄

入力: Capture 済みスキンメッシュ (Capture SOP の出力)

Bone Group SOP (Max Bones per Point / Max Bones per Group の制約適用)

出力: ボーン数を制限し、必要に応じてサブグループに分割されたスキンメッシュ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Bone Group Page 🦴

ボーン数制限 🎛️

Max Bones per Point .bonesperpoint 🎯
– 1 ポイントあたりに作用させるボーンの最大数を指定する整数パラメータ
– この上限に到達するまで、重み (Capture Weight) の低いボーンから順に無視される
– GPU スキニング (シェーダで bone 行列を uniform 渡し) ではハードウェア制約から 4 程度に制限することが多い

Max Bones per Group .bonespergroup 📦
– プリミティブグループ 1 つあたりに含めるボーンの最大数を指定する整数パラメータ
– グループ内のボーン数がこの上限を超えると、新しいプリミティブグループが自動生成される
– シェーダ / GPU の uniform スロット数や同時参照可能なボーン行列数の制約に合わせて設定する


実践アイデア 💡

Example 1: GPU スキニング向けの 4-bones-per-point 制限 🎮

Skin Mesh → Capture SOP → Bone Group SOP (Max Bones per Point=4) → Deform SOP → Geometry COMP

Capture SOP で生成されたスキンメッシュの Capture Weight 属性を Bone Group SOP に通し、1 ポイントあたりのボーン数を 4 に制限してから Deform SOP に渡す典型的な GPU スキニングパイプライン。

  1. Capture SOP でスキンメッシュにボーンと重みを割り当てる
  2. Bone Group SOP を Capture SOP の下流に接続し、Max Bones per Point4 に設定
  3. Deform SOP に接続し、Bone 階層を参照させて変形を発生させる
  4. Geometry COMP に接続して最終レンダリング、フレームレートが改善することを確認

Example 2: ボーン数の多いキャラを描画可能なサブグループに分割 🪓

Capture SOP (50+ bones) → Bone Group SOP (Max Bones per Group=24) → Deform SOP → Render TOP

全身ボーン数が多いキャラクターを描画する際、シェーダの uniform 制約 (例: 24 ボーン上限) に合わせてプリミティブグループを自動分割し、グループごとに描画コールを発行できる形へ落とし込む例。

  1. Capture SOP で 50 ボーン以上のフルボディスキンを生成
  2. Bone Group SOP の Max Bones per GroupDeform SOP 側で扱える上限 (例: 24) に設定
  3. 出力されたプリミティブグループごとに Deform SOP / Geometry COMP の描画パスを構築
  4. Render TOP で全身が正しく変形・描画されることを確認

関連オペレータ 🔗

類似機能OP 🔍

  • TODO

組み合わせ推奨OP 🔄

  • Capture SOP — Bone Group SOP の前段でスキンメッシュにボーンと Capture Weight を割り当てる
  • Deform SOP — Bone Group SOP で制限されたボーン構成に基づきメッシュを変形させる
  • Bone COMP — スキンメッシュに作用する骨格 (Bone 階層) を定義

前処理・後処理SOP 🎯


Info CHOP情報 📊

Bone Group 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: Bone Group SOP を通すと変形が崩れる / ウェイトが薄れて見える
✅ Solution:

  • Max Bones per Point が小さすぎないか確認 (重み配分が偏っているポイントで主要ボーンが切り捨てられている可能性がある)
  • 上流の Capture SOP 側で Capture Weight の正規化が走っているか確認
  • Max Bones per Point を一段階増やして変形の改善を比較

❌ Problem: プリミティブグループが想定外に多数生成される
✅ Solution:

  • Max Bones per Group の値を上げて、1 グループあたりの許容ボーン数を増やす
  • そもそも Capture SOP で割り当てているボーン総数が多すぎないかを Bone 階層側で見直す
  • 出力されたグループを Merge SOP や下流の描画パイプラインで適切に扱えているか確認

❌ Problem: GPU スキニングのパフォーマンスが期待通りに上がらない
✅ Solution:

  • Max Bones per Point をハードウェア / シェーダの実上限 (例: 4) に合わせる
  • Max Bones per Group をシェーダで利用可能なボーン uniform 数に合わせて設定
  • 下流の Deform 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をコピーしました