では、今回からPython IDLEとmayaでプログラミングを初めて行きます。
まず、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 i0.5」をty=i0.5にしました。
「ty」というのも変数です。さっきの「i」もですが、その文字に意味は特にありません。移動のYなので「Translate Y」で「ty」というだけです。
print "ty=",ty,
はtyの値を表示する前に「ty=」という文字を出してください、という意味です。
その下にryという変数で同じことをしています。こっちは30倍しているので、30の倍数になります。実行すると、
こうなります。「,」は「改行しない」という意味です。それぞれの値が正しく計算されていますね。
これをコピーして、MayaのスクリプトエディタのPythonにペーストして、CTRL+Enterで実行してみてください。
なんと同じ結果になります(当たり前なのですが)。
コンピュータは基本的に数値と文字しか扱えません。Mayaもそれを複雑に利用して形状やアニメ、レンダリングをしています。
その数値をPythonで操作すると、様々なことが自動で処理できるようになる、ということが解ったのではないかと思います。