graphics.hatenablog.com

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

プログラマのための 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 で開いたところ
f:id:hal1932:20130525224744j:plain


……さて、どれくらいの人に面食らってもらえただろうか。

実のところ、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 フロントエンド)ドキュメント を確認してほしい。

今回の処理の流れは、

  1. 新しくシーンをつくる
  2. そのシーンの中にポリゴンの球を作成して置く
  3. シーンのファイルパスを指定する
  4. シーンを保存する

というかんじ。
出力された hello.ma を Maya で開いてみると、シーンの中心に半径 1 の球が置かれているはずだ。


ところでひとつ話題として、このプログラムを以下のように書き換えたらどうなるか、ぜひ試してみてほしい。きっと今後の開発で役に立つ。

# シーンファイルのファイルパスを指定する
#pm.renameFile(os.getcwd() + '\\hello.ma')
pm.renameFile('hello.ma')


とりあえず今日はここまで。

Maya という 3DCG ソフトウェア自体については、次回以降、少しずつ取り上げていきたい。まずは何よりも、3DCG に対してプログラマにできることはたくさんある、ということを言いたかった。実際、俄には信じ難いほど複雑になった昨今の 3DCG では、アセットワークフローに踏み込んでいけるプログラマが必要であることが多い。例えば学生時代の俺のような人間が想像している以上には、できることはたくさんあるのだ。


つづく。