猫とゲームエンジン

今日も猫に面倒みられながら生きてる

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

怖いね