MELではC言語の関数のように、ひとまとまりのコマンドをプロシージャーとして実行できる。
プロシージャーにしておくことによって、変更点がなければファイルを読み直さなくても何回でも同じスクリプトを実行できる。
また、他のプロシージャーから呼んで使うこともできるようになる。
プロシージャーの中にはコマンド、プロシージャー、数式、制御構造などを必要なだけ書いてゆく。
global proc プロシージャー名(引数...)
{
コマンドなど;
.
.
.
}
以下にC言語と異なる点を中心に解説する。
最初に引数の無い簡単なプロシージャーを作ってみよう。
% cd mel % pwd Z://mel
global proc makeSphere1()
{
sphere;
scale 1 3 1;
}
ここでプロシージャーの名前とファイル名の前半が同じであることに注意すること。
上でFile → Source Script の代わりに File → Open ScriptによってScript Editorに表示してからEnterで実行しても良い。
MELのプロシージャーはC言語の関数に相当するものだが、C言語の関数はmainなど他の関数から呼んで実行しないと関数内の手続きは実行されない。
それと同じでMELのプロシージャーも Script Editor で読み込んだだけでは実行されない。
上の例を参考に説明すると、makeSphere1.melが読み込まれた時点ではsphereとscale 1 3 1というコマンドを順番に実行するmakeSphere1という名前の手続き(プロシージャー)をMayaに覚えさせるだけである。
その後、makeSphere1()と実行することによって初めてmakeSphere1の中のコマンドが実際に実行される。
また、上で説明したようにプロシージャーを実行する時はC言語風に
makeSphere1()
と打ち込んで実行できるが makeSphere1 のように()を省略しても実行できる。
() をつけないで実行した場合は、あたかもsphereのようにコマンドとして実行できている。
つまり、プロシージャーを定義するということは自分用のコマンドを作っているということでもある。
もし、よく使用するプロシージャーがある場合、Mayaを立ち上げるごとにいちいちMELスクリプトを読み込んでいたのでは面倒である。
そのような場合には、 MELスクリプトをZ://maya/scriptsに入れておけば
File → Source Script
などで読み込む必要が無い。
ただし、Mayaの使用中にZ://maya/scripts内のMELスクリプトの内容を書き換えた場合は、もう一度読み込む必要がある。