プログラマのための Maya 入門 (1) 「まずはじめに」
最近ブログ書いてないなぁと思って。。
このところ何してたかって、アーティストの卵に混ざって映像つくってました、某所の専門学校で一年ほど。本職は当然プログラマなんだけど、もととも TA 目指してこの業界に来たわけで、やっぱり、アーティストが何考えてるのかはすごく大事だと思って。
で、最近ようやく自分にお鉢がまわってきたので、自分のための知識整理も兼ねて書いてみる。連載形式だけど、連載期間は俺のモチベーションが続く限り、ってことで。
目標は、如何に Maya がプログラマ向きのツールであるか を示すこと。
念のため言っておくけれど、いわゆる "業務上で知り得た知識" というのは一切書かないので、それについてはご了承を。
というわけで、以下、いわゆるハローワールド。
hello.py
# -*- coding: Shift_Jis -*- import pymel.core as pm import os # 新規シーンファイルをつくる pm.newFile() # ポリゴンの球をつくる pm.polySphere() # シーンファイルを保存するファイルパスを指定する pm.renameFile(os.getcwd() + '\\hello.ma') # シーンファイルを保存する pm.saveFile()
実行コマンド
> %PATH_TO_MAYA_BIN%\mayabatch.exe -command "python(\"import hello\")"
hello.ma を Maya で開いたところ
……さて、どれくらいの人に面食らってもらえただろうか。
実のところ、Maya は外部から完全にプログラムドリブンで駆動できる。いまは Python で書いたけど、C++ API もちゃんとある。逆に言えば、Maya(を始めとする CG 系ツール)をちゃんと理解してるってことは、それだけでプログラマとしての飯の種になりうる。そこんとこ重要。もちろん絵がかけるに越したことはないけども、かけなくたって、3DCG のためにできることはたくさんあるのだ。
じゃあプログラムの解説にはいる……前に、処理系について確認しておく。
まず、Maya を扱うプログラムを動かすには、3 つの方法がある。
1. Maya の スクリプトエディタ 内で直接コードを書く
2. mayabatch.exe(mac/linux の場合は maya -batch)に -command でコードを渡す
3. mayapy.exe にコードを渡す
1 は MEL(という Maya の独自言語)と Python が実行できて、2 は MEL(経由で Python )が実行できる、3 は Python が実行できる。mayapy よりも mayabatch のほうが安定してるという話も聞くけれど、実際のところはよくわからない。今回は余計な出力が少ないということで mayabatch を選んだけど、細かいダンプが見たいときは mayapy のほうがいい。
で、プログラム本体の話。
Maya を使ったことがあればわかると思うけど、Maya は基本的に、一度にひとつのファイルしか編集できない。今回のプログラムもそれに倣って、まずはひとつのファイル(シーン)を冒頭で作成した。この空っぽのシーンに対して、いろいろと操作を行なっていく。実際にどんな API でどんな操作ができるのかは pymel(MEL の Python フロントエンド)ドキュメント を確認してほしい。
今回の処理の流れは、
- 新しくシーンをつくる
- そのシーンの中にポリゴンの球を作成して置く
- シーンのファイルパスを指定する
- シーンを保存する
というかんじ。
出力された hello.ma を Maya で開いてみると、シーンの中心に半径 1 の球が置かれているはずだ。
ところでひとつ話題として、このプログラムを以下のように書き換えたらどうなるか、ぜひ試してみてほしい。きっと今後の開発で役に立つ。
# シーンファイルのファイルパスを指定する #pm.renameFile(os.getcwd() + '\\hello.ma') pm.renameFile('hello.ma')
とりあえず今日はここまで。
Maya という 3DCG ソフトウェア自体については、次回以降、少しずつ取り上げていきたい。まずは何よりも、3DCG に対してプログラマにできることはたくさんある、ということを言いたかった。実際、俄には信じ難いほど複雑になった昨今の 3DCG では、アセットワークフローに踏み込んでいけるプログラマが必要であることが多い。例えば学生時代の俺のような人間が想像している以上には、できることはたくさんあるのだ。
つづく。