楽天ポイント4倍セール!セール会場へ

【Maya】スキニング後に骨を追加して調整する方法

スキニング後の骨は、既存skinClusterへAdd Influenceで追加し、ウェイトを設定するとメッシュの変形に使えます。

掲載画像やメニューは当時のもので、現行版での再現試験は行っていません。

スキニング済みメッシュへジョイント(インフルエンス)を追加する手順です。

先にシーンを別名保存し、対象メッシュのskinClusterと既存インフルエンスを確認してください。

目次

バインド時に骨が登録されないケース

バインド時にジョイントがインフルエンスに登録されないケースを示す画面。

バインド対象の選択やBind Toの設定によって、必要なジョイントがインフルエンスに含まれていない場合があります。

Closest In Hierarchyは初期ウェイトの計算方法であり、バインド対象の指定とは区別します。

バインド完了後に、登録から漏れた骨の影響力を追加したい場合の対応手順です。

スポンサーリンク

メニューから追加する手順

スキニング済みのメッシュに登録から漏れた骨の影響力をメニューから追加する操作手順を示す画面。

追加したい骨を選択し、続けて対象のメッシュオブジェクトを選択します。

Skin > Edit Influences > Add Influenceのオプションを開きます。複数のskinClusterが表示される版では、編集するクラスタを明示的に選びます。Autodesk:Edit Influences

既存の変形を変えずに追加したい場合は、Weight Lockingを有効にし、Default Weightが0であることを確認して適用します。

追加直後に既存ウェイトと変形が変わっていないことを確認します。

追加した骨はウェイト0なので、そのまま動かしても影響しません。

必要な段階でそのインフルエンスのロックを解除してウェイトを塗ります。

追加直後とウェイト調整後を分けて確認する

追加直後は、対象skinClusterのインフルエンス一覧に骨が登録され、ウェイトが0でロックされていることを確認します。

登録されていることと、実際に頂点へ影響していることは別なので、骨を動かして変形しないだけで追加失敗とは判断しません。

塗る段階で追加したインフルエンスのロックを解除し、まず必要な部位だけへウェイトを設定します。

同じポーズで追加前と追加直後を比較してから、ウェイト調整後に新しい骨を動かし、目的の部位と周囲の境界を確認してください。

Interactive正規化ではウェイト変更に伴って他の配分も調整されるため、追加した骨の値だけでなく周囲の既存ウェイトも確認します。

Remove Unused Influencesはウェイトがすべて0のインフルエンスを外すため、追加後にまだ塗っていない骨も整理対象になる点に注意してください。

間違えて追加した骨を削除することと、skinClusterからRemove Influenceで外すことは別の操作です。

Remove Influenceは影響を外してもシーン内の骨は削除せず、対象頂点のウェイトは再正規化されるため、元の配分への復元手段と考えないでください。

MELで対象skinClusterを指定する場合

次はskinClusterと追加ジョイントを名前で指定する例です。

文字列を実在する一意のノード名へ置き換え、対象メッシュとの接続と保存済みバックアップを確認してから実行します。

選択リストからの自動推定は行いません。

公式skinClusterコマンドを使用します。登録済みなら追加せず、追加する場合はウェイト0でロックしたままにします。現行Maya実機での実行は未検証です。Autodesk:skinCluster

この例は1つのジョイントを追加するもので、子ジョイントの一括追加や、対象メッシュとの接続の自動判定は行いません。

名前空間や同名ノードがあるシーンでは、一意の名前へ置き換えたうえで実行し、エラーが出たら連続実行せず対象と参照・ロック状態を確認してください。

すでに登録されている場合は何も追加せず、既存ウェイトやロックも変更しません。

追加がうまくいかない対処として、skinClusterコマンドの編集モードでmaximumInfluencesやdropoffRateを安易に変更しないでください。

公式仕様では、maximumInfluencesの編集はスキン全体、dropoffRateの編集はそのインフルエンスが影響する頂点で、調整済みウェイトを失う場合があります。

// 実際の一意のノード名に置き換える
string $addSkin = "TARGET_SKIN_CLUSTER";
string $addJoint = "TARGET_JOINT";
if (!`objExists $addSkin` || !`objExists $addJoint`)
    error "指定したノードが存在しません。";
if (`nodeType $addSkin` != "skinCluster" || `nodeType $addJoint` != "joint")
    error "skinClusterとjointを指定してください。";
string $existingInf[] = `skinCluster -q -influence $addSkin`;
int $alreadyAdded = 0;
for ($inf in $existingInf) {
    string $infLong[] = `ls -long $inf`;
    string $jointLong[] = `ls -long $addJoint`;
    if (size($infLong) == 1 && size($jointLong) == 1 && $infLong[0] == $jointLong[0])
        $alreadyAdded = 1;
}
if (!$alreadyAdded)
    skinCluster -edit -addInfluence $addJoint -weight 0 -lockWeights true $addSkin;

ウェイトを塗った後にジョイントを動かし、意図した範囲だけ変形するか確認します。

最大インフルエンス数・他のロック・正規化による再配分も確認し、問題があれば保存したシーンへ戻してください。

2026年10月26日に公式メニュー資料とコマンド仕様を再照合しましたが、このMELの構文実行・参照ノード・失敗時の状態は実機未検証です。

ほかの記事は3DCGソフトの使い方まとめからご覧いただけます。

Mayaや3DCGに関するそのほかの解説記事は、まとめページから参照できます。

1頂点に影響する骨の数の上限を変更する手順は関連記事を参照してください。

ブレンドシェイプを反転コピーする手順は関連記事を参照してください。

Mayaの記事は、ほかにもあります。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

3DCGのおすすめ書籍

3DCG用PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次