【MEL】Mayaでリグの形を入れ替える方法【parent -r -s】

  • フリーリグを落としてきてアニメーションを付けてるが、リグの形が気に入らない...

  • カーブを編集するのも面倒だよなぁ...

  • 簡単にリグの形を変える方法はないのかな...

このような悩みを解決します。

mayaでアニメーションしていて、「リグの形を変えたいなー」って時がありませんか? 私はあります。 てかリグを作ってる段階から、別の形に置き換えたいー ってことは頻繁に発生します。

今回はそういった、 『リグの形を簡単に変えられるMELスクリプト』を作ってみました。

■リグの形を入れ替えるMELコマンド parent -r -s

結論は以上です。 この『parent』コマンドを使うことで、リグを入れ替えることができます。 詳しく解説していきます。

【MEL】parentコマンドを使ってリグを入れ替えるやり方

  • 形を変えたいリグ…oldRig

  • 新しいリグ…newRig

四角い形を丸の形に変えたいと思います。

手順①シェイプノードを選択できるようにする

『ウィンドウ>アウトライナ>ディスプレイ>シェイプ』のチェックを入れる。 これでリグのシェイプノードが選択できるようになりました。

手順②各ノードを選択

1番目に『newRig』のシェイプノードを選択 2番目に『oldRig』のトランスフォームノードを選択

選択する順番が大事なので、間違えないようにしてください!

手順③MELを書いて実行

ウィンドウ>一般エディタ>スクリプトエディタでスクリプトエディタを開く

スクリプトエディタのMEL画面で、『parent -r -s』と入力し、MELを実行

oldRigのトランスフォームノードの下に、newRigのシェイプノードが来たら成功です。

最後にいらなくなった『oldRig』のシェイプノード、『newRig』のトランスフォームノードを削除すれば、リグの入れ替えは完了です。 簡単ですね!

【MELの解説】parentコマンドとは

■parentコマンド parentコマンドとは、ノードに親子関係を付けるMELです。 『編集>ペアレント』で実行されるアレです。 普段は何気なくPキーでやっちゃってますね。

このペアレントって操作に機能を追加したのが、『parent -r -s』ってことです。

【relativeとshape】フラグの説明

  • -r,-relativeフラグ…オブジェクトと相対キョリを保つ

  • -s,-shapeフラグ…シェイプノードをペアレント化できる

-rとは『relative』の略で、日本語に訳すと『相対的』です。 このフラグを立てることで、シェイプノードをペアレント化した時、親と同じ場所(相対キョリが0)に来てくれます。 relativeフラグを立てないとワールド空間でペアレント化されちゃうので、シェイプノードが親の場所に来てくれません。 シェイプノードを親と同じ場所に持ってきたかったら、relativeのフラグを立てましょう。

-sとは『shape』の略で、シェイプノードをペアレント化したいときは、このフラグを立てないとペアレント化できません。

つまり、 新しいリグ(シェイプノード)と古いリグを、同じ場所で入れ替えたい ってなると、 parentコマンドにshapeとrelativeのフラグを立てて実行すればよい ってことになります。

それをMELで書くと、、、 『parent -r -s』 ってことです。

面倒なのでMELを作った【ソース公開中】

上のやり方でリグを入れ替えることは出来ますが、入れ替えたいリグがたくさんある場合だと、かなり手間です。 面倒なことはスクリプトにまかせましょう。 ※使用は自己責任でお願いします。

mayaでシェイプを入れ替えるMEL

//シェイプを入れ替えるMEL
proc KK_ChangeShape(){
     $selObj = `ls -sl`;
     $selShp = `listRelatives -f -typ nurbsCurve`;//シェイプノードを取得

     parent -r -s $selShp[0] $selObj[1];
    //---不要なトランスフォームノードとシェイプノードを削除--//
     delete $selObj[0];
     delete $selShp[1];
}
KK_ChangeShape()

シェイプ入れ替えツールの使用方法

■シェイプ入れ替えツールの使い方

  1. 使いたいシェイプノードを選択

  2. 入れ替えたいオブジェクトのトランスフォームノードを選択

  3. MELスクリプトを実行

  4. シェイプが入れ替わります。

シェイプ入れ替えツールの注意点

リグを入れ替えても、シェイプノードの名前は変わらないので注意してください。 現場によってはシェイプノードの名前にも、命名規則があったりするので、気になる人は各々でリネームしてください。 まぁ、最初からリネーム機能も実装しとけよって話ですが... この辺の機能は随時追加予定です...

まとめ:【parent -r -s】でシェイプを入れ替えよう

parent -r -s

このMELコマンドさえ覚えてたら、上記のスクリプトが無くてもシェイプを統合することは可能です。 汎用性の高いMELコマンドなので、覚えておいて損はないと思います。 ぜひ活用してください!

← ブログへ戻る