graphics.hatenablog.com

テクニカルアーティストの技術を書き殴るためのメモ帳

プログラマのための Maya 入門 (3) 「スクリプトエディタ」

今回はソースコードなし。というか、ソースコードを書くために知っておきたいこと。なぜ jpg が 8 番 だとわかるのか。


 とりあえず Maya を起動して、一番右下のアイコンをクリック。これで スクリプトエディタ が起動する。
f:id:hal1932:20130527230619j:plain

Maya 内で行われる操作というのは、基本的にすべてが MEL(という Maya 専用言語)で記述されていて、たとえば、[作成]-[ポリゴン プリミティブ]-[球] と操作して球ポリゴンをつくると、スクリプトエディタに polySphere という MEL コマンド のログが表示される

f:id:hal1932:20130527230857j:plain

次に pSphere1 という名前のついたこの球を、選択して、Y 軸のプラス方向に動かしてみる。スクリプトエディタに残るログは以下の通り。

f:id:hal1932:20130527231153j:plain

pSphere1 を select して、move した。


 プログラミング言語としての MEL は、シェルスクリプトにかなり近いいろいろなコマンド を、制御構造にのせて記述していくかたち。

 たとえば前回の「画像フォーマットを jpg にする」は、こう。

f:id:hal1932:20130527231618j:plain

対応する Python のコードは、こう。

defaultRenderGlobals.imageFormat.set(8)

おそらくここまでわかれば、Maya でできることはだいぶ自動化できると思う。とりあえず Maya の GUI を操作してみて、そのログから必要なコマンドを確認すればいい。確認するときは、ここ の Quick Search や、ここ のページ内検索にそれっぽい単語を投げてみればいい。それでだいたい見つかる。


 もちろんそれだけで不十分なときもある。たとえば「マウスクリック 1 回だけでハイパーシェードを起動したいんだけど……」みたいな相談をアーティストから受けたとする。試しに [ウィンドウ]-[レンダリング エディタ]-[ハイパーシェード] と 3 回クリックしてみても、スクリプトエディタには何も表示されない。わりと困る。

f:id:hal1932:20130527232415j:plain:w600

そういうときはこうする。

f:id:hal1932:20130527232536j:plain

スクリプトエディタの [ヒストリ]-[すべてのコマンドを出力] にチェック。そうすると、Maya 内部で実行されたコマンドが、だいたい全部出力される。

f:id:hal1932:20130527232749j:plain

ただ、一度やってみればすぐわかるんだけど、必要ないコマンドも大量に出力されてとてもうざい上に、出力自体に時間がかかるから動作がもっさりする。普段はチェックを外しておこう。


 大量のコマンドを眺めてると、それまでの出力がだんだん邪魔になってくる。そういうときは右クリックから [ヒストリのクリア] をする。

f:id:hal1932:20130527233011j:plain

これに限らず Maya は 右クリックにいろんなショートカットが仕込まれてる から、いろんなとこでとりあえず右クリックしてみるといいかもしれない。

ちなみに、ビューポートの何もないとこでスペースバーを押すと、こんなショートカット画面がでてくる。これは、スペースバーを押したまま右クリックで使える。このときに左クリックするとまた違った機能が使えるから、これもやってみてほしい。

f:id:hal1932:20130527233210j:plain


 さて、「すべてのコマンドを出力」を使ってると、ドキュメントに載ってないコマンドがたくさんでてくることがある。そういうときは、こうする。

f:id:hal1932:20130527233459j:plain

そのコマンドをコピエして、すぐ下の MEL 欄で whatIs コマンド の引数に渡す。そうすると、こうなる。

f:id:hal1932:20130527233532j:plain

この手の MEL コマンドは、実装が公開されてるものが多い。テキストエディタで開いて、実装を確認してみよう。

f:id:hal1932:20130527233634j:plain

最初のうちはだいぶ読みにくいと思うけど、まぁ、そのうち慣れる、というか、否が応でも慣らされてしまう。。
 ちなみにこのソースコードを書き換えて Maya を再起動してあげれば、Maya の挙動自体を変えてしまうこともできる。例えばよくわからない変数を print してみたりとか。どうやら Maya は、一度実行したスクリプトはまるっとキャッシュしてるらしいので、正直面倒なんだけど、書き換えたら再起動する こと。すごく便利なんだけど、このスクリプトは文字通り Maya そのものにあたる。ご利用は計画的に。


 ところで、Maya のメニューはメニューバーから切り離すことができる。こんなかんじ。

f:id:hal1932:20130527234256j:plain

コマンドをみるために何度も同じ操作をしてると、マウスをぽちぽちやるのがすごくだるくなってくる。よく使う機能は切り離して置くといい。やりかたは以下のとおり。

ここの点線の部分をクリックすると、

f:id:hal1932:20130527234353j:plain

こうなる。

f:id:hal1932:20130527234408j:plain

こういうことをやりながらいろんなウィンドウをだしてると、マルチディスプレイが欲しくなる。というか、欲しくなった。いまうちディスプレイ 3 枚ある。。AdobePhotoshop や AfterEffect でも同じように切り離しができて、ものすごく便利。


 今回はここまで。おそらく、ここまでの知識にあとひとつプラスすれば、大抵の場面で困ることはなくなるはず。次回は、Maya の根幹ともいえるノード・アトリビュート・コネクション、「Maya って結構エンジニア的理系人間と相性いいよなー」と俺が思ってる一番の理由について。