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

では、今回からPython IDLEとmayaでプログラミングを初めて行きます。
今回からはMacでもWindowsでも操作は同じです。
まず、Python IDLEを起動して、File→Newと実行します。


こういうウインドウが出ればOKです。ここにプログラムを入力します。

さて、ちょっとPythonに興味が出た方はネットを検索したり、本屋さんや図書館へ行ってみたと思いますが、あまりにもツマラナイので、呆れてませんか?
そうなのです。プログラムだけを解説したものは、面白くないのです!このブログタイトルみたいな「デザイナー」ではない人が書いているからです。

では、どうしましょう。Mayaで作りたい絵を紙とエンピツで描いてください。またはそれを脳内でイメージするだけでも構いません。動画なら絵コンテです。

今回のお題は、螺旋階段です。Google画像検索だと、こんな感じですね。

これをmayaで作ることを想像してください。それを先程のPython IDLEに文で書いていきます。
ここで注意なのは行の最初に「#(半角)」を付けてください。

プログラムでは数学でやったように、

1+2=3

のように左から右へ計算するのではなく、

3=1+2

のように右の計算結果を左に入れる、という方式なのです。
判りにくいので、

3←1+2
というイメージです。
なので、「X=4」は「Xに4を入れる」、という意味です。

書いたらSaveします。

拡張子に「.py」を付けてください。


これでプログラムができました。「って、文じゃん」とツッコミが来そうなのですが、問題ありません。プログラムは「文」なのですから。
そもそもプログラムはコンピュータ(ここではmaya)に何をして欲しいのかを、事細かに指示することなのです。ですから文才がないといけないのです。

行の最初に「#」を付けましたね?これを「コメント」または「注釈」といいます。この行は人間が理解できる言葉で書いた説明です。コンピュータはこの行は無視します。そもそも人間の言葉は理解できませんし。

では、Mayaが判るようにしていきます。まず、各行を分別します。Mayaの命令にはm、Pythonだけの命令にはpを付けます。
それからもっと詳しく文を追加して書き換えます。
また、戻って繰り返す部分は「TAB」キーを押して行の頭をあけます。(これをインデントといいます)

ここで数学がちょっと出てきます。というか算数レベルですの安心してください。
「0.5追加する」=0.5の倍数、「30追加する」=30の倍数であると考えればいいのです。

そこで、Pythonの最初の命令です。「繰り返す」を使います。

for i in range(0, 10):

これは、「i」という変数を0から初めて10回繰り返しなさい、という命令です。
何を繰り返すか、というとこの行の下にあるインデント(行の頭のTAB)されているもの、という意味です。
(読み方は「フォア アイ イン レンジ0 10」です。カッコやカンマや読みません)
実験してみましょう。


下に「print i」を入れました。これは「iの値を画面表にしてください」という命令です。
では、キーで「F5」を押してください。これでPythonIDLEのプログラムを実行します。

ちゃんと0~9の値をコンピュータが計算してくれました!
「i」は変数と言います。数学でやったX,Yとかの代数と同じだと思ってくれて問題ありません。(今のところは)
では、今度は以下のように書き加えます。

printの後ろのiに「*0.5」を付けました。「*」は掛け算をしてくれます。
それ以外にも「+」「-」が使えますし、「/」が割り算で、()で優先順を決められます。

iが0~9なので、それに0.5を掛けて表示します。

F5で実行するとこうなりますね。0.5の倍数を作ったわけです。

では、次は以下のように書き換えます。

怖がらずにさっきとの違いを見てください。先程の「print i*0.5」をty=i*0.5にしました。
「ty」というのも変数です。さっきの「i」もですが、その文字に意味は特にありません。移動のYなので「Translate Y」で「ty」というだけです。

print “ty=”,ty,

はtyの値を表示する前に「ty=」という文字を出してください、という意味です。
その下にryという変数で同じことをしています。こっちは30倍しているので、30の倍数になります。実行すると、

こうなります。「,」は「改行しない」という意味です。それぞれの値が正しく計算されていますね。
これをコピーして、MayaのスクリプトエディタのPythonにペーストして、CTRL+Enterで実行してみてください。

なんと同じ結果になります(当たり前なのですが)。
コンピュータは基本的に数値と文字しか扱えません。Mayaもそれを複雑に利用して形状やアニメ、レンダリングをしています。
その数値をPythonで操作すると、様々なことが自動で処理できるようになる、ということが解ったのではないかと思います。

 

コメントを残す