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

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

Skin Deform POP の骨格変形機能を示す図

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

概要 📖 – 骨格で形状を変形

Skin Deform POPは、スケルトンのボーンに割り当てられたキャプチャ属性をもとに、ジオメトリのポイントをボーンのポーズに追従させて変形させる POPです。ボーンのバインドポーズ(基準姿勢)と現在のポーズの差分からポイントごとの変形を計算し、Mode を切り替えることでポイント位置そのものや任意の属性ベクトルを対象にできます。

主な用途 🎯

  • スケルトン(骨)のポーズに追従させたキャラクターのスキニング変形
  • キャプチャ属性(ウェイト)を使ったポイント位置の変形
  • バインドポーズと現在のポーズの差分でジオメトリを動かす処理
  • 任意のベクトル属性(法線など)を変形に追従させる更新
  • モーションキャプチャ・ボーンアニメーションのリアルタイム反映

データフロー 🔄

入力: 変形対象 POP(キャプチャ属性付き)+ スケルトンの現在ポーズ

Skin Deform POP(ボーンのバインドポーズと現在ポーズの差分でポイントを変形)

出力: ポーズに追従して変形した POP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Deform Page 📋

変形対象の指定 🎛️

Mode .mode 🎚️
Mode (変形モード) — スキン変形を「何に対して」適用するかを選択
– ポイント位置そのものを変形させるモードと、入力で指定した属性(スコープ)を変形させるモードがある

Attribute Class .attrclass 🏷️
Attribute Class (属性の種類) — point 属性・vertex 属性・primitive 属性のどれを対象に動作させるかを指定
– 該当する属性クラスがある場合に POP がそのクラスへ作用する

Input Attribute ( Scope ) .inputattrscope 📥
Input Attribute ( Scope ) (入力属性 / スコープ) — Mode が「Skin Deform Attribute」のときは入力属性、「Skin Deform Attribute Scope」のときは入力属性のスコープを指定
– 変形の対象とする属性を Mode に応じて切り替える

ボーン・スケルトン参照 🦴

Bone Paths Attribute .bonepaths 🛤️
Bone Paths Attribute (ボーンパス属性名) — ボーンへのパスを格納した detail 属性の名前を指定

Bone Bind Poses Attribute .bonebindposes 🧷
Bone Bind Poses Attribute (バインドポーズ属性名) — ボーンのバインドポーズ(基準姿勢)を格納した detail 属性の名前を指定

Skeleton Root Path .skelrootpath 🌳
Skeleton Root Path (スケルトンルートのパス) — スケルトンのルート(最上位ボーン)へのパスを指定

変形挙動の制御 ⚙️

Delete Capture Attributes .delcaptattrs 🗑️
Delete Capture Attributes (キャプチャ属性の削除) — 変形後に point のキャプチャ属性(ウェイト情報)を削除する
– 下流で不要なウェイト属性を切り落としてメモリを節約したい場合に有効

Vectors Maintain Length .vlength 📏
Vectors Maintain Length (ベクトル長を維持) — 変形を適用した後も元のベクトルの長さを保持する
– 法線などの方向属性を変形に追従させつつ長さを崩したくない場合に使用

Override Automatic Attribute .overrideautoattr 🔧
Override Automatic Attribute (自動属性の上書き) — POP の入力とパラメータから自動生成される属性の種類を、手動で型・コンポーネント数を指定して上書きするかどうか
– オン時は Attribute Type / Components / Default Value が有効になる

Output Attribute Scope .outputattrscope 📤

出力する属性(コンポーネントも選択可)をメニューから選択

項目 内部名 説明
P .P ポイント位置属性
N .N 法線属性
Color .Color RGBA カラー属性
Color.rgb .Color.rgb カラー属性の RGB 成分のみ
Tex .Tex テクスチャ座標属性
PointScale .PointScale ポイントスケール属性
LineWidth .LineWidth ライン幅属性

Attribute Type .attrtype 🔢

