CG系

【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;
            //---不要なトランスフォームノードとシェイプノードを削除--//
             delete $selObj[0];
             delete $selShp;
        }
        KK_ChangeShape()
        

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

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

        1. 使いたいシェイプノードを選択
        2. 入れ替えたいオブジェクトのトランスフォームノードを選択
        3. MELスクリプトを実行
        4. シェイプが入れ替わります。

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

          リグを入れ替えても、シェイプノードの名前は変わらないので注意してください

          現場によってはシェイプノードの名前にも、命名規則があったりするので、気になる人は各々でリネームしてください。

          まぁ、最初からリネーム機能も実装しとけよって話ですが…

          この辺の機能は随時追加予定です…

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

          parent -r -s

          このMELコマンドさえ覚えてたら、上記のスクリプトが無くてもシェイプを統合することは可能です。

          汎用性の高いMELコマンドなので、覚えておいて損はないと思います。

          ぜひ活用してください!

           

          ABOUT ME
          みっつ
          CGアニメーター/リガー テクニカルアーティスト(TA)目指して精進中です 渋谷でゲーム作ってました。 6月からは品川の現場に移ります。