スタジオブロス TECH BLOG

スタジオブロススタッフからの最新ツール情報やチュートリアル・TIPSなどを紹介します

文系デザイナーのためのmaya MEL/Python基礎の基礎⑪

さて、前回の9回目の続きです。

だいぶ難しくなったと思いますが、実はプログラムの基本動作としては4つのことしかないのです。

  1. プログラムは1行ごとに書き、それは上から下に順に処理される
  2. 数値や文字を入れる変数に値を入れたり出したりして記憶する
  3. 回数を決めて、同じ処理を繰り返す
  4. 数字や文字を見て判断して、処理の流れを変える

どうですか?そんなに大変ではないことが解ったと思います。前回までで既に1~3までやっているのです。

で、今日は4の「判断して」をやります。

例えば「螺旋階段の各階ごとにフロアのキューブを追加する」というのを作るとします。

繰り返しますが、プログラムの勉強をしてはダメです。あくまで3DCG制作であることを前提に考えてください。

まずは、Python IDLEです。⑨の最後のプログラムをOpenで開きます。

これはMayaの命令を入れたので、もうIDLEでは動きません。

そこで、Maya命令がある行で「ALT+3」を押します。

すると、コメントアウト(実行しない行)にしてくれるのです。元に戻すには「ALT+4」です。

試しにF5で実行すると正しく動きます。

では一番下に以下のコメント入れます。

これをPythonプログラムにします。ここで大切なのはいきなり本題に入るのではなく、できるところから実験していくことです。階段は一段づつ上がればいいのです。頑張ってハイジャンプすると危険ですよね?それと同じです。

まず、以下の青い箇所を入力してみます。同時に繰り返し命令のforを15にします。

こうしないと1階分もできないからです・・・

新命令「if」の登場です。ifはその後に判断する条件を入れます。「==」は「左右の値が等しい時」という意味です。

この場合、回転角度ryが360度に一致したら、という意味です。

ifが確認したら、その下の行のインデントされたものを実行します。これは何行あっても構いません。print "?階"は、単に「?階」と表示するだけです。

ifが角度ryが360度に一致しない場合は何もしません。この場合はforの中にあるので、繰り返しをするだけです。

では実行してみましょう!

ちゃんと「if」が仕事してますね!?でもこれでは720度、1080度とか増えた場合、対応してくれません。「360の倍数」という条件を作らないといけません。

そこで、こう書き換えます。

「ry%360」はryを360で割った余りを計算する式です。一般の数学では出て来ない演算の記号です。

余りがゼロなら360の倍数であることが判断できますね?

0/360=0・・・余り0

30/360=0・・・30

330/360=0・・・余り330

0/360=0・・・余り0

390/360=1・・・余り30 : 720/360=2・・・余り0

さらにprintを書き換えてtyはコメントアウトし、trだけifのインデントの下にカット&ペーストしています。

print ry/360+1,"階" とは、「ryを360で割って1プラスしたものを計算して表示」、という意味です。

その後に「階」を連続して表示します。forは40階にしています。

実行すると・・・

このようになります。

ちゃんと螺旋階段の角度をコンピュータが判断して階を理解していますね。

今日はここまでです。次回、これをMayaで動かしましょう。