2020年1月20日月曜日

スクリプトを作り始める前に

MELでスクリプトを作り始めるときには、似た動作のスクリプトが既に存在していないか、とか、グローバル変数を調べてみるとか、なにかと調べたくなる事があると思います。
そんなときに、よく使っているコマンドを紹介したいと思います。




まず、コマンドの検索方法。
Mayaのヘルプから左のフレームで「テクニカルドキュメント」を展開して「MELコマンド」を開きます。


開くとMELコマンドがツラツラと羅列されたページが開きます。

この「サブストリングで検索」に3文字以上アルファベットを入れることで、入力文字を含むMELコマンドがリストアップされていくのですが、なぜか、maya2020のページでは反応しません。
2019のページでは動いているんですけどねぇ・・・。
あと、mayaのヘルプはダウンロードもできるのですが、その、ダウンロード版だと、どのバージョンのヘルプでも動かないので、Autodeskさんには、解決してほしいところです。
最近webブラウザは、セキュリティが強化されてきているので、プロトコルによってスクリプト類がうまく動かせていないんじゃないかと推測。
今のところは、2019のヘルプをブックマークして使っています。


MELコマンドの重複しないかを調べる場合は、melInfoというコマンドがあります。読み込まれているMELコマンドがリストされるので、コマンド内でsourceしているスクリプトなんかは出てこないかも。
whatIsと併せて使うと解析がはかどります。

まぁ、melInfoやwhatIsを使ったり、コマンドヘルプのサンプルコードを読んでも、余り詳しい事が分からなかったりするので、最終的には、秀丸で grep 検索するのが手っ取り早かったりします。
なので、program files の maya フォルダにはgrep用のファイルとデスクトップにショートカットを配置して、.melファイルの全検索できるようにしていますね。
全検索終わるのに10分近く掛かりますが・・・


ちょっと変わりどころでグローバル変数を調べるコマンド env なんかも良く使ったりします。
メインウィンドウ名やコンテキスト名なんかのグローバル変数が、意外と忘れてしまうのです。
似たコマンドに getenv というのも有りますが、こちらは OS の環境変数の値を調べるもので、環境変数名を知っていないと実行できないので要注意。


で、最後に、最近欲しいなと思ったのは、プラグインがどんなコマンドやノードを作るかを調べるもの。
mayaを初回起動する前に -noAutoloadPluginsを実行したり、自宅の maya がLTということもあり、ノードのコネクションを見たりしたとき、そのノードが普通に作れるのか疑問になる事があります。

プラグインマネージャを見ると、

ロードしたプラグインには i のアイコンがクリックできるようになります。これをクリックすると、プラグインの情報が表示されます。


これを全てのプラグインで調べていくのは手間がかかるので、スクリプトで調べていきます。
{
    string $plugins[]=`pluginInfo -q -ls`;
    
    for($plugin in $plugins)
    {
        print("-- "+$plugin+" ----\n");
        
        print("- nodes -\n");
        string $nodes[]=`pluginInfo -q -dn $plugin`;
        print $nodes;
        
        print("- command -\n");
        string $cmds[]=`pluginInfo -q -c $plugin`;
        print $cmds;
        
    }
    
}

プラグインマネージャで表示できるものはすべて pluginInfoで取得できるので、コマンドヘルプを一読すると良いでしょう。
これ、gmatchで必要そうなものだけを表示するスクリプトの方がはかどると思うんですが、それは、そのうち作るか。


0 件のコメント:

コメントを投稿