今、新しいプロダクションで仕事をしているのですが、そこで、他の人の書いたMelスクリプトが使えないので、ちょっと調べてみました。
もともとはLinuxのMaya8.5用のスクリプトをWinXPのMaya2010(64bit)で使おうとしたところ、使えないということでした。
スクリプトが動作しなかったのは、単にプロシージャ名の指定間違いということで、ちゃんとした名前を入力してやれば問題なく起動しました。
しかしながら、UIの問題があり、あるタブを選択すると延々とタブの切り替えをするループに入り込んでしまいます。
スクリプト自体は、条件に応じてタブの中をリフレッシュして、必要なもののみを表示するようにしてありましたが、UIだけでもかなり複雑なMelが続いており、時間もないので途中から追跡しきれず、解決できませんでした。
しかし、UIやプロシージャについて勉強していたので、割と冷静にスクリプトの流れを追っていくことができました、時間を気にすることなく調べられるのなら、2~3日かければ解読できたと思います。
我ながら力がついてきたなと思うとともに、UIとプロシージャ、変数のことを知り、そしていくつかの条件分岐とコマンドを知っていれば、知らないコマンドがいくつか出てきても、Helpで調べながら解読していくことは可能であるということにリアリティーがもてました。
こうしてみるとMelスクリプトって本当にUIに関する物が多いですね。
そしてUIを理解することは思った以上に重要だなとおもいました。
自分で作るときには、さほど関係ないのですが、熟練者が作ったスクリプトは、スクリプトが作れない人向けに作ってあることが多く、手が込んでいるUIを使っていることも多いからです。
もしUIに問題が起きたときに、自分では手に負えなくなってしまいますし、解読していくときにもUIに惑わされると本筋が見えにくくなります。
さて、結果的にはタブを選択してもループには入り込まないようにしたのですが、リフレッシュ機能を使わないようにしたので、実質そのタブの中は使えない状態です。
とりあえず他のタブに必要な機能があるので、このままで使うことになりました。
この作業をしていてUIに関してはもう少し勉強する必要があると思いました。
Tabに関するもの。
UIのリフレッシュ手順
Switchの使い方
LinuxとWindowsにおける違い
ひとつ気になったのは、Switch文ないのif文で、ある条件に
$sample*4
というふうな記述があったのですが、
同じSwitch文の中に
$sample%4
という記述がありました。
割り算なら「/」を使うはずなので、
%がどういう意味なのかわからず、文字化けなのかそれとも何か意味があるのか分かりませんでした。
ちなみに新しいプロダクションといっても、やっている仕事はなぜか以前やったことがあるものと同じだったりしますw
しかも最初の週から休日出勤!
----------------------------------------
追記:匿名の方よりコメントで「%は割ったあまりという意味です」と教えていただきました。
そうでしたか!!どこかでみたような気がしてたんですがはっきりと思い出せませんでした。
これで、かなりすっきりしました。 ありがとうございます!!
(参照:割り算の余りを求める演算式 )
%は割ったあまりという意味です。
返信削除すばやい解答ありがとうございます!!
返信削除