制御構造(ループ)
MELにおける繰り返しの実行
MELにおいて同じコマンドを繰り返して実行するときには、C言語と同じように
for, while, do whileなどを使用する。
- for, while, do whileの文法はC言語とほぼ同じである。
最期のfor( in )は、リストの中の要素を一つづつ変数に代入してコマンドを実行するものである。
for(初期化 ; 条件式 ; 式)
{
コマンド;
.
.
}
while(条件式)
{
コマンド;
.
.
}
do
{
コマンド;
.
.
} while(条件式);
for( 変数 in リスト )
{
コマンド;
.
.
}
- 条件式もC言語とほぼ同じものが使える。
== != < > <= >= && || ( )
ループの使用例
球を半径$radの円上に$num個並べるMELスクリプト。
- 以下のMELスクリプトをcircleSphere.melという名前で作る。
global proc circleSphere(float $rad, int $num)
{
float $x, $z;
float $r;
float $add;
float $rr = 2 * 3.1415;
$add = $rr / $num;
for($r = 0.0; $r < $rr; $r += $add)
{
$x = $rad * cos($r);
$z = $rad * sin($r);
sphere;
move $x 0.0 $z;
}
}
- MAYAを立ち上げる。
- 一番上のメニューバーから Window -> General Editors -> Script Editor によって
Script Editor を表示する。
- Script Editorの File -> Source Script によってcircleSphere.melを読み込む。
- コマンドラインからcircleSphere(5, 6);と打ち込んで実行する。
- 半径1の球が半径5の円上に6個作られる。
練習
- 前回の MELにおける変数 で作ったmake3Sphere.mel, make5Spher.melをforなどを使って作り直してみよう。
- 上のcircleSphere.melを参考にしてcircleSphere2.melというMELスクリプトを作り、球の半径も引数で変えることができるようにしてみよう。
例えばcircleSphere2(3, 5, 6);を実行すると半径3の球が半径5の円上に6個作られる。
- 上のcircleSphere.melはsin, cosを使っているが、circleSphere3.melと言う名前でsin, cosを使わないで同じ機能をもったMELスクリプトを作ってみよう。
circleSphere(5, 6);で上の使用例と同じものが作られること。
(ヒント)
rotateで-p x y zオプション(回転するときのピボット座標の指定)をつける。
- 上のcircleSphere2.melをもとにしてmake3Sphere.melの球を回転させたものを作ってみよう。
(circleSphere4.melという名前で作ること。)
circleSphere4(3, 5, 6);の結果。
まとめ
- MELにおけるループはC言語と同じものを使うことができる。
- 条件式もC言語と同じである。
参考
- オンラインドキュメント (英語)
/usr/aw/maya/docs/en_US/html/Commands/CommandsTOC.doc.html
- リファレンス
Prev | Next
Home | Contents
abe@injapan.net