プロシージャーの作り方
プロシージャーのスクリプトを作ってみる
MEL ではC言語の関数のように、ひとまとまりのコマンドをプロシージャーとして実行できる。
プロシージャーにしておくことによって、変更点がなければファイルを読み直さなくても何回でも同じスクリプトを実行できる。
また、他のプロシージャーから呼んで使うこともできるようになる。
プロシージャーの形式
プロシージャーの中にはコマンド、プロシージャー、数式、制御構造などを必要なだけ書いてゆく。
global proc プロシージャー名(引数...)
{
MELコマンド;
.
.
.
}
以下に MEL のプロシージャが C言語と異なる点を中心に解説する。
- プロシージャー名の前に global proc が必要。
C言語のように void などとは書かない。
- 引数の書き方はC言語とほぼ同じである。
引数が無い場合はC言語のように void は必要無い。
- C言語における main() に相当するものは無い。
main() が無くても実行できる。
プロシージャーの作り方と実行例
最初に引数の無い簡単なプロシージャーを作ってみよう。
- まず、mel ディレクトリへ移動しておく。
% cd mel
% pwd
/amt/home0/ad020000/mel
- makeSphere1.mel という名前のファイルを vi などのエディターを使って作る。
% vi makeSphere1.mel
ファイルの内容は、以下のように記述する。
global proc makeSphere1()
{
sphere;
scale 1 3 1;
}
ここでプロシージャーの名前とファイル名の前半が同じ(makeSphere1)であることに注意すること。
- :wq によってファイルに書き込んで vi を終了。
- Script Editor から によってmakeSphere1.melを読み込む。
前回と違って、読み込んだだけでは実行できないことに注意すること。
- コマンドラインまたは Script Editor から makeSphere1 と打ち込んで実行する。
- スケールされた球が作成される。
- もしエラーがでた時は makeSphere1.mel を vi を使って修正して再実行する。
この時、もう一度 Script Editor の によって読み込み直さないと書き直したものが実行されないことに注意する。
上で の代わりに
によって Script Editor に表示してから Enter で実行しても良い。
Maya におけるプロシージャーの実行方法
MEL のプロシージャーはC言語の関数に相当するものだが、C言語の関数は main など他の関数から呼んで実行しないと関数内の手続きは実行されない。
それと同じで MEL のプロシージャーも Script Editor で読み込んだだけでは実行されない。
上の例を参考に説明してみよう。
- makeSphere1.mel が Script Editor などから MAYA に読み込まれる。
- Maya は makeSphere1 という名前の手続き(プロシージャー)を覚えておく。
この時点では makeSphere1 の中に書いてあるコマンドは実行されない。
- Script Editor などで makeSphere1 と実行する。
- makeSphere1 の中のコマンド
(sphereと scale 1 3 1)
が実際に実行される。
また、プロシージャーを実行する時はC言語風に
makeSphere1()
と打ち込んでも実行できるが、引数が無い場合は上で説明したように makeSphere1 のように()を省略しても実行できる。
() をつけないで実行した場合は、あたかも sphere コマンドのようにコマンドとして実行できている。
つまり、プロシージャーを定義するということは自分用のコマンドを作っているということでもある。
MELスクリプト(プロシージャー)の自動読み込み
もし、よく使用するプロシージャーがある場合、Mayaを立ち上げるごとにいちいちMELスクリプトを読み込んでいたのでは面倒である。
そのような場合には、 MELスクリプトを以下のディレクトリ(フォルダー)に入れておけば
などで読み込む必要が無い。
- ~/maya/scripts
- Linux などの UNIX 系 OS の場合
- C:\Documents and Settings\user-name\maya\scripts
- Windows 2000 の場合
ただし、Maya の使用中に上記ディレクトリ(フォルダー)内のMELスクリプトの内容を書き換えた場合は、もう一度読み込む必要がある。
練習
- makeSphere2.mel というMELスクリプトの中に makeSphere2 という名前のプロシージャーを作り、
makeSphere2 と実行すると、前回の課題のように NURBS の球が X軸上に接しながら3個並ぶようにしてみよう。
まとめ
- プロシージャーを定義した MELスクリプトを読み込むとプロシージャー名で実行できる。
- プロシージャーのある MELスクリプトのファイル名は
プロシージャー名.mel
という名前にする。
- どんな場合も MELスクリプトを書き換えた時は、Script Editor などによって読み込み直さなければ変更点が反映されない。
- ~/maya/scripts にあるMELスクリプトは自動的に読み込まれる。
参考
Prev | Next
Home | Contents
abe@injapan.net