[mel] scriptEditorから覚えるmel講座 その7 ブラッシュアップ

前回のコマンドをブラッシュアップしてみます。

前回、微妙にコマンド間違えてましたスイマセン(´・ω・)

はい。そんな感じで、コントローラーをつけるコマンドができました。
出来ました・・・が、現状だと グループ化も何もされていないのでハイパーグラフがあまり美しくないというか
あまり適切な状態ではありません。

というように、今回は 動いたものを さらにブラッシュアップする というのを解説してコマンド完成!
までやりたいと思います。

まず、Group化をするときのコマンドを調べます。
はじめに作った createCluster_sample1.mel の最後の方をよーく見てみると

というのがあります。
このへんがグループ化しているコマンド っぽい 感じですね。
しかし、このままでは問題があります。
手でやった場合は ターゲットを選択してGroup とすれば良いですが
スクリプトで実行すると、ターゲットの名前がわかりません。
こんなときどうすれば良いでしょうか?

Anser
繰り返し処理の中で、Groupに入れる という処理を入れれば良い

こんな風に、手でやった手順だと スクリプトでは無理なケースがある場合は
コマンドを書く位置を替えてみたりすると、解決する場合結構あります。

↑のコマンドをよく見て、使うところを切り出します。
最初の方のselect は、ターゲットを選択しているところなので 必要無さそうです。
次に group というのがあります。
どう見てもこれが、Groupを作ってるコマンド っぽいですね。
ので、まずためしに group コマンドを Mayaで実行してみます。

// Error: Not enough objects or values. //

怒られてしまいました。
十分な値やオブジェクトがねーよ と言われてますね。

確認のため、Melコマンドリファレンスの group を確認してみます。
-em フラグを指定すると、空のグループ(オブジェクトなし)が作成されます
とあるように、空のグループを作る場合は、 -em フラグをつけてね ということです。
改めて
group -em;
を実行してみます。
できました。めでたしめでたし。

次の行で
rename |group1 "clusterGrp" ;

とあるのは、作ったGroupの名前をclusterGrpに変更しています。
が、group  のマニュアルをよーく見ると
-n 新しいグループノードに特定の名前を割り当てます
というのがあります。
ので
group -em -n "clusterGrp";
にすると、一行でかけます。
こんな風に コマンドリファレンスを見るときは一緒に そのコマンドのフラグをだーっと眺めてみると良いです。
そうすると、「あっ、これはここでいけるかも?」っていう発見ができて良い勉強になります。

Groupはできましたが、これに親子化する必要があるので、変数に名前を入れておきます。
戻り値は string - グループノード名
となっているので、普通のstringでOKです。

string $clusterGrpName = group -em -n “clusterGrp”`;

Locatorのぶんもおなじ要領でGropupを作ります。

続いて、作ったグループに、ノードを入れます。
試しに、Maya上で 作ったグループにノードを入れてみます。

parent locator7 locatorGrp;
// Result: locator7 //

こんなログが出てきました。
parent 子 親;
で親子化できることがわかりました。

これを利用して、最初のコマンドを少し直してみます。

できました。

今までの流れをまとめると

1 手で作って、スクリプトエディタのログをコピペして要らないところを消す
2 作ったコマンドを読んで、日本語で整理する
3 日本語の文章をMelに置き換えてく
  そのとき、作ったコピペmelをつかったり、分からないところをGoogle先生に聞いてみる。
4 動いたら、気になるところを直してブラッシュアップ

要点をまとめるとこんなかんじです。
私自身もだいたいこんな流れで(1はやらないことが多いですが)作業だったり勉強してます。

スクリプトを書く というのは、常に調べ物の連続です。
スクリプトエディタのログからコマンドを探し、MayaデフォルトのMelフォルダからコマンドを漁り
わからないことはひたすらググり続け、何度もエラーを出しながら自分の望む結果を出すまで頑張る。
これを繰り返すことが、スクリプト書きの第一歩なのかな~と思っています。

今回で終わらせるつもりだったのですが、長くなったので
あと1回続きます。
次回 プロシージャにまとめる + 総括

コメントを残す

メールアドレスが公開されることはありません。


*