Maya Script – MayaとMODOでのデータのやり取り

MayaとMODOでデータをやりとりするときに、どのフォーマットが最も良いか?
候補としては、obj、fbx、dae、abc。が挙げられるかと思います。

 

objは殆どのツールで読み込めるので、手堅いですが色々と制限があるので最終手段。といった感じでしょうか。
fbx、こちらも最早殆どのツールで読み込むことができるので、お手軽且つ機能的で使用頻度は高いです。
dae、まだ対応していないツールがあるので中々手を出すことがありません。
abc、使ってみた感じ、映像ではシームレスにツールを行き来できるフォーマットとして使用されておりますが、ゲームでは色々と足りていないように感じます。

 

結論で言うと、自分はfbxを多用します。
大抵はそれだけで問題はありません。
で、そのfbx。最近気がついたのですが、選択セット(Mayaではセレクションセット)を保存することができる。
何が言いたいかというと、今までMODOとMayaのやりとりで一番困っていたのはハードエッジの情報でした。
MODOではポリゴン単位でそれを設定する必要があるため、思ったようにハードエッジを設定することが難しく、そのためMayaに持ってゆく時は、
UVを1つ追加し、ハードエッジに設定したいエッジに合わせて展開したUVを持つ、などということをしておりました。

 

しかし、選択セットが保存できれば、その問題が解決できる。と、試しに使ってみました。
MODOでは2013のバージョンのfbxを使って出力すると、選択セットが保存できます。
Mayaに持ってゆくときちんとセットとして情報があることがアウトライナで確認でき、選択することが可能です。

 

ただ、ゼロからMayaで作ったものをMODOに持ってゆくと、、
エッジのインデックスが合っていない、、
そもそもMODOにはエッジにインデックスという概念が多分ありません。
2つの頂点のインデックスを指定することでエッジの選択が行われている。
恐らくMayaは独自の方法でエッジのインデックスを作っているのでしょう。他のツールで作ったfbxデータであれば、保存されている選択セットとエッジインデックスは一致する。
自社のファイルフォーマットなのに、どういうことだろうか?いい加減にして欲しい、、

 

選択セットが保存できると分かってスクリプトを作ってみましたが、結局役立たず。
対処するとなると、fbxを作るときはアスキーで固定し、出力後にスクリプトで編集するようにする。というのと、
ローカルにデータベースを作成し、ファイル名と対応するエッジの頂点インデックスを保存しておき、MODO側でそれにアクセスして適応。という感じだろうか。
前者であれば、アスキー固定になってしまうが、後者であればそういった制限はない。うーん、そこまでする?
と、面倒臭くなり、止まりました。

 

それと、もう一つ。
頂点カラーエディタを作っていたので、MayaとMODOで頂点カラーのやりとりもテストしてみました。
アスキーで保存すると良く分かるのですが、Mayaで保存されたデータは頂点カラーをフェイス頂点で持っているのに対して、MODOでは頂点単位で持っている。
MODOでは裏ワザ的な方法でしかフェイス頂点にカラーを適用できない。
うーん、もどかしい。結局中途半端なことしかできない。ということでした。

 

それはそうと、DF-TALKさんでMayaコマンド、Pymel、OpenMaya、MayaAPI2.0、C++での速度比較の記事が書かれている。
あー、やっぱりAPI2.0ってまだ中途半端なんだぁ、と分かってガッカリ?ホッとした?そんな感じです。
しかしC++よりも早い、というのは驚きでした。どういうことなのだろうか。スクリプトで組んでも結局最後はコンパイラー言語で実行されるのだろうから、
あり得なさそうだけど、ありえるのですねぇ。しかし、デコーダそんな機能があるなんて、知りませんでした、、Python奥深いなぁ。

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です