プロシージャーの作り方
プロシージャーのスクリプトを作ってみる
MELではC言語の関数のようにひとまとまりのコマンドをプロシージャーとして実行できる。
プロシージャーにしておくことによって、変更点がなければファイルを読み直さなくても何回でも同じスクリプトを実行できる。
また、他のプロシージャーから呼んで使うこともできるようになる。
プロシージャーの作り方と実行例
- まず、UNIXのコマンドラインからmakeSphere.melというファイルをviなどのエディターを使って作る。
ファイルの内容は、たとえば以下のように書いておく。
global proc makeSphere() {
sphere;
}
ここでプロシージャーの名前とファイル名が同じであることに注意。
- MAYAを立ち上げる。
- 一番上のメニューバーから Window -> General Editors -> Script Editor によって
Script Editor を表示する。
- Script Editorの File -> Source Script によってmakeSphere.melを読み込む。
- コマンドラインまたはScript EditorからmakeSphere();と打ち込んで実行する。
makeSphereでも実行できる。
- 球が作られる。
自動時にMELスクリプトを読み込む方法
いつも使うMELスクリプトをMAYAを立ち上げてからいちいち読み込むのは面倒臭い。
そのような時は、環境変数MAYA_SCRIPT_PATHにMELスクリプトの入ったディレクトリを代入しておけば良い。
ただし、プロシージャー名とファイル名 (.melの前の部分) を同じにすること。
- MAYAを起動している場合は、いったんMAYAを終了させる。
- 次のコマンドをシェルから打ち込む。
# setenv MEL_SCRIPT_PATH ~/mel
- MAYAを起動する。
- コマンドラインまたはScript EditorからmakeSphere();で実行できる。
ls コマンド
MELコマンドの中で、現在どんなオブジェクトがあるか、
存在するオブジェクトの名前を調べるために使用されるのが
lsコマンドである。
(UNIXのシェルで実行するlsコマンドと同じ名前で似たような機能があるが、もちろんこの2つは違うものである)
lsコマンドの結果はコマンドラインから実行した場合はコマンドラインの右にある表示領域、Script Editorから実行した場合はScript Editorの上のウインドウに表示される。
ls コマンドの実行例
- lsだけで実行すると全てのオブジェクト名が表示される。
- ls -slと実行すると選択されているオブジェクト名が表示される。
- ls "nurbsSphere*"と実行すると名前の前半がnurbsSphereとなっているオブジェクト名が表示される。
練習
- makeSphere.melの中を書き換えて実行してみよう。
sphere以外のプリミティブを作ったり、moveと組み合わせて複数のプリミティブを作ってみよう。
この時、Script Editorの File -> Source Script によって読み込み直さないと書き換えたものが実行されないことに注意。
- makeSphere.mel以外の名前のMELスクリプトを作ってMAYAで読み込み、実行できるかどうか確かめよう。
まとめ
- プロシージャーを定義したMELスクリプトを読み込むとプロシージャー名で実行できる。
- MELスクリプトを~/maya/scriptsにおいておけば読み込む必要が無い。
- その時、プロシージャーを使ったMELスクリプトのファイル名はプロシージャー名+.melという名前にする。
- どんな場合もMELスクリプトを書き換えた時は、読み込み直さなければ変更点が反映されない。
参考
Prev | Next
Home | Contents
abe@injapan.net