見出し画像

MayaのMELを使おう!基礎編第2回~コマンド入力と四則演算~

こんにちは!G2 Studiosで3Dアニメーターをやっている嶽本(タケモト)です!
MayaのMELの基礎講座第2回です。

▼第1回はこちら


コマンド ~コマンドってなに?~

コマンドの構造を説明

MELコマンドがどういう作りになっているのかを説明します。
まずは試しにメインメニューの [作成] > [ポリゴンプリミティブ] から、球を作ってみましょう。

ポリゴン球を作ったら、スクリプトエディタを見てみてください。

ログに何か書き込まれましたね。この1行目がmelコマンドです。(2行目は結果表示なので今は気にせず)

polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1;

短縮形で書かれていますが、省略せずに書くとこうなります。↓

polySphere -radius 1 -subdivisionsX 20 -subdivisionsY 20 -axis 0 1 0 -createUVs 2 -constructionHistory 1;

ほぼ英単語になったので、頑張れば読めるようになりました。意味は以下のようになります。
ポリゴンの球を作れ/半径1/X軸方向の分割20/Y軸方向の分割20/軸の向きxyz=0,1,0/UV構造2番/コンストラクションヒストリ1(有効)

<このように対応している>

先頭の「polySphere」が「ポリゴンの球を作れ」という命令で、これを「コマンド」と呼びます。
その後に続く「-radius 1」等の 「-」で始まる部分はそれぞれが「ポリゴンの球」を説明するもので、これはMayaでは「フラグ」と呼びます。他の言語ではオプションと呼ぶこともあります。
フラグにもその説明がつくことがあり、上の例では数値の部分がそれに当たります。
つまり、まず「コマンド」があって、その後ろにそれを説明する「フラグ」がつく、というのが基本的なMELコマンドの形です。
そして最後にセミコロン「;」を付けることで、この命令文はここで終わり、という意味になります(※)。
コマンドやフラグ、その値などの全ての要素は、間に半角スペースを1つ以上入れる必要があります。
1つ以上であればいくらあってもOKなので、見やすいようにこれで間隔を調整してもいいですね。ただし全角スペースはNGです。気を付けて。

まとめると、以下の3点がMELコマンドのポイントです。
・「コマンド」:基本の命令
・「フラグ」[-]:コマンドを説明する
・「セミコロン」[;]: コマンドを終了する

※逆に言うと、セミコロンをつけないと文章が終わったことにならないので、改行しても「ひとつのコマンドが続いている」と判断されますので気を付けてください。
 エラーになり、実行できません。

やってみよう!

それでは、実際にコマンドを書いて実行してみましょう!コピペしても大丈夫です。
手書きでやってみる方は大文字小文字に注意!Mayaでは明確に別物として区別されます。Aとaは別物です。
スクリプトエディタでコマンドを正しく打ち込むと、下の図のように文字が青い斜体になります。

polySphere;

フラグがついていませんが、書いてないところはデフォルトの値や現在の設定が適用されるのでこれでも大丈夫です。
実行は▶ボタンかctrl+enterでしたね。
注:Mayaでは大文字小文字は明確に区別されます。あと全角半角も注意!基本は半角です!全角スペースでエラー出がち!

<ポリゴン球ができた>

今度はちょっとフラグを足してみましょう。「5」は球の半径なので、別の数値にしてもかまいません。 ※数値は半角で !

polySphere -radius 5;

さっきより大きなポリゴン球ができたでしょうか?
さて、ここまでで作ったポリゴン球ですが、名前は「pSphere1」「pSphere2」となっているかと思います。
いったん作ってリネームしてもいいですが、せっかくなので最初から名前も決めてみます。

polySphere -radius 3 -name test;

-nameの後の部分がオブジェクトの名前になります。ここは変えてもいいですが、全角はダメです。
記号もダメなものがあります。それから、同じ名前がすでにある場合は後ろに連番の数字がつきます。
この辺はMayaの規則です。

