D日記

ゲーム開発者っぽい記事とか。生活の記事とか。生きていくって大変ですね!

MENU

【MEL】既存のリグのシェイプを置き換える

こんばんわ。
皆さんはリギングが終わったあとに
コントローラーの形状をやっぱり変えたいなぁ・・・
って思ったことはありませんか?
実はこれシェイプノードを差し替えることで可能なのです( ^)o(^ )

parent コマンドの引数に -s をつけることで、シェイプノードの移植が可能です。
parent( "-r" , "-s" , <シェイプノード> , <トランスフォームノード> )

listRelatives() を使えば、トランスフォームの指定だけでペアレントできますよ。
parent( "-r" , "-s" , listRelatives( "rig_newController" ) , "rig_oldController" )


作成したツール

今回はこれらのコマンドを使って簡単なツールを作りました。
f:id:ponta565:20180910212240p:plain
下記をスクリプトエディタでコピペして実行すると利用できます。

シェイプノードを置き換える

使用動画

youtu.be

すでにアニメートしているリグのアニメーションをそのままに、リグだけ差し替えています。
「インスタンスとして置き換え」を押すことで、複数のリグを一つのシェイプで共有することもできます。

似てるけど微妙に違う標準機能

ちなみに・・・
Mayaの標準機能で、「Replace Objects」という機能がありますが、
この機能で差し替えを行うと、ノード間の接続が切れてしまうという問題がありました。

オブジェクトの置き換え(Replace Objects)オプション
knowledge.autodesk.com
リグであればいろいろなコネクションが外れて正常に動作しなくなります。
モーションが設定されているリグであれば、アニメーションノードとの接続も切れてしまいます。
ということで今回の用途には使えませんでした(´°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`)


今回はシェイプノードの差し替えのアプローチを紹介させていただきました。
リグの形状を途中で変更したい方は、どうぞご自由にご利用下さい!
終わり。