Maya Script Pymel 2013
以前2013でpymelを使うとマテリアルが取得できない、ということを書いたかと思います。
インストールミスか何かだろう。と余りきにせずにいたのですが、新たな環境で再び2013を入れると、再び同じ症状が、、
2012も入っていたので、エラーが出ている箇所を見比べてみました。
少し違う。
なので、それを入れ替えてみました。
問題の箇所は、
C:\Program Files\Autodesk\Maya2013\Python\Lib\site-packages\pymel\internal\apicache.py
にあります。
それの69行目から、84行目をコメントアウト、もしくは削除し、
次のコードを挟みます。
try: try : obj = dgMod.createNode ( mayaType ) except RuntimeError: # DagNode obj = dagMod.createNode ( mayaType, parent ) _logger.debug( "Made ghost DAG node of type '%s'" % mayaType ) else: # DependNode _logger.debug( "Made ghost DG node of type '%s'" % mayaType ) except Exception: obj = None if api.isValidMObject(obj) : return obj else : _logger.debug("Error trying to create ghost node for '%s'" % mayaType) return None
2012のコードです。
すると問題なくマテリアルが取得出来ます。
で、色々と気づいたのですが、2013でウェイトエディタを使うと思ったように数値を丸めてくれない。
これを調べると、どうやらそれ以前のバージョンであったバグの回避用にしていた箇所が問題のようでした。
まったくもう、、
それとついでに、gknPoseLoadSaveを修正しました。
バグフィックスです。
これできちんと起動出来ます。
自分の環境ではすでに必要な物があるので、問題なく起動していましたが、そうでない場合恐らく初回起動ができない。
要するに使えない。
酷いバグだ。
ついでにalembicのインポート機能も加えました。
ただしMaya2013であることが前提です。それ以外では機能しません。
起動方法も変わったのでご注意ください。
abcファイルを選択し、「ImportFile」を行えばインポートできます。
で、エクスポートは、
import pymel.core as pm import os,os.path def abc_export(): meshs = pm.ls(sl=1) if meshs and meshs[0].type() == "transform": name = meshs[0].name() path = pm.Env().sceneName().rsplit("/",1)[0] name = name.rsplit("|",1)[-1] path = os.path.join(path,name).replace("\\","/") pm.AbcExport( -j "-frameRange 1 24 -uvWrite -worldSpace -root {0:} -file {1:}.abc".format(name,path)) abc_export()
で、できます。
オブジェクトを選択し、実行すると、開いているシーンと同じディレクトリに保存されます。
ファイル名はオブジェクトの名前が付いているかと思います。
gknPoseLoadSaveの「Reload」を押すとリストに現れるかと思います。
他のツールで編集し、UVがアイランドであるにも関わらず、切れてしまっている場合は、
import pymel.core as pm def clean_mesh() : sel = pm.ls(sl=1,o=1) if not sel: return for s in sel : pm.select( s, r= 1 ) pm.polyMergeUV(d=0.001) pm.delete( s, ch= 1 ) pm.select(sel) clean_mesh()
オブジェクトを選択し、上記のスクリプトを実行すると綺麗に繋がります。
コメントする
トラックバックする
トラックバック用URL: