簡単なスクリプト

MELスクリプトとは

MEL コマンドは、ファイルに書いておくと スクリプト エディタ から読み込むことによって、 何度でも同じコマンドが実行できます。
MEL コマンドが書いてあるファイルを MELスクリプトと言います。 (スクリプトとは脚本のことです)
ファイルに書いておけば、そのファイルを消さない限り、何度でも同じ MEL スクリプトを実行できます。 後で必要に応じて書き換えてゆくことによって、違う処理を実行することもできます。
そして、後で学習する変数・制御構造などを使用することによって、 複雑な処理を行うプログラムを作ることができるようになります。
また、MEL のスクリプトは、ファイル名を変えれば同じフォルダにいくつでも作っておくことができます。

作業用のフォルダ作成

これから授業を進めてゆく時の作業用フォルダとして Z: ドライブの中に mel という名前のフォルダを作成しておきましょう。

以後の授業で作成する MEL スクリプトはすべてこの mel フォルダの中に作るようにします。

スクリプトを作ってみる

スクリプトの作り方と実行例

まず、簡単な MEL スクリプトを作る練習をしてみましょう。

  1. まず、mel フォルダの中に test.mel というファイルをテキストエディタ(gvim)によって作ります。
  2. test.mel の内容は、以下のように書いておきます。
    sphere;
    scale 1 3 1;
    
  3. ファイルを test.mel というファイル名でセーブします。
    MEL スクリプトとして保存するファイル名は、拡張子(ファイル名の末尾)を mel します。
  4. スクリプト エディタ から test.mel を読み込んで実行します。
    そのためには、以下の 2 種類の方法があります。
  5. y 軸方向にスケールがかかった球体が表示されます。
    test.mel によって表示された球体
  6. もう一度、テキストエディタによって test.mel を開いてください。
    そして、test.mel の内容を以下のように書き換えます。
    sphere;
    scale 2 1 1;
    move 3 0 0;
    
  7. 書き換えたら、test.mel をセーブしてください。
  8. 書き換えられた MEL スクリプトは、あらためて スクリプト エディタ に読み込んで実行する必要があります。
    ファイル → スクリプトのロード または ファイル → ソース スクリプト によって読み込んで実行してください。
  9. 2 個目の球体が表示されます。
    [コマンドの表示された スクリプト エディタ]

スクリプトの保存方法

スクリプト エディタ 内に表示されているコマンドを、ファイルに保存することができます。
保存しておいたファイルは、上記の方法によっていつでも実行できます。

  1. スクリプト エディタ のインプットウインドウに、以下のようなコマンドを打ち込んでください。
    [コマンドの表示された スクリプト エディタ]
  2. 打ち込んだコマンドをマウスで選択します。
    [コマンドが選択された スクリプト エディタ]
  3. スクリプト エディタ の ファイル → スクリプトの保存... によってファイルに保存します。
    ここでは、保存するファイル名を test2.mel にしておいてください。
    [ファイルダイアログ]
  4. では、保存した MEL スクリプトを読み込み直して実行してみましょう。
    (2, 3, 4) の位置に球体が表示されたでしょうか。
    [test2.mel を実行した結果]

スクリプト エディタ の メニュー

スクリプト エディタ のメニューおよび、アイコンについて一通り説明しておきましょう。

