もう一度ミクさんをMayaに召喚したい
そう思って使い回す部分は使い回すことにして、ゼロからコードを書き始めることにしました。というのも、実はpymeshioという素晴らしいPMD/PMX読み込みパッケージを見つけたので、それをじゃあ使うしかないと。
pymeshio 2.7.8 : Python Package Index
どうやら、これを開発しているのは外国の方らしく、ただでさえ情報が少ないのによくここまで完成度高められたなぁ、と感心しています。
開発は昨日から始めていて、1日目でマテリアルの読み込みまで、2日目(今日)でボーンの読み込みを終わらせました。
1日目の大半はPolygon Transparency Sortingをオンにすればいいだけの話を5時間ぐらいかけて試行錯誤を繰り返してました。同じ問題にぶち当たったのは2度目で、突然思い出して解決できたのはイイハナシダナー。
2日目はボーンの読み込みや配置と、Orient Jointをローカル軸に合わせたり、日本語名をローマ字に直したりしていました。
日本語名からローマ字に直すライブラリはkakasiを使いました。なぜかPython用ラッパーが用意されていません。
KAKASI - Kanji Kana Simple Inverter
最初、Cygwinを使って意地でもDLLを作成しようとして午後を潰していましたが、どこからも見えないところにWindows用のパッケージが配布されていて、その中に一張羅のDLLが入っていました。努力してもこんなもんです。
DLLがあったのでctypes経由で読み込ませようとしたのですが、どうやらMaya 64ビット版ではctypes自体が使えないそうです。ctypesを個別に落とせば使えるらしいですが、Python2.7用のctypesが公開されていなかったので諦めました。
仕方がないので、Pythonインストールさせてコマンドラインから実行してもらうことにしました。辞書ファイルを作り、Mayaで無理やり読み込む感じです。スマートではないですがやろうとしてることは概ね実現します。
明日は用事があるのでたいしたことはできませんが、明日以降からスキニングとリギングを同時に終わらせて、最終的にはBlend Shapeを作れればいいなと思ってます。Blend Shapeはメッシュを複製しなきゃならないのでかなり面倒くさいんじゃないかなと。
ココらへんまでできるとプロ用ツールで超本格的にミクさんで映画とか作れたりするんじゃないかなって思います。
あとはエクスポータが書ければいいんですけどね。そう簡単にはいかないと思うので、PMX作成用ツールを作らなきゃならないなと。アトリビュートを追加して、擬似的にPMXEditorのような環境を再現できれば、普通にMayaでPMXの編集ができるようになる。
ここはとにかくインポータとエクスポータの仕様をすりあわせないと、後から面倒くさくなるかもしれないのが怖い。
そういうわけで、あとこんなものをちょっと作ってます。