« フリー版 Enhance:XSI が。 | トップページ | XPOP普及委員会(その2) »

2008年1月 9日 (水)

XPOP普及委員会(その1)

XPOPはXSIに自分用のポップアップメニューを作ってくれるスヴァらしいプラグインである。よく使う操作を自分でポップアップメニューにまとめ、ショートカットを作る。ショートカットを押すとマウスの位置にポップアップが現れる。選ぶと、自分で割り当てた操作が即座に実行される。ああなんてスヴァらしい。

しかし。しかし。メニューに割り当てる操作は、スクリプトに埋め込んでやらなければいけない。例えば選択中のオブジェクトを非表示にする操作をポップアップに組み込むとする。まあそんなものは h を押せばできるのだが例としてわかりやすくしてるだけですよ。 で、XPOP には XSI の操作を組み込むためのグラフィカルなインターフェースがあるわけではない。リストの中から「選択中のオブジェクトを非表示」を選んでドラッグ&ドロップする、みたいな小奇麗なインターフェースは無いのだ。

じゃあどうするか。まず選択中のオブジェクトを非表示にするスクリプトを調べなくてはならない。そのために、h を押してその操作をやってみる。するとスクリプトエディタ内に ToggleVisibility(null, null, null); という行がログされている。これが今やった操作のスクリプトである。これをコピーして、自分用の XPOP スクリプトにペーストしてやる。でもポップアップメニューの項目に ToggleVisibility(null, null, null); なんて長ったらしいものが出てきたら嫌だから Hide/Unhide みたいにわかりやすいラベル名を付ける。 こんな操作を繰り返してやっと自分用のポップアップメニューができる。つまり言い換えれば、XPOP とはポップアップメニューからスクリプトを実行するツールなのである。

で、これがめんどくさい。このスクリプトを書くのがめんどくさいのです。特に、ポップアップの順番を後から換えようとしたりすると、スクリプトを開いて、カット&ペーストで順番入れ替えて、上書きセーブして、プラグインをロードし直して・・・・なんてことやってられっかよゴルァ と激怒しているため現在プラグインを開発中。ちょっとだけラクにならないかな、という程度のものですが。

それはともかく、XPOP はとても便利なので全世界の人民が使うべきだと思うんだけど、この、「スクリプトを書く」ということに物怖じしてしまい、それだけのために使っていない人もいるのではなかろうか。そもそも外国製なので解説は英語だし、XPOP の名前だけは知っているが使い方がよくわからないので放置している、という人もいるのではなかろうか。XPOP普及委員会としては、これを思うと夜も眠れない。だからここで解説を試みる。普及委員会の使命である。

以下、XPOP のページにあるチュートリアルに沿って書きます。

1:ダウンロード&インストール

http://www.nycg.org/xpop/
http://rray.de/xsi/xpop.html
(身長が2m50センチもあるお方からの指摘でリンク修正 2009.08.26)

1) ↑このページの下の方にある xPOP20.xsiaddon をダウンロード。
2) XSI にドラッグ&ドロップするか、File > Addon > Install から選んでインストールする。

※自分の場合、XSI6 では mfc71.dll がないとXPOPが起動しませんでした。XSI5では問題なかったのに。もし同じ問題がある人は、

http://www.dlldump.com/download-dll-files_new.php/dllfiles/M/MFC71.d
ll/7.10.3077.0/download.html
 
からでも入手して、XPOP.dll と同じフォルダに入れてみて下さい。XPOP.dllは、

  C:\users\あんたのユーザ名\Softimage\XSI_6.02\Addons\xPOP20\Application\Plugins   

にあります(XSIをCドライブにインストールして、XPOP をユーザアドオンとしてインストールした場合)。あるいは C:\WINDOWS\system32 にぶち込んでおいてもいいのかもしれない。


2:プラグインスクリプトを作る

これから作るXPOPスクリプトは、自作アドオンの一部にしてしまいましょう。

1) File > Plug-in Manager を起動する

2) User Root を右クリック(※) > New > Add-on Directory を起動。
※もちろん User Root じゃなくて、ワークグループ以下でも桶です。

Createaddondir_2

するとダイアログが出るのでアドオンの名前を付ける。

Addonname_2

適当に MyPopups とかにしておきましょう。
以降、自作のポップアップは全部このアドオンの下に入れておけば整理できて良いかと。

