2013年4月7日日曜日

ウェイト保存読込ツール

ようやく環境が整いつつあるMacBookで今週末取り組んでみましたのは
自作pythonスクリプトの改良であります.
Mayaのウェイト情報保存ツールは、UV空間でグレースケール画像に読み書きします.
使い物にならないわけではないのですが、
UVが重ならずに展開されていなくてはならなかったり、
8bitグレーで0~1を置き換えているので精度がいまいちだったりします.

ネット上でもフリーのツールがいくつもあるように、
私も自分で制作することにしたのでした.
頂点番号とウェイト情報のみをテキストデータに羅列するという
かなり大雑把なツールですが、それゆえの便利さもあると思っております.
最初はMELで記述したのですが、pythonを勉強し始めたときに
既存のMELを書き換えることをしたうちのひとつで、
pythonの配列操作の柔軟性を利用できたかなあというものでした.

今回は、これまで読み書きするオブジェクト名まで一致しないとエラーとなる点を改善し
頂点数が合っていれば、確認ダイアログを出すということをやりました.
それに従い保存ファイルの書式を少し変更.
先頭に保存した時のオブジェクト名を記述して、
頂点名を完全に番号のみに.
これで読み込むときにオブジェクト名を確認した後
頂点番号前に読み込むオブジェクト名を書き足せば終了.
と思ったのですが、ここで壁にぶつかりました.
保存時と読込時の名称が同じならば、
確認ダイアログは出現せずに読込に入るはずが
何回やっても出てくるのです???
変数をprintさせてみても同じだし、なんでだろなあと頭をひねっていたところ
これ、改行情報まで読み込まれてるのでは.

ファイルの読込は行単位、プログラマーさんなら常識かもしれませんが
思わぬところに落とし穴があったものです.
保存オブジェクト名を読み込んだ変数から改行文字'\n'を取り除いてようやく解決
なんかいろいろ迷走しているのが分かるコードになってますねぇ.


使用するときは、スクリプトエディタのpythonタブで

from maya.cmds import *
from types import *
import ysWeightTrade
reload(ysWeightTrade)
ysWeightTrade.ysWeightTrade()

と打ち込みます.
よろしければお試しください.

0 件のコメント:

コメントを投稿