2012年12月22日土曜日

[MEL]オブジェクトにアサインされたマテリアルを調べる



ひさしぶりにツールっぽいツールを作ってみた。
選択したメッシュモデルにアサインされたマテリアルの一覧を表示し、
それがどの箇所に使われているかを調べられるツール。
ページ下部からダウンロードしたファイルを解凍、フォルダ内の2つの
ファイルをMayaのスクリプトパスにコピー後、Mayaを起動すると使用できる。

【使い方】
1.任意のメッシュオブジェクトを選択(複数可)
2.Script Editorに MaterialLister(); と入力。シェルフ等に登録しても良い。

【機能】
①選択オブジェクト名ボタン。複数オブジェクトの場合は”Multi Objects”と表示。
②マテリアルリスト。選択オブジェクトにアサインされているマテリアル一覧。
③再選択ボタン。別のオブジェクトを選択した後にクリックするとリストが更新される。
④ツール終了ボタン。ウィンドウを閉じツールを終了する。




①を押すとオブジェクトが選択状態になる。


②のリスト項目をクリックすると、選択モデルの中で
 そのマテリアルがアサインされているフェースが選択状態になる。



②のリスト項目をダブルクリックすると、そのマテリアルのアトリビュートが開く。


たったこれだけの機能だが、Mayaはオブジェクト毎でのマテリアル管理が
あまり得意でないので、今のところそこそこ便利に使っている。


「MaterialLister」をダウンロード


2013/02/11 MELを更新。複数マテリアル選択に対応しました。
2013/04/10 オブジェクトにアサインされた単一マテリアルが
        選択されない不具合を修正。

2012年12月5日水曜日

[MEL]ビューポートのパネルサイズを取得する

仲間内の勉強会で出たお題への回答案。

メインビューポートパネルの縦横サイズを得る方法。

現在アクティブになっているビューポート※のサイズを表示する。



{
    //パネルレイアウトのサイズ取得
    string $panelX[];
    string $panelY[];
    int $mainX=`paneLayout -q -w viewPanes`;
    int $mainY=`paneLayout -q -h viewPanes`;



    //アクティブなパネルを取得
    string $selectPanel =`getPanel -wf`;


    //各パネルの名前とサイズを取得
    string $panelname[] = `paneLayout -q -ca viewPanes`;
    int $panelwh[] = `paneLayout -q -ps viewPanes`;


    //パネル名とパネルサイズのインデックスを揃える
    for ($i=0;$i<4;$i++)
    {
        $panelX[$i] = $mainX*$panelwh[($i*2)]/100;
        $panelY[$i] = $mainY*$panelwh[($i*2)+1]/100;


        //選択パネル名と同じなら結果を表示
        if ($panelname[$i] == $selectPanel)
        {
            print ($panelname[$i]+":X="+$panelX[$i]+",Y="+$panelY[$i]+"\n");
        }
    }
}



※アクティブなビューポートとはビューポートの外側に白枠のついた状態のもの。

 ”Render the current frame”使用時にレンダリングされるビューと同じ。



出力結果とPhotoshopで計った結果、数ドットの誤差があるような、合っているような・・・。

流用等は自己責任でお願いします。