次に、この自作アドオンに、新規のコマンドを追加します。

3) User Root 以下を開いて、今作った MyPopups を開き、
  Plug-ins を右クリック > New > Command を起動。

Createcommand_2

4) すると、ウィザードが立ち上がるので、ウィザード内の  Command Name  に   HideProPopup  とでも入力。 Coding Language は JScript にしておきましょう(※)。
  (※)別に他の言語でもいいんだろうけど、当方 JScript しか知りません。

Wizard_2

 

5) 一番下の Generate Code ボタンを押す。すると、アドオンに新規コマンドが追加されたのがわかる。また、同時にコマンドの JSファイルが勝手にウインドウで立ち上がる。

Command_2

6) そのウインドウで Save As.. を選び、Save As Unicode のチェックをオンにして上書き保存してしまう。

Unicode

こうすればスクリプト内で日本語が使えます(ただし XPOP のポップアップメニュー内には日本語は使えないようです)。

7) 一番下までスクロールして、function HideProPopup_Execute(  ) という行を見つける。
  これからここ以下を書き換えます。

Executefunction



3:スクリプトの書き換え

1) Function HideProPopup_Execute(  ) 以下を、次のように書き換える。

まあ最初はこれをそのままコピペしちゃえば良いかと。

 function HideProPopup_Execute( )
  {
        var iCmd = DisplayPop("Toggle selected (&h);Toggle &all;Show all &Objects;Show all &Polygons;---;Hide &unselected");

        switch(iCmd)
        {
            case 1: ToggleVisibility(null, null, null);
                break;
            case 2: ToggleVisibility("*", null, null);
                break;
            case 3: UnhideAll(null);
                break;
            case 4: UnhideAllPolygons();
                break;
            case 5: HideUnselected(null, null);
                break;
        }

        return true;
  }

var iCmd = DisplayPop( "うんちゃらかんちゃら" );

の部分が、ポップアップに現れる項目です。最低限の説明をすると、

・項目は ; (セミコロン)で区切ります。例えばもしうんちゃらかんちゃらの部分が  "gegege;rerere"   となっていたら、gegege と rerere という2つの項目が現れるポップアップになります。
・項目の文字の代わりに ---(ハイフン3発)を書くと、それは項目とは見なされず、区切り線になります。ポップアップで実際に区切り線が現れます。項目が多くなった時に見やすくするためです。

その下の  case1: なんたらかんたら  の部分が、実際に仕事をするスクリプトです。この場合、case1 =  つまり1つめの項目 = つまりさっきのセミコロンで区切っているセクションで書いた一番最初のやつ  がポップアップから選ばれたら、 case1: に続くなんたらかんたらの部分 = この場合 ToggleVisibility(null, null, null); を実行する、ということです。これを実行したあと、case2 を実行してしまわないように、次の行の  break; で処理を中止させています。

ひとまずこれを雛形にして、自分用に書き換えれば良いでしょう。ポップアップ項目を増やしたければ、 var iCmd = DisplayPop( "ららら;れれれ;けけけ;うふふ" ); みたいにどんどんセミコロンでつないで増やせばよいわけです。その分、case の行も増やして、それぞれに実行させたいスクリプトを書けば良いわけです。もちろんcase の行と break; の行はセットで増やしましょう。

もろもろ書き換えたら上書きセーブします。XSI を再起動するか、Plug-in Manegaer の Update All ボタンを押して、上書きセーブされたファイルを XSI に認識させます。



4:ショートカットを作る

ショートカット作らないと意味ないです。
File > Keyboard Mapping で、Custom Script Commands の中に、さっき作った HideProPopoup が入ってるので、適当なキーに割り当てましょう。

Shortcut

これでショートカットを押せばアラ便利。HideProPopup が現れます。

Popup

あとはもう、上記 2-3  からの作業を繰り返して同じアドオンの中にどんどんポップアップメニューを足していけば良いでしょう。だんだんショートカット足りなくなってくるけど。

ふー、けっこう大変だな・・・。
今日はここまでにしよう。

|

« フリー版 Enhance:XSI が。 | トップページ | XPOP普及委員会(その2) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: XPOP普及委員会(その1):

« フリー版 Enhance:XSI が。 | トップページ | XPOP普及委員会(その2) »