スタジオブロス TECH BLOG

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

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

さて、今回から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しか判りません。

PythonGoogleとか使うくらいですから、一般的なIT関連の命令しか知りません。それでは、MayaをPythonで動かすことができないのです。 別の言葉しか解らない外国人が同居している、という状態です。

だからわざわざスクリプトエディタもMELとPythonの2つの受付窓口があって、それぞれの命令しか受け付けないようになってます。 そこで考えました。

PythonにMELの命令を覚えててください=「import pymel.core as pm」

という方式なのです。各行の最初に「pm.」がついていますね。「これがついているのはMELの命令ですから、Pythonさん解ってくださいね」ということなのです。 なのでこの1行と最初のpm.は意味が解らないままでいいので、必ず付ける、という風に覚えてください。

今日はここまでです。これくらいのペースでゆっくりやりますので、気長にやっていきましょう!