MEL入門

始めに

MEL(Maya Embedded Language) とは Maya で使用できるスクリプト言語です。
MEL によって Maya の機能のコントロール、カスタマイズや拡張などを自由におこなうことができます。 たとえば、Maya の GUI はほとんど MEL によって作られていて、 ユーザーが使いやすいようにメニューを追加したり、レイアウトを変更することができます。

Maya では、 GUI のメニューから何かの機能にアクセスした場合も、 その裏でその機能に対応する MEL のコマンドが実行されています。
つまり Maya を操作するということは、 MEL を実行するということに等しいわけです。 そして Maya でできることの多くが、 MEL によってできるようになっています。
しかし、GUI からでも基本的なことは実行できるのに、さらに MEL スクリプト(MEL によるプログラム)を作れるようになると何が便利になるのでしょうか。

Mayaプログラミング で勉強すること

ここでは、主に Maya のモデリング・アニメーションなどを MELスクリプトを使用して行ない、MEL スクリプトの作り方を練習していきます。

ここに掲載してあるサンプルプログラムは、あくまでも MEL を学習するためのものなので、 なるべくシンプルな形で作成されています。 実用的なプログラムにするためには、複数のプログラムを組み合わせたり、 エラー処理・ユーザーインターフェース(GUI)などを 追加しなければならないかもしれません。 ここには、そのために必要な最低限の知識が載っているはずなので、 余裕のある人はチャレンジしてみてください。

MEL の概略

MEL は、コマンドと呼ばれる命令によって構成されています。
コマンドの数は 1000 以上あり非常に種類が多いのですが、もちろん最初から全部覚える必要はありません。 最初は基本的なものから覚えてゆき、後はヘルプなどを参照しながら MEL スクリプト作ってゆけば良いのです。

MEL コマンドの種類は、以下の通りです。

シーンコマンド
シーンと、その環境を操作するために使われます。 最も種類が多いコマンドです。
アドミニストレーションコマンド
ファイル入出力、OSへのアクセスなど。
ユーザーインターフェースコマンド
GUI をつくります。
関数
配列、カーブ、数学関数、乱数、色変換など。

MEL の文法は、C 言語と UNIX のシェルスクリプトを組合せて、 少しだけ C++ 言語の文法を足したようなものになっています。

コマンドラインからの実行

MEL コマンドを実行するためには様々な方法がありますが、まずは簡単な方法からやってみましょう。
最初に、 Maya メインウインドウの左下にある、 コマンドラインにコマンドを入力する方法で MEL コマンドを実行してみます。
[コマンドラインの場所]
なお、以下において Enter キーはキーボードの右端にあるテンキーのものを使うと、いちいちフォーカスをコマンドラインにあわせる必要が無いので便利です。

  1. コマンドラインをマウスによってフォーカスし、カーソルが出ている状態にしてください。
    [コマンドラインにカーソルが出ている状態]
  2. コマンドラインに
    sphere
    と打ち込んで最後に Enter キーを押してください。
    [コマンドラインに打ち込んだ sphere コマンド]
  3. すると、半径1の NURBS の球体がシーンに現れます。
    [sphere コマンドの実行結果]

次に今作った球体を、MEL コマンドを使って移動してみましょう。

  1. コマンドラインに
    move 3 0 0
    と打ち込んで Enter キーを押してください。
  2. すると、球体が(3, 0, 0)の位置に移動します。
    [move コマンドの実行結果]
  3. 次に、コマンドラインから
    move 0 0 3
    と打ち込み Enter キーを押しましょう。
  4. 今度は、球体が(0, 0, 3)の位置に移動しました。
    [move コマンドの実行結果]

作られたオブジェクトを回転するには rotate コマンド、 拡大・縮小には scale コマンドを使います。

  1. コマンドラインから rotate 0 45 0 と打ち込み、Enter キーを押します。
  2. 球体がオブジェクト空間で Y 軸方向に 45 度回転したはずです。
    [rotate コマンドの実行結果]
  3. 次に、コマンドラインから scale 1 2 1 と打ち込んで、Enter キーを押します。
  4. 今度は、球体が Y 軸方向にスケールされます。
    [scael コマンドの実行結果]

今、実行してきたコマンドは通常 GUI のメニューや、 チャンネルボックス・アトリビュートエディタなどで実行したり、 マニピュレータをマウスで操作することによって 数値の設定を行っていますが、MEL コマンドで同様なことが行なえるのがわかったと思います。

Tips

コマンドラインのフォーカスは、テンキーの Enter キーを使わないとはずれてしまいます。
普通の Enter キーでもフォーカスがはずれないようにするには、以下の設定を行います。

  1. ウィンドウ → 設定/プリファレンス → プリファレンス で プリファレンス ウインドウを表示します。
  2. インターフェース 中の コマンドライン の フォーカスの保持 にチェックを入れます。

練習

スクリプトエディタによるコマンドの実行