[スクリプト エディタ の ファイル メニュー]
ファイル → スクリプトのロード
スクリプト エディタ に MEL スクリプトを読み込み、インプットウインドウに表示します。
キーボードショートカットは Ctrl+o です。
ファイル → ソーススクリプト
読み込んだ MEL スクリプトを実行します。
ファイル → スクリプトの保存
スクリプト エディタ 上で選択された部分の MEL スクリプトをファイルに保存します。
キーボードショートカットは Ctrl+s です。
ファイル → スクリプトをシェルフに保存
スクリプト エディタ 上で選択された部分の MEL スクリプトを シェルフ に登録します。
マウスのドラッグ&ドロップによっても同じことが可能です。
[スクリプト エディタ の 編集 メニュー]
編集 → 元に戻す
編集した部分を取り消して、元に戻します。
ショートカットキーは Ctrl+z です。
編集 → やり直し
取り消した編集をやり直します。
ショートカットキーは Ctrl+y す。
編集 → カット
選択した部分を切り取ります。
ショートカットキーは Ctrl+x です。
編集 → コピー
選択した部分をコピーします。
ショートカットキーは Ctrl+c です。
編集 → ペースト
切り取ったりコピーした部分をカーソルの位置に貼り付けます。
ショートカットキーは Ctrl+v です。
編集 → すべてを選択
インプットウインドウに表示された MEL コマンドを全て選択状態にします。
ショートカットキーは Ctrl+a です。
編集 → 次の行に進む
カーソルを指定した行に移動します。
ショートカットキーは Ctrl+l です。
編集 → 検索して置き換え
検索した文字を別の文字に変換します。
ショートカットキーは Ctrl+f です。
編集 → 選択項目のインデント
選択された行をインデントします。
ショートカットキーは Ctrl+] です。
編集 → 選択項目のインデント解除
選択された行のインデント取り消します。
ショートカットキーは Ctrl+[ です。
編集 → ヒストリのクリア
ヒストリーウインドウをクリアします。
編集 → 入力のクリア
インプットウインドウをクリアします。
編集 → すべてのクリア
ヒストリーおよびインプットウインドウをクリアします。
[スクリプト エディタ の ヒストリ メニュー]
ヒストリ → バッチ レンダーのメッセージ
バッチ レンダー時のログを、ヒストリウインドウに表示します。
ヒストリ → すべてのコマンドのエコー
チェックしておくと、実行された MEL コマンドをすべてヒストリーウインドウに表示します。
GUI の操作によって実行された MEL コマンドがすべて表示されるようになります。
ヒストリ → エラーの行番号
チェックしておくと、 MEL スクリプトなどにエラーがあった場合、エラーのあった行番号を表示します。
MEL スクリプトのデバッグに便利なので、必ずチェックしておきましょう。
これをチェックしておくと、以下の図のようにエラーのある行数が表示されるようになります。
[エラーの行番号 で表示された行番号]
上の図では、2行目(line 2)にエラーがあるのがわかります。
エラーメッセージの プロシージャ "moove" が見つかりません というのは、 そのようなコマンド(moove)は存在しないという意味です
ヒストリ → スタックトレースの表示
チェックしておくと不明のコマンド・プロシージャなどがあった場合、エラーのトレース結果を別ウインドウに表示します。
[トレース結果]
ヒストリ → ヒストリの出力
コマンドの結果をヒストリウインドウに表示します。
サブメニューにおいて、 両方とも表示 にチェックを入れると MEL と Python の両方、 MEL のみ表示 にチェックを入れると MEL コマンドの結果のみ、 Python のみ表示 にチェックを入れると Python コマンドの結果のみを表示します。
[スクリプト エディタ の ヒストリの出力 メニュー]
ヒストリ → コマンド結果を表示しない
MEL および Python コマンドを実行した結果(// 結果:)が表示されなくなります。
ヒストリ → 情報メッセージを表示しない
コマンドを実行した結果のメッセージ・エラーメッセージ・警告メッセージ以外の、 さまざまな情報が表示されなくなります。
ヒストリ → 警告メッセージを表示しない
警告メッセージ(// 警告:)が表示されなくなります。
ヒストリ → エラーメッセージを表示しない
エラーメッセージ(// エラー:)が表示されなくなります。
ヒストリ → スタックウインドウを表示しない
スタックウインドウを表示しなくなります。
[スクリプト エディタ の コマンド メニュー]
コマンド → 新規タブ
スクリプト エディタのインプットウインドウに、新しいタブを追加します。
このメニューを選ぶと、以下のダイアログが表示されるので MEL か Python を選ぶと、 選んだ言語を入力することのできるタブが追加されます。
[スクリプト エディタ の 新規タブ]
[スクリプト エディタ の 新規タブ]
コマンド → タブ名の変更
タブの名前を変更します。
コマンド → タブの選択
現在のタブを変更します。
サブメニューの で左のタブへ、 で右のタブへ移ります。
[スクリプト エディタ の タブの選択 メニュー]
コマンド → タブの削除
現在のタブを削除します。
タブにコマンドなどの文字が記述してある場合には、 削除してよいかどうかをたずねるダイアログが表示されます。

タブが 1 つしかない場合は削除できません。
コマンド → 行番号の表示
インプットウインドウの行番号を表示します。
コマンド → クイックヘルプの表示
コマンドの簡単なヘルプを表示できるようになります。
クイックヘルプに調べたいコマンド名を入力して Enter キーを押すとフラグの一覧が表示されます。
[スクリプト エディタ の クイックヘルプ]
[スクリプト エディタ の クイックヘルプ]
コマンド → 実行
インプットウインドウに表示されている MELコマンドを実行します。
選択されている関数があれば、その関数だけが実行され、 選択されている関数がなければ、スクリプトすべてを実行します。
テンキーにある Enter キー、または Ctrl + Enter によって実行するのと同じです。
[スクリプト エディタ の ヘルプ メニュー]
ヘルプ → Maya のヘルプ
ブラウザに Maya のヘルプを表示します。
ヘルプ → MEL のヘルプ
ブラウザに MEL のヘルプを表示します。
ヘルプ → Python のヘルプ
ブラウザに Python のヘルプを表示します。
ヘルプ → 選択したコマンドのヘルプ
ブラウザに スクリプト エディタのインプットウインドウで選択されている、 コマンドのヘルプを表示します。
ヘルプ → スクリプト エディタのヘルプ
ブラウザに スクリプト エディタ のヘルプを表示します。
ヘルプ → MEL コマンドリファレンス(英語)
ブラウザに MEL コマンドリファレンスを表示します。
ヘルプ → Python コマンドリファレンス(英語)
ブラウザに Python コマンドリファレンスを表示します。
ヘルプ → ノード&アトリビュートリファレンス(英語)
ブラウザにノード&アトリビュートリファレンスを表示します。
ヘルプ → メニューの検索
Maya のメニューから探したい文字列を含むものを検索します。
[スクリプト エディタ の メニュー項目の検索]
[スクリプト エディタ の メニュー項目の検索]

ツールバー

[*]
スクリプト エディタ に MEL スクリプトを読み込み、インプットウインドウに表示します。
ファイル → スクリプトのロード と同じです。
[*]
読み込んだ MEL スクリプトを実行します。
ファイル → ソーススクリプト と同じです。
[*]
スクリプト エディタ 上で選択された部分の MEL スクリプトをファイルに保存します。
ファイル → スクリプトの保存 と同じです。
[*]
スクリプト エディタ 上で選択された部分の MEL スクリプトを シェルフ に登録します。
ファイル → スクリプトをシェルフに保存 と同じです。
[*]
ヒストリーウインドウをクリアします。
編集 → ヒストリのクリア と同じです。
[*]
インプットウインドウをクリアします。
編集 → 入力のクリア と同じです。
[*]
ヒストリーおよびインプットウインドウをクリアします。
編集 → すべてのクリア と同じです。
[*]
ヒストリウインドウのみを表示します。
[*]
インプットウインドウのみを表示します。
[*]
ヒストリウインドウ、インプットウインドウの両方を表示します。
[*]
チェックしておくと、実行された MEL コマンドをすべてヒストリーウインドウに表示します。
ヒストリ → すべてのコマンドのエコー と同じです。
[*]
チェックしておくと、 MEL スクリプトなどにエラーがあった場合、エラーのあった行番号を表示します。
ヒストリ → エラーの行番号 と同じです。
[*]
インプットウインドウに表示されている MELコマンドを実行します。
実行された MEL スクリプトはインプットウインドウに残ります。
[*]
インプットウインドウに表示されている MELコマンドを実行します。
コマンド → 実行 と同じです。
[*]
このアイコンの左にある、テキスト入力エリアに入力されている文字列を、下方向に探します。
[*]
このアイコンの左にある、テキスト入力エリアに入力されている文字列を、上方向に探します。
[*]
このアイコンの左にある、テキスト入力エリアに入力されている、行数の行に移動します。

Tips (デバッグ方法)

上でも述べておいたように、 コマンド → 行番号の表示 にはチェックを入れておいてください。
MEL スクリプトにエラーがあった場合に、どこが間違っているかを調べやすくなります。

MEL スクリプトにエラーが出た時は、以下のような手順で調べて、デバッグ(エラーを修正)してください。

  1. エラーのある行番号と、エラーの理由を調べます。
    ヒストリーウインドウに、以下のようなエラー表示が出ているはずです。
    // エラー: line 5: プロシージャ "sphera" が見つかりません。//
    この場合は 5 行目にエラーがあるのがわかります。
    プロシージャ "sphera" が見つかりません。
    と表示されているので、"sphera" という部分がおかしいのがわかります。
  2. 5 行目を調べてエラーを見つけたら、その箇所を直します。
    上の例では、sphera を正しい名前 sphere に変更すれば良いでしょう。
  3. この例では、すぐにエラーの理由がわかりました。 もし、いくらエラー表示の出ている行を調べてもエラーが見つからない場合は、 その行より上の行を順番に調べてみてください。 エラーの表示は、文法的に矛盾が見つかった行に出るので、 その行より前の部分にエラーがある場合があります。

練習

テキストエディタについて

MEL スクリプトをはじめとして、 プログラムを記述するためには、 通常テキストエディタというツールを使用します。
決してワープロソフトを使わないでください。
どちらも文章などを書くために使うことができますが、 ワープロにはプログラミングをするときに不要で有害な機能があります。 それに対して、機能の豊富なテキストエディタには、プログラミングをするために有用な機能が多く存在します。
たとえば、 Windows に標準で入っている「メモ帳」はテキストエディタです。 (ワードパッドはワープロソフトです)
最初は、「メモ帳」や、Mac OS X では「テキストエディット」、 Linux, IRIX などでは vi などの OS に標準のテキストエディタでもかまいません。 しかし、複雑で大量のプログラミングを行うようになると、 メモ帳 などのシンプルなテキストエディタでは効率が悪くなります。
自分の気に入ったテキストエディタを使ってもかまいませんが、 最低限、以下の機能を持つテキストエディタを探してください。 プログラミングの効率が上がります。

テキストエディタは種類が多いので、どれがよいかを調べるのは大変ですが、 よく使われるテキストエディタの例として、以下のものを挙げておきます。

Python について

Maya8.5 以降のバージョンでは、 MEL の他に Python というスクリプト言語を実行することができます。
Python は、Maya 以外でも実行できる汎用のスクリプト言語で、 以下のような特徴があります。

まとめ

課題

参考


Prev | Next
Home | Contents
Mail