制御構造(if, switch)

MELにおけるifとswitch

MELにおいて条件・値によってコマンドを実行するかどうかを決めるには、C言語と同じように if, switchなどを使用する。

ifの使用例

半径$radが5.0以下の場合は円上に球を、半径が5.0以上の場合はキューブを$num個並べるMELスクリプト。

  1. 以下のMELスクリプトをcircleObjects.melという名前で作る。
    global proc circleObjects(float $rad, int $num)
    {
    	float $r;
    	float $add;
    	float $rr = 360.0;
    
    	$add = $rr / $num;
    	for($r = 0.0; $r < $rr; $r += $add)
    	{
    		if($rad <= 5.0)
    		{
    			sphere;
    		}
    		else
    		{
    			nurbsCube;
    		}
    		move $rad 0 0;
    		rotate -ws -p 0 0 0 0 $r 0;
    	}
    }
    
  2. MAYAを立ち上げる。
  3. 一番上のメニューバーから Window -> General Editors -> Script Editor によって Script Editor を表示する。
  4. Script Editorの File -> Source Script によってcircleObjects.melを読み込む。
  5. Script Editorの下のウインドウからcircleObjects(4, 6);と打ち込んで実行する。
  6. 半径1の球が半径4の円上に6個作られる。
    image of circleObjects(4, 6)
  7. Script Editorの下のウインドウからcircleObjects(6, 7);と打ち込んで実行する。
  8. 一辺1のキューブが半径6の円上に7個作られる。
    image of circleObjects(6, 7)

練習

  1. 上のcircleObjects.melを参考にして、circleObjects2.melを作り半径が10.0以上の時はコーン(cone)が作られるようにしてみよう。 (それ以外はcircleObjects.melと同じ)
    image of circleObjects2(11, 8) circleObjects2(11, 8);の実行結果
  2. circleObjects3.melというMELスクリプトをswitchを使って以下のように作ってみよう。
    circleObjects3(作るオブジェクトの種類, 円の半径, 球の個数)
    (使用例)

まとめ

参考


Prev | Next
Home | Contents
abe@injapan.net