さて、今回からPythonでのプログラムを実際に勉強していきます。
では、「基礎の基礎」らしく、そもそもプログラムって何でしょう?からやりましょう。
私としてはここのマンガ が大好きでいつも学校では使ってます。
「人間がやると面倒なことをコンピュータにやらせる方法。それがプログラムだ」 名言です・・・これ以上何も説明が要りません。でも逆をいえば、
「人間が面倒だと思うことが無ければプログラムはいらない」 ということでもあります。つまり、Mayaを使っていて、面倒だなァ・・・疲れるなァ・・・と思うことが大切です。MayaのPythonに勝手にやってもらって自分は怠けたい、という気持ちを持ってください。
次に大切なのは、
「コンピュータは人間の言葉を理解してくれない。仕方がないので、人間がコンピュータが判る言葉で、やることを説明してあげる必要がある」 ということです。つまり、それがプログラム言語であり、その種類がMayaではPythonなのです。(さっきのマンガはJavaScript です。Webブラウザのプログラムはコレ)
さらに厄介なのは、文系デザイナー(ディレクター)的な「あいまいな指示」がコンピュータは苦手なのです。「サクッとシャキッとバーンって感じで作って」とか拒否されます。
「プログラムはコンピュータの理解できるルールで、事細かく段取りを伝える」 ということです。一字一句間違えたり、手抜きの段取りはダメです。細かいこと苦手な人と、そもそも旅行や宴会の段取りが苦手!嫌い!という人はちょっと頑張らないといけないかもしれません。
ちょっと前置きが長くなりました。ゴメンナサイ・・・
ではMayaを起動してポリゴンの箱、球、ピラミッドを出してましょう。
polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1;
polyPyramid -w 1 -ns 4 -sh 1 -sc 0 -ax 0 1 0 -cuv 3 -ch 1;
それぞれのMELの命令が出て来ます。
最初に出でくる言葉がpolyCube=箱、polySphere=球、polyPyramid=ピラミッドとプリミティブごとに違うことが判りますね。これが「命令」です。
ちょっとチャネルボックスと見比べると、分割数とか大きさの数値がMELの「-?? 数値」命令と一致しているのが判ります。
では、実験です。面倒ですが、初心者のうちは必ず新規作成して、スクリプトエディタをクリアしてやりましょう!まずはこのような命令に書き換えます。コピーしてペーストした後書き換えてください。
polyCube -w 1 -h 2 -d 0.5;
です。あれ?文が短いですね・・・
エラーは出ません。実は命令は短くしてもmayaが空気を読んでくれる場合があります。
-w 1 =幅が1
-h 2 =高さ2
-d 0.5 =深度0.5
なのは判りますね。この一字一句、スペースまでルールまで決まっています。
では次です。
polySphere -r 0.5 -sx 8 -sy 8;
これは、-r 0.5が半径、-sx 8 -sy 8がそれぞれ分割数ですね。
では、次の実験です。
polyPyramid -ax 1 0 0;
ピラミッドが横向きでXの方向になりました。-axはもともと010だったのをこのように変えました。つまり、これは010でYが上、110でXが上になるピラミッドができます。
このようにルールに従い、命令と数値を組み合わせて1行に書くことがプログラムなのが分かりました。
では、この短くした3行を、昨日の「Free ezMel2Python for Maya」で変換します。
polyCube -w 1 -h 2 -d 0.5;
polySphere -r 0.5 -sx 8 -sy 8;
polyPyramid -ax 1 0 0;
↓変換
import pymel.core as pm
pm.polyCube(h=2, d=0.5, w=1)
pm.polySphere(sy=8, r=0.5, sx=8)
pm.polyPyramid(ax=(1, 0, 0))
変換した命令4行を、スクリプトエディタを必ず「Python」に切り替えてコピー&ペーストして実行(CTRL+Enter)すれば、ちゃんと長い箱、ローポリ球、横向きピラミッドができました。
なんかおかしくないですか?作った記憶が無い1行が増えてますね?
import pymel.core as pm
面倒ですが一度mayaを再起動して、この行を削除した3行で実行します。
エラーが出て動かないのです・・・
削除したこの行はMayaでPythonを使うために必須な行です。
最初の回で言ってますが、Mayaは基本MELしか判りません。PythonはGoogleとか使うくらいですから、一般的なIT関連の命令しか知りません。それでは、MayaをPythonで動かすことができないのです。
別の言葉しか解らない外国人が同居している、という状態です。
だからわざわざスクリプトエディタもMELとPythonの2つの受付窓口があって、それぞれの命令しか受け付けないようになってます。
そこで考えましたのです。
PythonにMELの命令を覚えててください=「import pymel.core as pm」 という方式なのです。各行の最初に「pm.」がついていますね。「これがついているのはMELの命令ですから、Pythonさん解ってくださいね」ということなのです。
なのでこの1行と最初のpm.は意味が解らないままでいいので、必ず付ける、という風に覚えてください。
今日はここまでです。これくらいのペースでゆっくりやりますので、気長にやっていきましょう!