Override Automatic Attribute オン時の出力属性データ型(デフォルトは float)

項目 内部名 説明
float .float 32-bit 浮動小数点
double .double 64-bit 浮動小数点
int .int 符号付き整数
uint .uint 符号なし整数
Color .color カラー(float)
Color (double) .dcolor カラー(double)
Direction .dir 方向ベクトル(float)
Direction (double) .ddir 方向ベクトル(double)

Components .attrnumcomps 📊

Override Automatic Attribute オン時の新規属性のコンポーネント数

項目 内部名 説明
1 .1 スカラー値
2 .2 2 次元(UV 等)
3 .3 3 次元(XYZ・RGB 等)
4 .4 4 次元(RGBA・Quaternion 等)

Default Value .attrdefaultval 🎯

Default Value .attrdefaultval 🎯
Default Value (デフォルト値) — 出力属性のコンポーネントが計算できなかった場合のデフォルト値
– Components 数に応じて attrdefaultval0 / attrdefaultval1 / attrdefaultval2 / attrdefaultval3 を指定


Common Page 🔧

Bypass .bypass 🚫

POP の処理をスキップして入力をパススルーする設定:

  • オン: 最初の入力(input1)をそのまま出力にパススルーし、POP 内部の処理を無効化
  • 用途: デバッグ時に変形効果を一時的に外して変形前と比較する際に使用

Free Extra GPU Memory .freeextragpumem 🧠

蓄積した GPU メモリの解放:

  • Free Extra GPU Memory パルス: 出力メモリが増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
  • 用途: 出力ポイント数が大きく変動した後、未使用メモリを返却して VRAM を節約

Delete Input Attributes .delinputattrs 🗑️

出力属性を分離・絞り込みするパターン:

  • Delete Input Attributes パターン: 出力に残したい属性名のパターン(例: P N Cd)を指定し、それ以外をこの POP で破棄して別ブランチへ属性を分離
  • 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化し、メモリ・帯域を節約

実践アイデア 💡

Example 1: ボーン追従の変形 🦴

Skeleton (ボーン階層) + 入力 POP (キャプチャ属性付き) → Skin Deform POP (Mode=ポイント変形) → Render TOP

あらかじめキャプチャ(ウェイト)属性を持たせたメッシュ POP を、スケルトンのボーンポーズに追従させて変形させる基本フロー。ボーンのバインドポーズと現在ポーズの差分から各ポイントの移動を計算し、ポーズが変わるたびにジオメトリが連動して動く。

  1. 変形対象の POP にボーンごとのキャプチャ属性(ウェイト)を持たせておく
  2. Skin Deform POP の Bone Paths Attribute / Bone Bind Poses Attribute にボーンパスとバインドポーズの detail 属性名を指定
  3. Skeleton Root Path でスケルトンのルートへのパスを設定
  4. Mode をポイント位置を変形するモードにして、ボーンのポーズ変化にメッシュが追従するのを確認
  5. 出力を Render TOP に渡してアニメーションを描画

Example 2: 動作捕捉を即時反映 🎯

OSC In CHOP (mocap データ) → ボーンポーズ更新 → Skin Deform POP → Geometry COMP → Render TOP

外部のモーションキャプチャから受け取った関節データでボーンのポーズを毎フレーム更新し、Skin Deform POP でメッシュをリアルタイムに変形させるインタラクティブ用途。ライブパフォーマンスでの全身トラッキング表現に向く。

  1. OSC / トラッキング機器から受け取った関節角度・位置でスケルトンのボーンポーズを毎フレーム更新
  2. Skin Deform POP の各ボーン参照属性を設定し、更新されたポーズを参照させる
  3. Vectors Maintain Length をオンにして法線などの方向属性の長さを保ったまま追従させる
  4. 出力 POP を Geometry COMP に渡してリアルタイムで描画

Example 3: 法線をスキン変形に追従 🧭

