
概要 📖 – 腕の骨格を作って繋ぐ
Arm SOPは、腕の骨長・関節位置・エンドアフェクタからアーム形状ジオメトリを生成し、ボーン階層 (Bone COMP) / Capture SOP による変形に供する SOPです。Capture Type を Ellipses にすればボーン階層 (Bone COMP) 連携、Capture Regions にすれば Capture SOP 連携を選択でき、End Affector オブジェクトで手先位置を駆動して IK ライクな制御が可能です。
主な用途 🎯
- キャラクターリギング用の腕ジオメトリを 1 ノードで生成 (Clavicle / Humerous / Ulna / Hand)
- ボーン階層 (Bone COMP) と組み合わせて Ellipses 変形するためのデフォーメーションジオメトリ提供
- Capture SOP と組み合わせて Capture Regions 変形するためのキャプチャ領域ジオメトリ提供
- End Affector オブジェクトに腕を追従させて IK ライクな手先制御を実現
- Lengths / Transforms パラメータで骨長や関節断面を調整し、キャラクター体型を作り分け
データフロー 🔄
入力 (オプション): End Affector 用オブジェクト
↓
Arm Page (Capture Type / Arm Axis / Lengths / Transforms / End Affector の設定)
↓
出力: 5 関節区間 (Clavicle / Shoulder / Humerous / Elbow / Ulna / Wrist / Hand) を持つアーム SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Arm Page 💪
Capture Type .capttype 🎛️
変形ジオメトリの種類を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Ellipses | .ellipses |
ボーン階層と組み合わせて使用する楕円ベースの変形ジオメトリ |
| Capture Regions | .cregions |
Capture SOP と組み合わせて使用するキャプチャ領域ベースの変形ジオメトリ |
Arm Axis .axis 🧭
モデルの配置軸を切り替えるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| + X | .posx |
+X 軸に沿ってモデルを配置 |
| – X | .negx |
-X 軸に沿ってモデルを配置 |
アーム全体制御パラメータ ⚙️
Radius .bonerad ⭕
– 円形断面の半径スケールを制御するスカラーパラメータ
– 全関節 (Shoulder / Elbow / Wrist) の Transforms Z スケールに乗算される
Rotate Hand .rotatehand ✋
– 手と手首関節を End Affector オブジェクトの向きに合わせて回転させるブレンドパラメータ
– 0: 前腕に対する相対回転 / 1: End Affector と同じ向き
Auto Elbow Twist .autoelbow 🔄
– 肘関節のデフォルトねじれを自然な位置に調整するトグル
– オンにすると人体の肘可動域に近いツイストが自動適用される
Elbow Twist .elbowtwist 🔁
– 肘関節の回転角度を手動指定するスカラーパラメータ (度)
Flip Elbow .flipelbow 🔃
– 肘の代替位置解を選択するトグル
– 2 通りある肘位置の解の片方が破綻したときに切り替える
Lengths Page 📏
骨の長さ 🦴
Clavicle .clavlength 📐
– 鎖骨 (肩甲帯) の長さ
Humerous .humlength 📐
– 上腕骨 (Humerus) の長さ
Ulna .ulnalength 📐
– 尺骨 (前腕) の長さ
Hand .handlength 📐
– 手の長さ
関節の長さ 🔗
Shoulder Joint .shoulder 🦴
– 肩関節の長さ (関節区間の軸方向サイズ)
Elbow Joint .elbow 🦴
– 肘関節の長さ (関節区間の軸方向サイズ)
Wrist Joint .wrist 🦴
– 手首関節の長さ (関節区間の軸方向サイズ)
Transforms Page 📐
Shoulder 円トランスフォーム 🟠
Shoulder 1〜5 .shoulder1t 1️⃣
– 肩関節の 1〜5 番目の円の X / Z 位置と全体スケールを指定する 3 要素ベクトル (5 個並んでいる)
– 各エントリ shoulder{N}t は (X, Y(=Z位置として扱われる), Z(=スケール)) の 3 成分を持つ
Elbow 円トランスフォーム 🟡
Elbow 1〜5 .elbow1t 2️⃣
– 肘関節の 1〜5 番目の円の X / Z 位置と全体スケールを指定する 3 要素ベクトル (5 個並んでいる)
– 各エントリ elbow{N}t は (X, Y(=Z位置として扱われる), Z(=スケール)) の 3 成分を持つ
Wrist 円トランスフォーム 🟢
Wrist 1〜5 .wrist1t 3️⃣
– 手首関節の 1〜5 番目の円の X / Z 位置と全体スケールを指定する 3 要素ベクトル (5 個並んでいる)
– 各エントリ wrist{N}t は (X, Y(=Z位置として扱われる), Z(=スケール)) の 3 成分を持つ
End Affector Page 🎯
End Affector オブジェクトと変換 🖐️
Affector Object .affector 🎯
– 手先位置を駆動する End Affector オブジェクトのパス
– 未指定の場合は下記 Translate / Rotate / Scale で制御されるデフォルト Box が使用される
Translate .t ↔️
– End Affector の平行移動 (X / Y / Z)
– 詳細は Transform SOP の Transforms 解説を参照
Rotate .r 🔄
– End Affector の回転 (X / Y / Z 軸)
– 詳細は Transform SOP の Transforms 解説を参照
Scale .s 📏
– End Affector のスケール (X / Y / Z)
– 詳細は Transform SOP の Transforms 解説を参照
実践アイデア 💡
Example 1: ボーン階層で基本リグ 🦾
Arm SOP (Capture Type=Ellipses) → Bone COMP → Geometry COMP → Render TOP
Arm SOP のデフォルト設定で楕円ベースのアームジオメトリを生成し、ボーン階層 (Bone COMP) に接続してリグ階層上で変形させる最小構成。キャラクターアームの試作起点として使えます。
- Arm SOP を配置し
Capture TypeをEllipsesに設定 - Bone COMP でボーン構造を組み、肩・肘・手首の階層を作る
- Lengths Page の
Clavicle/Humerous/Ulna/Handでキャラ体型に合わせて骨長を調整 - Geometry COMP に接続し Render TOP で変形が正しく追従していることを確認
Example 2: Capture SOPでスキニング 🎨
Arm SOP (Capture Type=Capture Regions) → Capture SOP → Deform SOP → Geometry COMP
Capture Regions モードでアームジオメトリを生成し、Capture SOP に渡してスキンメッシュに対するキャプチャ領域として利用する例。Skeleton ベースよりも自由度の高いウェイト付けが可能になります。
- Arm SOP の
Capture TypeをCapture Regionsに切替 - 別の入力メッシュ (キャラクターの腕モデル) を Capture SOP の第 1 入力に、Arm SOP の出力を Capture SOP の第 2 入力に接続
- Deform SOP で Bone 階層に従った変形を適用
- Geometry COMP に接続して最終レンダリングを確認
Example 3: End Affector オブジェクトでハンド IK 駆動 ✋
Target Geometry → Arm SOP (Affector Object=Target, Rotate Hand=1) → Bone COMP → Geometry COMP
外部の Geometry COMP をターゲットオブジェクトとして Arm SOP の End Affector に指定し、ターゲットを移動するだけで腕全体が追従する IK ライクな手先制御を構築する例。
- ターゲット用の小さな Geometry COMP (例: 立方体) を配置し、シーン内で動かせる位置に置く
- Arm SOP の
Affector Objectパラメータにターゲットの COMP パスを指定 Rotate Handを1に設定し、手の向きがターゲットの向きに追従するようにする- ターゲット COMP のスケールが
(1, 1, 1)のままになっていることを確認 (スケールがかかっていると Rotate Hand が破綻) - ターゲットを動かして腕全体と手首が追従することを確認
関連オペレータ 🔗
類似機能OP 🔍
- TODO
組み合わせ推奨OP 🔄
- Capture SOP — Capture Regions モード時に Arm SOP の出力をキャプチャ領域として受ける
- Deform SOP — Bone 階層に応じてキャプチャ済みメッシュを実際に変形させる
- Bone COMP — アーム関節の Bone 階層を組み立てる
- Geometry COMP — Arm SOP の出力をレンダリングパイプラインに投入
前処理・後処理SOP 🎯
Info CHOP情報 📊
Arm 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:
Capture TypeがEllipsesになっているか確認 (ボーン階層は Ellipses モードを前提とする)- Bone 階層の親子関係が肩 → 上腕 → 前腕 → 手首の順で正しく組まれているか確認
- Lengths Page の各骨長が
0になっていないか確認 (長さ 0 では関節区間が潰れる)
❌ Problem: Rotate Hand を上げても手が思った向きに回らない
✅ Solution:
- End Affector オブジェクトの
Scaleが(1, 1, 1)のままになっているか確認 (スケールが入ると Rotate Hand が破綻する) Rotate Hand=0なら前腕基準、1なら End Affector 基準の向きになるので、中間値で補間されているかを意識する- End Affector オブジェクトの向き (Rotate パラメータ) が手のあるべき向きと一致しているか確認
❌ Problem: 肘の曲がる方向が逆 / ねじれて見える
✅ Solution:
Flip Elbowをオンにして代替の肘解に切り替えるAuto Elbow Twistをオンにして自然な肘可動を有効化、またはElbow Twistで手動角度を指定Arm Axisが+X/-Xのどちらでモデリングされているかと一致しているか確認
❌ Problem: Capture SOP に接続しても変形が反映されない
✅ Solution:
Capture TypeをCapture Regionsに切り替えてから Capture SOP に渡す- Capture SOP の入力順序が正しいか確認 (第 1 入力にスキンメッシュ、第 2 入力に Arm SOP のキャプチャ領域)
- 下流に Deform SOP を置いて Bone 階層を参照させ、実際の変形を発生させる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Arm SOP
- TouchDesigner公式ドキュメント – Capture SOP
- TouchDesigner公式ドキュメント – Transform SOP