思ったような結果になりましたでしょうか?
このように、基本の命令コマンドを選んで、それを説明するフラグを足していく、というのがMELコマンドの作り方です。
2行以上を一度に実行してもいいですよ。


記号の意味を知ろう ~四則演算~

表示してみよう

突然ですがMELで計算してみましょう。
その前に、結果を表示するには「print」コマンドを使います。
print は、後ろに表示したいものをつけて使います。
ここに置いていいのはひとつ(ひとかたまり)だけです。
試しに適当な文字列を表示してみましょう。

print otameshi; //結果:otameshi
<こうなったでしょうか?>

ログの1行目が実行したコマンド、2行目が結果です。
「otameshi」を表示しろ、と命令したので「otameshi」と表示されたわけですね。
数字もやってみましょうか。

pring 123456789//結果:123456789

日本語や全角文字を使いたい場合はちょっと注意が必要。
コンピュータは日本語がわからないので、中身がわからなくてもそのまま使ってね!と教えてあげないといけません。
この場合は文字列の前後を”〇〇〇〇”のように「”」で囲んであげてください。

print "て す と"//結果:て す と

ローマ字や数字の場合も、計算せずにそのまま使ってほしい場合は「”」で囲みます。(記号を使う場合は書き方が変わるので注意!)

print "test 1234 てすと 1234"; //結果:test 1234 てすと 1234


コメントとは

上で初めて使う記号が出てきましたね。「//」の2つセットで使います。
これはコメントと言って、書いてあることをコンピュータに無視してもらうための記号です。
コメントには何を書いてもコマンドの実行に影響しません。
用途としては、処理の内容を書いたり愚痴を書いたり(笑)、主にメモとして使われます。
大規模なものや分担作業をするとそこで何をやっているのかわからなくなるので、結構大事です。
MELでコメントに使うのは以下の2つ。
「//〇〇」:この行で、「//」以降はコメント、という意味です。
「/*〇〇*/」:「/*」と「*/」に囲まれた部分はコメント、という意味です。これは行をまたいでも有効です。

print test;//testと表示する
print temp;/*tempと表示する
print abc;
print def;*/
<赤線部分の結果だけが出ている>

いろいろやり始めると100行どころか1000行なんてすぐいってしまうので、
コメントがないと自分で書いたものでも迷子になります。絶対に。コメントだいじ。

計算してみよう

まずは四則演算をそれぞれやってみましょう。いつもの計算とは記号の意味が変わるので注意です。
計算を小かっこで囲んでいるのは、表示する前に計算してもらうための書き方です。

足し算(+)

print (5+5);  //結果:10

引き算(-)

print (10-3); //結果:7

掛け算(*)

print (7*9);  //結果:63

割り算(/)

print (100/3);  //結果:33

割り算の結果でおや?と思いましたか?
コンピュータは、整数と小数では計算負荷が段違いなので、整数同士であれば整数として結果を出し、小数は切り捨てられます。
小数まで必要であれば、書き方をちょっと変えてあげます。

print (100.0/3);  //結果:33.333333

このように書けば、100.0を小数として捉えるので小数の計算結果が出せます。
また、あまり馴染みのない計算もあります。

割り算の余り(%)

print (100%3);  //結果:1

何に使うの?と思うかもしれませんが、慣れてくるとけっこう使い道があります。
頭の片隅に、「こんなのがあったなぁ」くらいで覚えておくと後で助かるかもしれません。

今回はここまでです。
次回は、変数と配列について解説します。

▼G2 Studiosのクリエイター向けnoteはこちら
(ぜひマガジンをお気に入り登録して次回更新をお待ちください!)

▼更新情報はTwitterよりチェックしてください

▼G2 Studiosの採用情報はこちら


X(Twitter)にて最新のお知らせを配信しております。ぜひフォローしてください!