以前、Muscle Creatorで作ったマッスルオブジェクトのscaleに挫折して
仕方がなくMuscle Builderderで作るシンプルマッスルを張ることにしたんですが、
やっぱりどうもシンプルマッスルって使い勝手がよくなく、おまけに変形もマッスルの各コントローラーに
ペアレントしているような変形なのでかなり変だったのでやっぱり新マッスルオブジェクトの方を使いたいと。
んで調べても、シンプルマッスルのスケール方法は出てくるけど新マッスルのスケール方法が見つからなかったので
色々試してみたらうまくいったので覚書。
≪ Muscle Creatorで作ったMuscleObjectをscaleする方法 ≫
■ 共通手順 ■
1)
cMuscleCreaterノードのUser
Scaleを、親リグのスケールのどれか任意の軸をにコネクト。
※XYZが等倍スケールの場合のみ。
2)
cMuscleObjectノードのUser
Scaleを、親リグのスケールにコネクト。(XYZ)
■ 方法1 (計算ノードを使う)■
3)Hypershadeで乗算除算(Multiply Divide)ノードを作成。
4)input1に、
cMuscleCreaterノードの「Len Default」「Len Squash」「Len Stretch」を入れておく。
5)input2に、親リグのスケールX・Y・Zをコネクト
6)計算ノードのoutputを
cMuscleCreaterノードの「lenDefault」「lenSpuash」「lenStretch」にコネクト。
■ 方法2 (posesを設定しておく)■
3)muscle createrウィンドウのレスト(Rest)収縮(Squash)伸長(Stretch)のPosesをそれぞれ設定する。
※とりあえず設定さえすれば後で変更してもOKなの初期ポーズでボタン3つ押せばOK。
これで親リグをスケールしても収縮・伸長せずにマッスルオブジェクトをスケールできます。
※
maya 2009で試しただけなので以降のヴァージョンでうまくいくか知りません。
-----------------------------------------------------
方法1のデメリットは計算ノード作ったりコネクションエディタでコネクトする作業がウザイってのと、
input1には初期値を手作業で入力するため、マッスルオブジェクトによって初期値が変わるので汎用性がないって
ところですかねぇ。あと手順が多いことぐらい。
方法2
のデメリットはまだ試してませんが、一応厳密じゃなくても伸長時と収縮時にposesを設定しなきゃいけなくて漏れが出そう。
もしデフォルトのポーズでposes設定をレストも収縮も伸長も設定していけたら方法1よりこっちのが手軽かも。
マッスル作った時点でとりあえずposes設定してあとはスケールをコネクトするだけだから。試したところ、デフォルトのポーズで各posesを設定しちゃってもOKでした。
要はStartPearejtの子に各ポーズのtargetが格納されていればOK。
もっとエレガントな方法あったら教えてください。
- 関連記事
-