制御構造(ループ)
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)
{
$add = 360 / $num;
for($r = 0.0; $r < 360; $r += $add)
{
sphere;
move $rad 0 0;
rotate -ws -p 0 0 0 0 $r 0;
}
}
- 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個作られる。
- 上のcircleSphere2.melをもとにして2重に球を並べたものを作ってみよう。
すべての球は同じ半径。
(circleSphere3.melという名前で作ること。)
circleSphere3(2, 5, 6);の結果。
まとめ
- MELにおけるループはC言語と同じものを使うことができる。
- 条件式もC言語と同じである。
参考
Prev | Next
Home | Contents
abe@injapan.net