MEL入門
始めに
MEL(Maya Embedded Language) とは Maya で使用できるスクリプト言語です。
MEL によって Maya の機能のコントロール、カスタマイズや拡張などを自由におこなうことができます。
たとえば、Maya の GUI はほとんど MEL によって作られていて、
ユーザーが使いやすいようにメニューを追加したり、レイアウトを変更することができます。
Maya では GUI のメニューから何かの機能にアクセスした場合も、その裏でその機能に対応する MEL のコマンドが実行されています。
つまり Maya を操作するということは MEL を実行するということに等しいわけです。
そして Maya でできることは MEL によってほぼ何でもできるようになっています。
しかし、GUI からでも基本的なことは実行できるのに、さらに MEL スクリプト(MEL によるプログラム)を作れるようになると何が便利になるのでしょうか。
- 複数の操作を繰り返し実行しなければならない場合、それらを MEL コマンド一つでおこなえるようになります。
- GUI をカスタマイズして自分の使いやすいインターフェースに改良することができます。
- GUI だけで作ることが難しい大量のオブジェクトのモデリング・アニメーションができるようになります。
- 数式・プログラムによる複雑なモデリング・アニメーションができます。
- GUI のメニューには無い独自の機能を追加することもできます。
- やろうと思えば GUI を使わないでモデリング・レンダリングをすることもできます。
Mayaプログラミング で勉強すること
ここでは主に Maya のモデリング・アニメーションなどを MELスクリプトを使用して行ない、MEL スクリプトの作り方を練習していきます。
- 基本的なMELコマンドを覚えて、簡単なスクリプトを書くことができるようにします。
- スクリプトを作るために必要なプログラム要素である、変数・制御構造・プロシージャなどの文法や使い方を学習します。
- 独自の GUI (グラフィック・ユーザー・インターフェース)を作る練習をします。
- MEL の応用として様々なモデリング・アニメーションのスクリプト例を作ってみます。
- MEL でパーティクルなどのダイナミクスを制御するスクリプトを作り、ダイナミクスの実験をしてみます。
ここに掲載してあるサンプルプログラムは、あくまでも MEL を学習するためのものなので、
なるべくシンプルな形で作成されています。
実用的なプログラムにするためには、複数のプログラムを組み合わせたり、
エラー処理・ユーザーインターフェース(GUI)などを
追加しなければならないかもしれません。
ここには、そのために必要な最低限の知識が載っているはずなので
余裕のある人はチャレンジしてみてください。
MELの概略
MEL はコマンドと呼ばれる命令によって構成されています。
コマンドの数は 1000 以上あり非常に種類が多いのですが、もちろん最初から全部覚える必要はありません。
最初は基本的なものから覚えてゆき、後はマニュアルなどを参照しながら MEL スクリプト作ってゆけば良いのです。
MEL コマンドの種類は以下の通りです。
- シーンコマンド (シーンとその環境を操作するために使われる。 最も種類が多い)
- アドミニストレーションコマンド (ファイル入出力、OSへのアクセスなど)
- ユーザーインターフェースコマンド (GUI をつくる)
- 関数 (配列、カーブ、数学関数、乱数、色変換など)
MEL の文法は C 言語と UNIX のシェルスクリプトを組合せて、
少しだけ C++ 言語の文法を足したようなものになっています。
コマンドラインからの実行
MEL コマンドを実行するためには様々な方法がありますが、まずは簡単な方法からやってみましょう。
最初に Maya メインウインドウの左下にあるコマンドラインにコマンドを入力する方法で MEL コマンドを実行します。
なお、以下において Enter キーはキーボードの右端にあるテンキーのものを使うと、いちいちフォーカスをコマンドラインにあわせる必要が無いので便利です。
- コマンドラインをマウスによってフォーカスし、カーソルが出ている状態にしてください。
- コマンドラインに
sphere
と打ち込んで最後に Enter キーを押してください。
- すると、半径1の NURBS の球がシーンに現れます。
次に今作られた球を、MEL コマンドを使って移動してみましょう。
- コマンドラインに
move 3 0 0
と打ち込んで Enter キーを押してください。
- すると球が(3, 0, 0)の位置に移動します。
- 次に、コマンドラインから
move 0 0 3
と打ち込み Enter キーを押しましょう。
- 今度は球が(0, 0, 3)の位置に移動しました。
作られたオブジェクトを回転、拡大・縮小するには rotate、scale コマンドを使います。
- コマンドラインから rotate 0 45 0 と打ち込み、Enter キーを押します。
- 球がローカル座標で Y 軸方向に 45 度回転したはずです。
- 次に、コマンドラインから scale 1 2 1 と打ち込んで、Enter キーを押します。
- 今度は球が Y 軸方向にスケールされます。
今、実行してきたコマンドは普段
GUI のメニューやチャンネルボックス・アトリビュートエディタなどで実行したり、
数値の設定を行ってきた操作ですが、MEL コマンドで同様なことが行なえるのがわかったと思います。
Tips
コマンドラインのフォーカスはテンキーの Enter キーを使わないとはずれてしまいますが、
で インターフェース 中の コマンドライン の フォーカスの保持 にチェックを入れておけば普通の Enter キーでもフォーカスがはずれなくなります。
練習
- 上のシーンにもう一つ NURBS の球を作って、その球も move によって適当な位置に移動し、 rotate,scale を使って回転・スケールを実行してみましょう。
自分の思ったように移動・回転・スケールができたでしょうか。
- 球以外のプリミティブも作ってみましょう。
球以外のプリミティブには、例えば
cone
nurbsCube
cylinder
polyTorus
などがあります。
これらのコマンドをいくつか実行して、たくさんのオブジェクトを作り、
move, rotate, scale を使って好きなように並べてみましょう。
もちろん、プリミティブの種類はこれだけではありません。
興味のある人はコマンド名を調べて実行してみましょう。
(ヒント)
次に説明するスクリプトエディタを使用すると GUI から実行したコマンドを知ることができます。
スクリプトエディタによるコマンドの実行
MEL を実行するもう一つの方法としてスクリプトエディタ(Script Editor)があります。
MEL スクリプトを作成・実行するときには最も良く使われます。
スクリプトエディタ には以下のような利点があります。
- 複数のコマンドをまとめて入力することができます。
- エラーがあれば スクリプトエディタ のヒストリーウインドウに表示されます。
- GUI での操作によってどんな MEL コマンドが実行されているかわかります。
実行され MEL コマンドはヒストリーウインドウに表示されます。
- エディターで作成した MELスクリプトを読み込んで実行することができます。
スクリプトエディタ におけるコマンドの実行例
- メインウインドウのメニューバーから によって
スクリプトエディター を表示します。
または、メインウインドウの右下にあるスクリプトエディタアイコン
をクリックすることによっても表示できます。
2 つに分かれているウインドウの上のウインドウをヒストリウインドウ、
下のウインドウをインプットウインドウと呼びます。
- ヒストリウインドウ
- 実行された MEL コマンドと、その実行結果を表示します。
エラーがあった場合にはエラーの内容などが表示されます。
- インプットウインドウ
- 実行したい MEL コマンドを入力・編集するためのウインドウです。
左に表示されている 1 という数字はコマンドの行番号を表します。
- スクリプトエディターのインプットウインドウにコマンドを入力します。
ここでは sphere と入力してみてください。
- 入力したコマンドは以下のいづれかの方法で実行します。
- スクリプトエディター上のメニューバーから で実行。
- Ctrl + Enter キーを押す。
- キーボード右端の Enter キーを押す。
実行すると図のようにヒストリウインドウに表示されるはずです。
ヒストリウインドウの // 結果: の右に、
作られた球のノード名 nurbsSphere1, makeNurbsSphere1 が表示されているのに注意してください。
このように MEL コマンドを実行すると
// 結果:
と
//
の間にコマンドが返してくる文字列・数値などが表示されます。
- 半径 1 の NURBS の球がシーンに現れます。
スクリプトエディタのメニューとツールバーについての解説は次回におこないます。
Tips
スクリプトエディタ のインプットウインドウにコマンドを入力して実行する時に、
実行するコマンドをマウス左ボタンで選択しておくと、
実行した後もインプットウインドウにコマンドが残ったままになるので、
同じコマンドを連続して実行したい時に便利です。
練習
- スクリプトエディターの下のウインドウに複数のコマンドを入力して実行させてみましょう
この時、各コマンドの後ろに ; (セミコロン)をつけておいてください。
たとえば、インプットウインドウに
sphere;
move 5 0 0;
と打ち込み実行してみます。
NURBS の球が作成されて(5, 0, 0) の位置へ移動したでしょうか。
続けて、様々なプリミティブを作るコマンドと、それらを移動・回転・スケールをかけるコマンドをインプットウインドウに打ち込んで実行してみましょう。
(注意)
複数のコマンドを入力する場合は、最期の行(上の例では move 5 0 0; )の後ろの ; は省略できます。
- GUI の操作によって スクリプトエディタ のヒストリウインドウにどんなコマンドが表示されるか確かめてみましょう。
たとえば、メインウインドウのメニューから
によって
球を作ると、どんなコマンドが表示されますか?
その他のメニューもできるだけ実行してみてください。
シェルフへのコマンドの登録
スクリプトエディタ のヒストリウインドウ・インプットウインドウに表示されているコマンドはシェルフに登録しておいて後で実行することができます。
同じコマンドを何度も実行する必要がある場合には便利です。
また、シェルフに登録しておいたコマンドを スクリプトエディタ にコピーすることも可能です。
シェルフへの登録例
スクリプトエディタ に表示されている適当なコマンドをシェルフに登録してみましょう。
- スクリプトエディタ のヒストリウインドウ、またはインプットウインドウに表示されているコマンドでシェルフに登録したいコマンドをマウス左ボタンで選択します。
- 選択された部分の上部分でマウスの中ボタンをクリックし、ドラッグアンドドロップでシェルフまで移動します。
- シェルフに新しいアイコンが作られます。
- そのアイコンをクリックすると登録したコマンドが実行されます。
逆にシェルフに登録したコマンドを スクリプトエディタ にコピーしたい場合は、
コピーしたいシェルフのアイコンの上でマウス中ボタンをクリックし、
ドラッグアンドドロップで スクリプトエディタ のインプットウインドウへ移動します。
また、不要になったシェルフのアイコンはシェルフの右にあるゴミ箱アイコン
にマウス中ボタンでドラッグアンドドロップすれば消去することができます。
Tips
マウス左ボタンで スクリプトエディタ 内のコマンドを選択する場合に、
以下の方法を知っておくと効率良く選択することができます。
- ダブルクリック
単語一個分を選択
- 3 回連続クリック
一行分を選択
- 4 回連続クリック (Linuxのみ)
ウインドウ内全体を選択
まとめ
- MEL コマンドの実行方法には主に以下のものがあります。
この他にも Command Shell などの実行方法がありますが、
良く使用されるのは上の 2 つでしょう。
- スクリプトエディタ によって、 GUI による操作がどのような MEL のコマンドによって実行されているかわかります。
- スクリプトエディタ においてコマンドを複数実行する時は、コマンドの最期に ; をつけます。
- プリミティブを作るコマンドにはsphere、cone、 nurbsCube、 cylinder、nurbsplane、torus, polyTorusなどがあります。
- 移動(Translate)、回転(Rotate)、拡大・縮小(Scale)は move、rotate、scale コマンドで実行します。
参考
Next
Home | Contents
Mail