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

前回の続きです。なんだか解らないけど動きました。
マイクロソフトのエクセルとかの「マクロ」のようなものだと判ればOKです。

今日はこれが何なのかを説明していきます。
この1行1行がMELの命令であるのは理解できたと思います。その1行ごとに

// やっていること

と書いていきます。前回と違いは名前が「test2」にして、一番下に2行加えました。

ゴチャゴチャしてわかりにくい!という方はMayaのスクリプトエディタへドラッグしましょう


色分けして読みやすいですね。CTRL+Enterすれば先日と同じようにX=3のキューブが出るはずです。最後の2行でMEL起動命令を入れてあるので、すぐに動くのです。
新規作成して、maya画面上にドラッグしても同様です。

さて、上の画像を見てください。文字の色が4色ありますね。1行1命令になっています。各行の最後に必ず「;(セミコロン)」があるのが重要です。これが無いだけでエラーで動きませんからイライラします。

1.赤=「//」が付いているのは、人間が書いた実行しない行(コメント文という)。ここはセミコロンは不要です。
2.水色=MELの命令
3.黄色=Mayaのパーツ名.アトリビュート名
4.グレーと緑=その他の値

赤い行で人間がやった作業だけ①~⑥まで番号を付けています。
個々の命令の意味を理解する必要はありませんが、15行~18行は人間の操作をMELがやっているだけ、ということが判るでしょう。
実はここは削除しても、ちゃんと動きます。

では、本題です。Mayaというツールを使っている方は様々な操作をしてきたと思いますが、実はやっていることはシンプルなのです。

A:ノードを作る
B:ノードのアトリビュートに値を入れる
C:ノードとノードのアトリビュートを繋ぐ

まず、基本この3つです。他にもありますが、それは追って説明します。
「ウインドウ」→「ノードエディタ」と「ハイパーシェード」を開いてみます。


プリミティブを作ったり、シェーダーを作ったりするのは「ノードを作る」ということです。

カメラ、ライト、ジョイント、IKハンドル、テクスチャーや「押し出し」もノードです。
さらに「ウインドウ」→「ハイパーグラフ」階層も出してみましょう。

気づきましたでしょうか?実はハイパーシェード、ノードエディタ、ハイパーグラフは「同じもの」だったのです!


そして、そのノードとノードが繋がることで様々な処理をしているのです。


さらに各ノードをクリックすると、アトリビュートエディタが自動で切り替わり、値を設定できることはご存知ですね。このタブ1つ1つがノードなのです。


では、「アウトライナ」とは何でしょう?Cubeを選んで「カーソル↓」キーを押してみましょう。

アウトライナでは何も選ばれなくなりました。しかし、ノードエディタでは「pCubeShape1」という「シェイプノード」が選ばれました。
アトリビュートを見ればわかりますが、「pCube1」は位置、回転、スケールしかないロケータみたいなもので、「pCubeShape1」はBlinnが繋がってレンダリングに関係するものなのです。

では、「PolyCube1」はなんでしょう?

お分かりですね?これはポリゴンの大きさや分割数など大きさを司っているのです。
「チャネルボックス」を見るとこの3つのノードを一度にまとめて操作できるのです。


いまさらですが、「チャネルボックス」とはアトリビュートと同じです。アトリビュートが表示が多く面倒なので、抜粋したダイジェスト版がチャネルボックスなのです。

 


シェーダーのアトリビュートで上のボタンを押したことはありますね?これはつながっているノードの上下に移動する、という意味だったのです!

話を最初に戻します。MELはMayaのノードのアトリビュートを設定したり、繋いだりするのを各ウインドウを使った「手動」ではなく、プログラムを使った「自動」で行うことなのです!

そこでMELの命令をもう一度見てみましょう。

// ポリゴンキューブ「pCube1」を作る①
polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
// キューブをX=3に移動する②
setAttr “pCube1.translateX” 3;

これは、①でノード作成、②がアトリビュートを書き換えをしています。
polyCubeがポリゴンの箱を作る命令で、その際に-w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1がサイズとスケールを設定する項目です。
setAttrという命令が「アトリビュートを設定しなさい」でpCube1.translateX 3が箱を移動X=3です。

// 「Blinn1SG」にBlinnを繋ぐ
connectAttr -f blinn1.outColor blinn1SG.surfaceShader;

connectAttrという命令が、blinn1.outColorとblinn1SG.surfaceShaderを接続してるのです。

他の行も意味は良く解らないでも、MELとMayaの仕組みが理解できればOKです。
今日はここまでです。