2010年11月10日水曜日

[MEL] SI方式の表示/非表示切り替え

ひさしぶりの更新。
 
最近ちょっとSoftimage触っていて、Hideの仕様がいいなと思ったのでMELで作ってみた。
仕様の違いはこんな感じ。

 
【Maya】

 オブジェクトを選択後、Ctrl+hで非表示。選択状態は解除される。
 HyperGraph等で再選択後、Shift+hで再表示。選択状態は維持
 特に非表示にした後、再表示するのに手間が掛かる印象。

 
【Softimage】
 表示中のオブジェクトを選択後、hで非表示。選択状態は維持
 非表示のオブジェクトを選択後、hで再表示。選択状態は維持
 選択状態が維持されるので、hを押す度に表示/非表示を切り替えられる。
 
で、作ってみたのが以下のMEL。
"h"のホットキーに登録して使う。





global proc hideSIstyle()
{
    string $hideObj[] = `ls -sl`;
    int $i = `getAttr ($hideObj[0]+".visibility")`;

    switch($i)
    {
        case 0:
        showHidden;
        break;

        case 1:
        hide;
        select -r $hideObj;

        default:
        break;
    }
}







複数選択の場合、最初に選んだモデルの表示状態に揃う。
便利かどうかは、好みの問題かもしれない。



2013/7/31
本当のSIのhideはトグルですよ、との指摘を頂いたので
一応それも作ってみた。
ただ、どうしても個別に表示を切り替える必要があるため
大量にオブジェクトを選択していると動作が重くなる…。






global proc hideSIstyle()

{
    int $tgl;
   
int $vis;
   
string $hideObj[] = `ls -sl`;
   
for ($Object in $hideObj)
    {
       
$vis = `getAttr ($Object+".visibility")`;
       
$tgl = abs($vis - 1);
        setAttr ($Object+".visibility") $tgl;
    }
    select -r $hideObj;
}



6 件のコメント:

  1. Ctrl+Shift+hで表示で良いのではないでしょうか

    返信削除
  2. [Show Last Hidden]ですね。
    僅かな挙動の違いが結構重要で・・。まぁ好みです。

    返信削除
  3. あらら、maya2012で登録すると「Syntax error」が出るのですが、これは単に僕がなにかミスをしているということなのですかね?

    返信削除
  4. ご指摘ありがとうございます。
    最近記事を修正したのですが、その際にMELの最後の"}"が消えておりました。
    修正しましたので、再度お試し下さい。

    返信削除
  5. おおー
    素早い対応ありがとうございますー
    このmelがとても役に立っております^^

    返信削除
  6. Ctrl+Shift+h は非表示になっているオブジェクトを全て表示させる。
    SI の H は マヤの Ctrl+H と Shift+H を 1キー にまとめた機能です。
    そして、選択解除しませんので、一瞬だけあるオブジェクトを隠したい時に便利です。
    Mayaの場合はも一度そのオブジェクトを探って、表示させる必要があります。 Ctrl+Shift+h だと表示させたくないオブジェクトも表示させちゃいます。
    要するに、表示のトグルボタンです。
    どっちがいいのかはワークフローによるかもしれませんが、けして同じではありません。
    使わせていただきます!

    返信削除