LoginSignup
1
1

More than 1 year has passed since last update.

【ArtistでもMELが書きたい】Maya MEL入門(5)【コマンドの調べ方】

Last updated at Posted at 2023-01-29

はじめに

この記事は、3DCG業界で働くArtist向けのMEL入門記事です。
普段の業務を効率化したいけど、MELの書き方が分からない、調べたけどイマイチ分からなかった、そんな方向けに書きました。
本記事は「使いたいコマンドを効率的に調べる」をゴールとします。

環境

Autodesk Maya 2022.2

前回のあらすじと今回へのつなぎ

前回はコマンドのフラグを使いました。
コマンドに関する知識も深まったところで、こんな思いが湧いてきたりしませんか?

MELを書き進めていくためには、使いたいコマンドをコマンドリファレンスから探し出して、しかもどんなフラグがあるかも調べなきゃいけない...めちゃめちゃ面倒くさい

そうです。間違いなくめんどくさいです。というか大変です。時間もかかります。
効率化のためのMELなのですから、これに労力の大半をかけていては本末転倒です。

実はコマンドを調べる際は、スクリプトエディタのヒストリを活用するともう少し楽になるんです。

スクリプトエディタのヒストリとはなんぞや

スクリプトエディタの上半分はヒストリが表示されています。
MEL_learning01.png
Mayaでモデリング等を行うときにも馴染み深いヒストリですが、
今回の場合は、単純にログ実行履歴というニュアンスの言葉です(以下ログと呼称します)

ヒストリにはどんなログが表示されるのでしょうか。
立ち上げたばかりのスクリプトエディタのヒストリには大量のログが表示されていて、なにが起こったかが分かり辛いです。
ですので、一度ヒストリをクリアしましょう。
MEL_learning02.png
MEL_learning03.png
ヒストリがまっさらになりました。これでログが流れても確認がしやすいです。

ログを流してみる

Mayaのオペレーションであればほとんどの操作は実行後にログが流れます。
試しに、オペレーションでキューブを出してみましょう(Shift + 右クリックでマーキングメニューを表示し、立方体にマウスカーソルをあわせたら右クリックを離します)
MEL_learning04.png
MEL_learning05.png
無事出せましたね。ログを確認しましょう。
MEL_learning06.png

polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
// 結果: pCube1 polyCube1 // 

1行目はpolyCubeコマンドのようです。フラグもたくさん指定されています。

2行目は新要素ですね。コメントといいます。
MELは行の始めに//を入力すると、その後ろの文字はすべて無視されます。言わばメモのようなものです。これ自体はコマンドではなく、読み手が理解しやすくするために表示してくれているというわけです。
ちなみに、ログだけではなく、MELを記述する際にももちろん活用できます。
MEL_learning07.png
こんな感じですね。
スクリプトエディタでは、コメントは赤くハイライトされます。

ログから読み取れること

コメントはさておき、大切なのは1行目のpolyCubeコマンドの方です。
フラグと共に見ていきましょう。

polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;

MEL_learning08.png
MEL_learning09.png
MEL_learning10.png
MEL_learning11.png
MEL_learning12.png
MEL_learning13.png
MEL_learning14.png
なにやらたくさんのフラグがありますが、すべてを理解する必要はありません。
ここで大切なのは、Mayaのオペレーションは内部的にMELが実行されているということを知ることです。

マーキングメニューからキューブを生成しただけではありますが、
内部ではpolyCubeコマンドが呼ばれ、さらにフラグとしては、幅は1、高さは1、奥行きは1...等が指定されて、やっと、Mayaのビューポート上にキューブが生成されているのです。

ということは、ログに表示されたこのMELをそのまま実行すれば、オペレーションで行ったことを全く同じことがMELで行えるのではないでしょうか?
早速やってみましょう!

MEL_learning15.png
MEL_learning16.png
ビンゴです!
オペレーションのログで表示されたMELはそのままMELとして使用できるんですね。

一連の処理をMELで実行してみる

自動化ツールを作るには、自動化したいオペレーションを行い、そのログをMELとして実行するだけでOKということになります。
試しに、キューブを生成して、X軸方向に1だけ動かすMELを作ってみましょう。

作るといっても、実現したい内容をオペレーションするだけです。
MEL_learning04.png
MEL_learning05.png
MEL_learning17.png
MEL_learning18.png
ログを確認しましょう。
MEL_learning19.png

polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
// 結果: pCube1 polyCube1 // 
setAttr "pCube1.translateX" 1;

setAttr...初めて見るコマンドです。これがオブジェクトを移動するコマンドなのでしょうか?
ともあれ、ログのMELをコピペして実行すると、本当に同じ処理が行えるかを確認しましょう。

まずは先程オペレーションで生成したキューブを削除して、
MEL_learning20.png
MEL_learning21.png
実行すると、
MEL_learning22.png
できました!
先程のオペレーションと全く同じ処理です!

おわりに

いかがでしたか?
本当はsetAttrコマンドの解説もしたいところなのですが、話が込み入ってしまうので次回にできたらと思います。

スクリプトエディタのヒストリ(ログ)はMayaのオペレーション実行がMELで表示されるので大変便利です。
ぜひ日々のオペレーションをログで見てみて、どんなコマンドで構成されているか確認してみてください。

次回はこちら→【ArtistでもMELが書きたい】Maya MEL入門(6)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1