MEL を実行するもう 1 つの方法として、スクリプトエディタ(Script Editor)があります。
MEL スクリプトを作成・実行するときには最も良く使われます。
スクリプトエディタ には、以下のような利点があります。

スクリプトエディタ におけるコマンドの実行例

  1. メインウインドウのメニューバーから ウィンドウ → 一般エディタ → スクリプト エディタ によって スクリプトエディター を表示します。
    または、メインウインドウの右下にあるスクリプトエディタアイコン [スクリプトエディタ アイコン] をクリックすることによっても表示できます。
    [スクリプトエディタ ウインドウ]
    メニューの下のアイコン部分をツールバー、 2 つに分かれているウインドウの上のウインドウをヒストリウインドウ、 下のウインドウをインプットウインドウと呼びます。
    ヒストリウインドウ
    実行された MEL コマンドと、その実行結果を表示します。 エラーがあった場合にはエラーの内容などが表示されます。
    インプットウインドウ
    実行したい MEL コマンドを入力・編集するためのウインドウです。
    左に表示されている 1 という数字はコマンドの行番号を表します。
  2. スクリプトエディターのインプットウインドウにコマンドを入力します。
    ここでは sphere と入力してみてください。
    [スクリプトエディタ に sphere コマンドを入力]
  3. 入力したコマンドは、以下のいずれかの方法で実行します。 実行すると、図のようにヒストリウインドウに表示されるはずです。
    [スクリプトエディタ で sphere コマンドを実行]
    ヒストリウインドウの // 結果: の右に、 作られた球体のノード名 nurbsSphere1, makeNurbsSphere1 が表示されていることに注意してください。 このように MEL コマンドを実行すると // 結果: // の間にコマンドが返してくる文字列・数値などが表示されます。
  4. 半径 1 の NURBS の球体がシーンに現れます。

スクリプトエディタの、メニューとツールバーについての解説は次回におこないます。

フラグ

多くの MEL コマンドでは、フラグを使うことができます。
フラグとは、MEL コマンドのデフォールトの動作を変更するためのものです。
たとえば、move コマンドには -r というフラグがあります。 このフラグを、move コマンドにつけて実行すると結果が変わります。
具体的な例を実行してみましょう。

このように、フラグは - (ハイフン)に フラグ名 をつけたものを、 MEL コマンドの右に追加して使用します。
また、フラグ名には長い名前と短い名前があります。
上の例では、-r が短い名前のフラグ名で、 同じフラグの長い名前として -relative があります。 どちらを使っても動作は同じですが、 よく使うフラグは短い名前、 あまり使わないフラグはなるべく長い名前を使うとよいでしょう。
MEL コマンドにどのようなフラグがあるかは、 Maya のヘルプまたは、 MEL コマンドリファレンス を参照してください。

Tips

スクリプトエディタ のインプットウインドウにコマンドを入力して実行する時に、 実行するコマンドをマウス左ボタンで選択しておくと、 実行した後もインプットウインドウにコマンドが残ったままになるので、 同じコマンドを連続して実行したい時に便利です。
また、コマンドを選択しないで、 [*] ボタンによって実行してもコマンドがインプットウインドウに残ったままになります。

練習

シェルフへのコマンドの登録

スクリプトエディタ の ヒストリウインドウ・インプットウインドウ に表示されているコマンドは、 シェルフに登録しておいて後で実行することができます。
同じコマンドを、何度も実行する必要がある場合に便利です。
また、シェルフに登録しておいたコマンドを スクリプトエディタ にコピーすることも可能です。

シェルフへの登録例

スクリプトエディタ に表示されているコマンドを、シェルフに登録してみましょう。

  1. スクリプトエディタ のヒストリウインドウ、 またはインプットウインドウに表示されているコマンドで、 シェルフに登録したいコマンドをマウス左ボタンで選択します。
    [選択されたコマンド]
  2. 選択された部分の上で、マウスの中ボタンをクリックし、ドラッグ&ドロップでシェルフまで移動します。
    [ドラッグ&ドロップの図]
  3. シェルフに新しいアイコンが作られます。
    [新しく作られたアイコン]
  4. そのアイコンをクリックすると、登録したコマンドが実行されます。

逆に、シェルフに登録したコマンドを スクリプトエディタ にコピーしたい場合は、 コピーしたいシェルフのアイコン上でマウス中ボタンをクリックし、 ドラッグ&ドロップで スクリプトエディタ のインプットウインドウへ移動します。
[シェルフから スクリプトエディタ へのコピー]

また、不要になったシェルフのアイコンは、シェルフの右にあるゴミ箱アイコン [シェルフのゴミ箱アイコン] に、マウス中ボタンでドラッグ&ドロップすれば消去することができます。

Tips

マウス左ボタンで、スクリプトエディタ 内のコマンドを選択する場合に、 以下の方法を知っておくと効率良く選択することができます。

まとめ

参考


Next
Home | Contents
Mail