MObjectの不穏な挙動
MayaPythonAPI2.0にて、Maya2019で確認
取得済みのMObjectを、新規シーンを作成してから参照すると別のオブジェクトが参照されてしまう模様
内部の参照インデックスなどの関係だと思う
しかもとれるものが毎回変わってしまうし、たまにMayaも落ちる
以下その挙動再現用のスクリプト
下記スクリプトを順に実行していくとpolycubeを参照したはずのMObjectはperspを参照したりtopを参照したりしている
しかも一度に実行すると正常にpolyCube1が取れたりする
(多分だけど、内部インデックスみたいな参照情報が更新される前に取得できてしまう)
シーンの状態によっては強制終了しかねないスクリプトなので実行は自己責任でお願いします。
from maya.api import OpenMaya as om2 from maya import cmds # 適当なオブジェクトを作成 temp_obj= cmds.polyCube() # dependency node として取得 temp_sel = om2.MGlobal.getSelectionListByName(temp_obj[0]) dependency = temp_sel.getDependNode(0) mfn_dependency = om2.MFnDependencyNode(dependency) # 名前を取得 print(mfn_dependency.name()) # 新規シーンを作成 cmds.file(new=True, force=True) # 取得済みだった MObjectから名前を取得(シーンが立ち上がり切ってから実行する) print(mfn_dependency.name())
実行結果(試すたびに変わる)
pCube1 top
怖いね