2015/04/08

Maya Ascii調べ

Maya Asciiの中にはmelが記述されていて、要はスクリプト、テキストなわけですが、
さて、どこまでが .ma で、どこから単なるテキストなんでしょうか。

気になったのでイジイジ。


環境

・OSX 10.8.5
・Maya 2015

作業

とりあえず新規シーンして何もせず保存。
71.4KBのとっても立派なテキストファイルが生まれました。

ざっと内容を追ってみると……

1行目〜 コメントアウトされたヘッダー部分
5 requires
7〜 fileInfoたち
12〜 createNodeたち
(73〜134 UIを設定するスクリプトノード)
138〜 なんかセレクトしてsetAttr
165〜 relationshipたち
169〜 connectAttrたち

計173行

……となっていました。
なにもしていないシーンなので行数的にもコンパクトです。
(requires問題がスパゲティになった環境だともっと膨らんでるかもしれませんが)

この構成要素を、下から順に消して行ってみました。
(消して保存して開いて、を繰り返しやるところは面白くないので割愛)

すると、requiresを消したところでこのようなエラーが
requires必須
そうですか。
requires行を復活させて、
今度はヘッダー部分を一行ずつ削って行ってみました。
結果、ヘッダー行全部無くても、シーンファイルとして開いてくれました。

念のため、今一度requiresも削って、空のファイルにしてみましたが、もちろんダメ。

というわけで、
Mayaバージョンの書いたrequires行さえ書いておけばシーンファイルとして認識してくれる
ことが分かりました。

requires maya "2015";

この例では判定できませんが、
プラグインなどがrequireされないことによってシーンが正しく構成できないっていうのは起きるかもしれませんが、開くぶんには開けるということで。

おまけ1

次に、
ためしにMayaのバージョンを2008に書き換えてみます。
requires maya "2008";

すると

// Warning: line 0: This file is from an older version of Maya.  If saved, it will not be readable by previous versions. //

ファイルを作ったMayaのバージョン古いんだけど、とワーニング。
エラーにはなりませんでした。

無さそうなMayaのバージョンにしてみます。
requires maya "1";

一応読んでくれました。ワーニングは先ほどと変わらず。
ただし、よく分かりませんがファイルを二度読み込んでいるようです
(「2008」にしたときは一度でした)。


今度は、2020などより新しいバージョンを書いてみました。
特にワーニング等は出ず。

requires maya "20000";
これでも大丈夫。Mayaはおろか人類が地球に居るかも不明です。

おまけ2

プリント文を書き込んでみました。
とてもシーンファイルとは思えない。
普通に出力されます。

pythonコマンドもこのように。

ほう。

20150422追記

こちらのURLが流れてきまして。

http://tech.autodesk.jp/faq/faq/adsk_result_dd.asp?QA_ID=8777
プラットフォームによるアスキーフォーマットの違い

エンコードによって、OS跨いだ .ma は開けない原因になるかもしれないので「Codeset」の行は削除しないほうがよさそうですね。


20151118追記

MayaAsciiの解説、公式にありました。Maya2011のときのですが嬉しくも日本語。2016時点版もどこかにあるんですかね。
PDF直注意
http://download.autodesk.com/us/support/files/fileformats_jp.pdf




■ 参考

requires コマンド
http://help.autodesk.com/cloudhelp/2015/JPN/Maya-Tech-Docs/Commands/requires.html

あと作業しながらこのツイートが脳裏に去来してたまりませんでした
https://twitter.com/934440/status/540460782735990785

0 件のコメント:

コメントを投稿