プロシージャーの作り方

プロシージャーのスクリプトを作ってみる

MEL ではC言語の関数のように、ひとまとまりのコマンドをプロシージャーとして実行できる。
プロシージャーにしておくことによって、変更点がなければファイルを読み直さなくても何回でも同じスクリプトを実行できる。
また、他のプロシージャーから呼んで使うこともできるようになる。

プロシージャーの形式

プロシージャーの中にはコマンド、プロシージャー、数式、制御構造などを必要なだけ書いてゆく。

global proc プロシージャー名(引数...)
{
	MELコマンド;
	.
	.
	.
} 

以下に MEL のプロシージャが C言語と異なる点を中心に解説する。

プロシージャーの作り方と実行例

最初に引数の無い簡単なプロシージャーを作ってみよう。

  1. まず、mel ディレクトリへ移動しておく。
    % cd mel
    % pwd
    /amt/home0/ad020000/mel
    
  2. makeSphere1.mel という名前のファイルを vi などのエディターを使って作る。
    % vi makeSphere1.mel
    ファイルの内容は、以下のように記述する。
    global proc makeSphere1()
    {
    	sphere;
    	scale 1 3 1;
    } 
    ここでプロシージャーの名前とファイル名の前半が同じ(makeSphere1)であることに注意すること。
  3. :wq によってファイルに書き込んで vi を終了。
  4. Script Editor から File → Source Script によってmakeSphere1.melを読み込む。
    前回と違って、読み込んだだけでは実行できないことに注意すること。
  5. コマンドラインまたは Script Editor から makeSphere1 と打ち込んで実行する。
  6. スケールされた球が作成される。
  7. もしエラーがでた時は makeSphere1.mel を vi を使って修正して再実行する。
    この時、もう一度 Script Editor の File → Source Script によって読み込み直さないと書き直したものが実行されないことに注意する。

上でFile → Source Script の代わりに File → Open Script によって Script Editor に表示してから Enter で実行しても良い。

Maya におけるプロシージャーの実行方法

MEL のプロシージャーはC言語の関数に相当するものだが、C言語の関数は main など他の関数から呼んで実行しないと関数内の手続きは実行されない。 それと同じで MEL のプロシージャーも Script Editor で読み込んだだけでは実行されない。
上の例を参考に説明してみよう。

  1. makeSphere1.mel が Script Editor などから MAYA に読み込まれる。
  2. Maya は makeSphere1 という名前の手続き(プロシージャー)を覚えておく。
    この時点では makeSphere1 の中に書いてあるコマンドは実行されない。
  3. Script Editor などで makeSphere1 と実行する。
  4. makeSphere1 の中のコマンド (spherescale 1 3 1) が実際に実行される。

また、プロシージャーを実行する時はC言語風に makeSphere1() と打ち込んでも実行できるが、引数が無い場合は上で説明したように makeSphere1 のように()を省略しても実行できる。
() をつけないで実行した場合は、あたかも sphere コマンドのようにコマンドとして実行できている。
つまり、プロシージャーを定義するということは自分用のコマンドを作っているということでもある。

MELスクリプト(プロシージャー)の自動読み込み

もし、よく使用するプロシージャーがある場合、Mayaを立ち上げるごとにいちいちMELスクリプトを読み込んでいたのでは面倒である。
そのような場合には、 MELスクリプトを以下のディレクトリ(フォルダー)に入れておけば File → Source Script などで読み込む必要が無い。

~/maya/scripts
Linux などの UNIX 系 OS の場合
C:\Documents and Settings\user-name\maya\scripts
Windows 2000 の場合

ただし、Maya の使用中に上記ディレクトリ(フォルダー)内のMELスクリプトの内容を書き換えた場合は、もう一度読み込む必要がある。

練習

まとめ

参考


Prev | Next
Home | Contents
abe@injapan.net