入力 POP → Skin Deform POP (Mode=属性変形, Input/Output Attribute=N) → Normalize POP → Render TOP

ポイント位置だけでなく法線(N)属性も同じスキン変形に追従させ、ライティングが破綻しないようにする例。Override Automatic Attribute で出力属性の型・コンポーネント数を明示し、Vectors Maintain Length と組み合わせて方向属性を正しく扱う。

  1. Mode を属性を変形するモードにし、Input Attribute ( Scope )Output Attribute ( Scope ) を N(法線)に設定
  2. Vectors Maintain Length をオンにして変形後も法線の長さを維持
  3. 必要なら Override Automatic Attribute をオンにし Attribute Type / Components を手動指定
  4. 後段で法線を再正規化し、ライティングの破綻を防ぐ

関連オペレータ 🔗

類似機能OP 🔍

  • Skin POP — 曲線・サーフェス間にスキン(皮)を張ってサーフェスを生成(Skin Deform はボーン追従の変形)

組み合わせ推奨OP 🔄

  • Attribute POP — スキン変形に必要なキャプチャ属性・ボーン参照属性を前段で整える
  • Transform POP — スケルトンのボーンや全体ポーズを移動・回転させる
  • CHOP to POP — CHOP 由来の関節データをボーンポーズ属性として注入
  • Normalize POP — 変形後の法線属性を再正規化してライティングを安定させる

前処理・後処理POP 🎯


Info POP情報 📊

Skin Deform POPは Info CHOP / Info DAT による詳細情報取得に対応しています。

POP固有情報 ✨

  • num_verts: POP に含まれる頂点 (vertex) 数
  • num_points: POP に含まれるポイント数
  • num_prims: POP に含まれるプリミティブ数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)
  • cook_start_time: 最後のクック開始時刻 (ミリ秒)
  • cook_end_time: 最後のクック終了時刻 (ミリ秒)
  • cooked_this_frame: 現フレームでクックされたか (0 / 1)
  • warnings: 警告数
  • errors: エラー数

出力ジオメトリ情報 🧬

  • num_points: 出力 POP の総ポイント数
  • num_prims: 出力 POP の総プリミティブ数
  • num_point_attribs: 出力 POP の point 属性数(キャプチャ属性削除後の確認に有効)
  • num_vertex_attribs: 出力 POP の vertex 属性数
  • num_prim_attribs: 出力 POP の primitive 属性数

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

よくある問題と解決策 🔧

❌ Problem: ジオメトリが変形しない
✅ Solution:

  • 変形対象の POP にボーンごとのキャプチャ属性(ウェイト)が乗っているか前段のAttribute POP等で確認
  • Bone Paths Attribute / Bone Bind Poses Attribute / Skeleton Root Path が実在する属性名・パスを指しているか確認
  • Bypass がオンになっていないか確認(オンだと入力素通し)

❌ Problem: 変形が崩れる・想定外の方向に飛ぶ
✅ Solution:

  • Bone Bind Poses Attribute(基準姿勢)が変形対象を作成した時点のポーズと一致しているか確認
  • Mode がポイント位置の変形と属性スコープの変形のどちらを意図しているか再確認
  • ボーンポーズの単位(スケール・回転順)がスケルトン側と一致しているか確認

❌ Problem: 法線(N)が変形に追従せずライティングが破綻する
✅ Solution:

  • Input Attribute ( Scope ) / Output Attribute ( Scope ) に N(法線)を含めて変形対象にする
  • Vectors Maintain Length をオンにして方向属性の長さを保持
  • 後段でNormalize POPを使い法線を再正規化

❌ Problem: 出力属性の型やコンポーネント数が想定と違う
✅ Solution:

  • Override Automatic Attribute をオンにして Attribute Type / Components を手動指定
  • Default Value で計算できないコンポーネントのデフォルト値を設定
  • 不要なキャプチャ属性は Delete Capture Attributes で削除して属性構成を整理

参考資料 📚

その他 🔗

公式リソース 📖

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