MEL合宿 -18日目-

MEL合宿 -18日目-は、「繰り返し処理」の2つ目「while」についてやっていきたいと思いまーっす!∠( ゚д゚)/

while文

MELでのwhile文は、以下のように記述します。

while(繰り返し条件){
	繰り返し行いたい処理
}

このwhile文は、以下のように処理されていきます(`・ω・´)ゞ

  1. 繰り返し条件」が成立するか調べます。成り立たなければ繰り返し処理は終了します。
  2. ブロック内に書かれた「繰り返し行いたい処理」を行います。
  3. 1に戻ります。

while文は、for文にあった「初期化の式」と「ターン毎の処理の式」がない感じですね!構造はちょーシンプルです。

while文を使ってみる!

while文を使ってみるサンプルとして、選択されたノードを取得してScript Editorにノード名を表示してみたいと思います!

まずは、選択されたノードのリストを変数に代入します。

{
	string $selection[] = `ls -sl`;
}

次は、while文の条件のために、繰り返した回数を保存するための変数を用意します。一般的にはカウンターっていったりするのかな?!

{
	string $selection[] = `ls -sl`;
	int $i = 0;
}

本題のwhileの骨格を書いていきます!「選択されたノード」の回数繰り返すように、if文などでも登場した条件式を書きます。

ここでは、「$iの値が、$selectionの要素数より少ない場合は繰り返す」という意味になります(*´ω`*)b

{
	string $selection[] = `ls -sl`;
	int $i = 0;
	while($i<`size $selection`){
	}
}

whileの中に、選択されたノードをScript Editorに表示するようにします!

{
	string $selection[] = `ls -sl`;
	int $i = 0;
	while($i<`size $selection`){
		print ($selection[$i]+"\n");
	}
}

最後に繰り返した回数を覚えさせている「$i」の値を1つ増やします。コレを忘れると繰り返し処理中に「$i」がずーーーーーっと「0」のままなので無限ループになってしまいます(;´∀`)

while文ではついついカウンターを更新しわすれて無限ループになりやすいので、まじでご注意ください!
{
	string $selection[] = `ls -sl`;
	int $i = 0;
	while($i<`size $selection`){
		print ($selection[$i]+"\n");
		$i++;
	}
}

適当にMayaでノードを選択して実行すると、以下のようになります∠( ゚д゚)/

まとめ!

  1. while文は、条件が成立している間繰り返す!
  2. for文にあった「初期化の式」と「ターン毎の処理の式」がない!
  3. 無限ループになりやすいので、よくよく注意する!

それでは次回もお楽しみに!!(`・ω・´)ゞ