ウインドウの作り方

Maya における GUI

Maya におけるウインドウやメニューなどの GUI は、 MEL スクリプトによって作られています。
ですから MEL スクリプトを使えば、 GUI のカスタマイズ・独自メニューの作成ができるようになります。

これから、 MEL コマンドや自作のプロシージャを操作するオリジナル GUI を作ってゆきましょう。
今回、作成するスクリプトは簡単ものなので、プロシージャ宣言をしません。 スクリプト エディタ で読み込むとすぐに実行できるように、 コマンドをそのまま並べて作ってゆきます。
以下のスクリプトは、スクリプト エディタ のメニュー ファイル → ソーススクリプト で読み込んで実行してください。

ウインドウの作り方

ウインドウを作成するには window コマンドを使用します。
ただし、ウインドウを実際に表示するためには、 window コマンドに -visible true をつけて実行するか、 window コマンドの後で showWindow コマンドを実行します。

スクリプトの解説

window -title "window1";
ウインドウバーに window1 というタイトルが表示されたウインドウを作成します。
ただし、この時点では画面には表示されません。
window コマンドも sphere コマンドなどと同じく、 作られたオブジェクト(ウインドウ)の名前を返します。 このスクリプトでは、返されたウインドウの名前は使っていませんが、 必要ならばアサインによって変数に代入しておいて、後で使うこともできます。
なお、-title の後ろの window1 は、 ウインドウバーのタイトルであって、ウインドウの名前ではないので注意してください。
showWindow;
window コマンドで作られたウインドウを表示します。
このコマンドを忘れるとウインドウが表示されません。

ボタンのついたウインドウ

ウインドウにボタンなどを配置してゆくには、レイアウトコマンドが必要です。
レイアウトコマンドとは、 コントロールと呼ばれるウインドウ上の部品(ボタンやスライダなど)を、 どのような方法で並べるかを決めるためのものです。
レイアウトコマンドには他にも様々な種類がありますが、 上から順番に並べてゆくだけなら、 以下のように columnLayout を使用します。

スクリプトの解説

window -title "window2";
ウインドウバーに、 window2 というタイトルが表示されたウインドウを作成します。
ただし、この時点では画面には表示されないことに注意してください。
columnLayout;
レイアウトコマンドを実行します。
このコマンドの後に配置される GUI の部品(ここでは button)は縦 1 列に並べられます。
このコマンドから showWindow までの間に必要な GUI 部品を作るコマンドを実行してゆきます。
GUI の部品をウインドウに配置してゆく時には、レイアウトコマンドが必ず必要です。
button;
ボタンを 1 つ作ります。
ここでは、ボタンを押した時に実行するコマンドを割り当てていないので、 押しても何も実行されません。
ボタン上のラベルには、何も指定されていなければ button1 などのボタンの名前が表示されます。
showWindow;
window コマンドで作られたウインドウを表示します。
このコマンドを忘れるとウインドウが表示されません。

ボタンにコマンドを割り当てる

ボタンが押された時などに、 特定のコマンドを実行させるためには -command フラグを使用します。

スクリプトの解説

window -title "window3";
ウインドウバーに、 window3 というタイトルが表示されたウインドウを作成します。
ただし、この時点では画面には表示されません。
columnLayout;
レイアウトコマンドです。
このコマンドの後に作成される GUI の部品(ここでは button)は縦 1 列に並べられます。
button -label "sphere" -command "sphere";
ボタンを 1 つ作ります。
このボタンを押すと、 -command フラグの後にある文字列(" から次の " まで)をコマンドとして実行します。 ここでは sphere コマンドが実行されて、 NURBS の球体が作られます。
-command フラグの後では MEL コマンドだけでなく、 自分で作ったプロシージャも実行できます。
また、複数のコマンドを実行することもできます。 (下の練習問題を参照してください)
-labelの後にある文字列 "sphere" がボタンの上に表示されるラベルになります。
showWindow;
window コマンドで作られたウインドウを表示します。
このコマンドを忘れるとウインドウが表示されません。

GUI の名前

MEL によって作成される GUI のウインドウ・部品には、すべて名前がついています。
上で実行したコマンドでは名前を使っていませんが、 後の章で学習する様々な GUI を作成するときには、名前が必要になります。
自分で名前をつける場合は、GUI のコマンドの一番右にその名前をつけて実行します。 たとえば、ボタンを作成するときに myButton という名前をつけたければ、 以下のように実行します。
button myButton;
名前をつけないで、GUI 関係のコマンドを実行すると Maya が名前をつけてくれます。
たとえば、以下のコマンドを 1 つづつ実行すると、 // 結果: の右に表示されているような名前がついて、ウインドウやボタンが作成されます。
window;
// 結果: window1 //
columnLayout;
// 結果: window1|columnLayout1 //
button;
// 結果: window1|columnLayout1|button1 //
showWindow;
ここで、 window1|columnLayout1 という名前は、 window1 の子として columnLayout1 が作られていることをあらわします。 逆に言うと、 columnLayout1 の親が window1 であるということになります。
(window1 と columnLayout1 の間にある | は パイプと呼ばれる記号です)
ボタンの名前は、 window1|columnLayout1|button1 なので、 window1 の子が columnLayout1columnLayout1の子が button1 であることを表します。
このように、GUI の部品の名前は、 どのウインドウの、どのレイアウト中の部品なのかということを意味しています。
GUI の名前は、基本的に違う名前をつける必要があります。
しかし、ボタンなどの GUI の部品が、異なるウインドウやレイアウトの中にあれば、 同じ名前をつけてもかまいません。
以下のコマンドでは、2 つのウインドウを作成し、 2 つのボタンに同じ名前 myButton をつけています。
window;
// 結果: window1 //
columnLayout;
// 結果: window1|columnLayout2 //
button myButton;
// 結果: window1|columnLayout2|myButton //
showWindow;
window;
// 結果: window2 //
columnLayout;
// 結果: window2|columnLayout3 //
button myButton;
// 結果: window2|columnLayout3|myButton //
showWindow;

練習

まとめ

練習課題

参考


Prev | Next
Home | Contents
Mail