Proxy Builder
概要
Proxy Builder は、キャラクターモデルを骨単位のピースに分割し、各骨に追従するプロキシジオメトリを組み立てるツールです。 レイアウトリグやゲームエンジン向けの簡易ジオメトリ作成に使用します。
起動方法
専用のメニューか、以下のコマンドでツールを起動します。
import faketools.tools.rig.proxy_builder.ui
faketools.tools.rig.proxy_builder.ui.show_ui()

ワークフロー
想定の基本的ワークフローです。
- モデルのカッティング — メッシュをウェイト境界またはカッタープレーンで骨単位に切断
- モデルの各骨への割り当て — 各ピースを骨に割り当て、parentConstraint 付きグループを生成
- モデルのファイナライズ — 骨別グループ内のジオメトリをコンバインして最終形にする
1. モデルのカッティング

メッシュをウェイト境界またはカッタープレーンで骨単位に切断します。

ツールの
Cutタブをアクティブにします。Source Meshesにカットしたいモデルを登録します。Cut Methodで ウエイト境界でカットするか (By Weights)、カットプレーンでカットするか (By Planes) を選択します。By Weights:Source Meshesに登録しているメッシュに スキンウエイトが設定されている場合のみそのウエイトの境界でメッシュをカットします。By Planes: モデルをカットプレーン ( メッシュか NURBSサーフェース ) で切断します。カットプレーンはPlaneタブからも生成できます。
Cutボタンをクリックしてモデルをカットします。 piece_grp の下にカットされたモデルが生成されます。
※ 複製したモデルで処理を行いたい場合は、Keep Original MeshのチェックボックスをオンにしてCutを実行してください。
2. モデルの各骨への割り当て

各ピースを骨に割り当て、parentConstraint
付きグループを生成します。
目的は、問題なく各モデルがそのスケルトンに対応するようにカットされているかの確認です。

ツールの
Assignタブをアクティブにします。上部のリストにカットしたモデルをリストします。 モデルは
Piece Groupにセットされたグループから一括でLoadすることも可能です。次に、各スケルトンに対してカットしたモデルを振り分ける設定を行います。
Assign Methodから方法を選択します。By Weights:Reference Meshに設定したジオメトリのスキンウエイトの範囲からモデルを振り分けます。By Bones: 各ジオメトリと 骨(ボーンセグメント)との距離からモデルを振り分けます。
振り分ける骨を
Jointsリストに登録します。By Bonesの場合は必須です。By Weightsの場合、リストが設定されていないと skinCluster ノードから自動的に骨を決定します。Assign & Create Groupsボタンをクリックします。それぞれのモデルが各骨ごとにグループ化されます。
3. モデルのファイナライズ
骨別グループ内のジオメトリをコンバインして最終形にします。

ツールの
Finalizeタブをアクティブにします。Assignタブで生成されたグループ ( proxy_grp ) をSource Groupに設定して、Loadします。Combine Modeからその骨に該当するモデルのコンバイン方法を選択します。Single Mesh per Joint: モデルをそのままコンバインして一つのメッシュにします。Per Shader (shape parent): 同じシェーダーがアサインされているモデルのみをコンバインし、ひとつのトランスフォームの下にそれぞれ別のシェーダーのシェイプをペアレントします。- ※
Per Shader (shape parent)では、同一シェル内で複数のシェーダーがアサインされている場合はエラーとなります。
Finalizeボタンをクリックするとそれぞれコンバインされたモデルが生成されます。
Plane タブについて
Cut タブの By Planes
で使用するカッタープレーンを作成・ミラーするための補助ツールです。

Create Plane at Joint
ジョイントの位置にカッタープレーンを作成します。
プレーン名はジョイント名から自動生成されます(例:
LeftArm_cut_plane)。
各オプションを設定し、カットプレーンを作成したいジョイントを選択
( 複数可 ) して、Create Plane
を実行します。

基本設定
- Target Mesh:
サイズ自動計算の参照メッシュを選択して
Set(任意)します。 設定した後は、ON/OFFで参照するかどうかを決定します。
Plane Type
| タイプ | 説明 |
|---|---|
| NURBS | NURBS プレーンを作成 |
| Poly | ポリゴンプレーンを作成 |
※ ポリゴンの場合、一つのフェース単位で切断が発生するためできるだけ低解像度のポリゴンを採用してください。フェースが 5 より多いポリゴンはエラーとしています。
Axis
プレーンの法線方向の基準軸を選択します(X / Y / Z)。
Rotation Mode
プレーンの回転(法線方向)をどのように決定するかを選択します。
| モード | 動作 |
|---|---|
| Joint | ジョイントのワールド回転をそのまま使用 |
| Aim | Aim Target の設定に基づいて法線方向を自動計算 |
| Manual | 手動で回転値を入力 |
Aim Target(Rotation Mode が Aim の場合)
| オプション | 動作 |
|---|---|
| Auto | 子ジョイントが 1 つなら子方向、なければ親から離れる方向 |
| Parent | 親ジョイントから離れる方向(ボーン進行方向) |
| Parent > Child | 親ジョイントから子ジョイントへの方向 |
- Aim Joint: 明示的に aim 先のジョイントを指定(任意)。設定すると Aim Target の選択は無視されます。
※ 子ジョイントを検索する際に io 属性が
True のものは除外されます。
Size Scale
Target Mesh を設定した場合、レイキャストによるサイズ自動計算が行われます。Size Scale はその結果に対する倍率です。
Mirror Plane
選択中のプレーンを指定軸でミラーコピーします。ミラー後の名前は左右パターン(共有設定の
mirror_patterns)に基づいて自動生成されます。
- Mirror Axis: ミラーする軸(X / Y / Z)
- 対象のプレーンを選択して
Mirrorをクリック
設計原則
- フレームワーク非依存: Maya 標準操作のみ使用。特定のリグフレームワークの API や命名規則に依存しません
- 各ステップ間で確認可能: 各ステップの結果を確認・調整してから次のステップに進めます
- 各ステップ間は疎結合: ステップ間の依存関係を最小限にし、任意のステップから開始できます
- ツール API に依存しない紐付け: 骨とジオメトリの関係はシーン構造(命名 + parentConstraint)から読み取れます