日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年12月19日土曜日

ウインドウの作成(3): -command 「プロシージャ」の実行

ここ数回にわたり、「プロシージャ」についてみてきましたが、やっと一段落付いたので本来の話であった「ウインドウの作成」に戻ります。

「ウインドウの作成」に関する最後のエントリは、2009年12月15日の「ウインドウの作成(2): ボタン」でした。

ウインドウの作成目的は、ユーザーとのなんらかのインタラクションですが、その代表的な物としてボタンを取り上げました。


そして、「ウインドウの作成(2):ボタン」の最後に、「sphere」コマンドを実行するボタンを備えたウインドウを作成しました。
しかしながらボタンから実行できるのが特定の「コマンド」に限定されてしまうと、その恩恵をうけることはほんのわずかになってしまいます。


そこでbuttonコマンドの-commandフラグで利用できるもう一つの選択肢「プロシージャ」を利用できるよう、いままでプロシージャを調べてきました。
今回でやっと、その知識が日の目を見ます。さっそく試してみましょう。


前回の「プロシージャの保存場所」で「M:\MelOnUSB」に「testPoly.mel」というスクリプト・ファイルを保存。
Maya.envファイルに「M:\MelOnUSB」を記述した状態でMayaを起動して、いつでも「testPoly」のプロシージャが利用できる状態にします。


では、これを「ウインドウの作成(2):ボタン」で作ったスクリプトに組み込んでみます。


{
if(`window -exists name`)
deleteUI name;
window name;

columnLayout;
button -label "makeSphere" -command "testPoly";

showWindow;
}

これによりボタンをおせば、「testPoly.mel」というファイルに保存された、外部プロシージャをコマンドとして実行できるウインドウが作成されました。


----------------------------------------
次に、外部のファイルとしてではなく、スクリプト自体にプロシージャを含む場合も試してみました。


{
if(`window -exists name`)
deleteUI name;
window name;

columnLayout;
button -label "makeCube" -command "testCube";

showWindow;


global proc testCube()
{
polyCube;
}

}

今回は「makeCube」ボタンを押せば「ポリゴン・キューブ」が作成されます。

ちなみにこの例では、「global proc testCube()」を「proc testCube()」にしても同じ結果です。
これは、「「グローバル・プロシージャ」と「ローカルプロシージャ」の違い」でも書いたようにブロック内で実行しただけでは、ローカルプロシージャとしては認識されていないためと思われるので、実際の動作とは異なる可能性があります。


どちらにしても、これでいろいろなスクリプトをウインドウから、実行することが出来るようになりました。

 

0 件のコメント:

コメントを投稿