UUID
これを行う別の方法は、文字列の命名の依存関係をスキップし、代わりに経由でノードを取得することを採用することです。ここにあるフラグcmds.ls
と併せて参照してください。-uuid
名前空間は、実際には、オブジェクトの名前に追加された単なる文字列名プレフィックスです。名前空間が存在する限り、オブジェクトの名前を変更して名前空間に追加/削除することができます。例えば:
import maya.cmds as cmds
loc = cmds.spaceLocator()
cmds.ls(loc)[0] # Result: u'locator1' #
cmds.namespace(add='foobar') # Result: u'foobar' #
loc = cmds.rename(loc, ':foobar:{}'.format(loc)) # Result: u'foobar:my_locator' #
cmds.rename(loc, ':my_locator') # Result: u'my_locator' #
背後にある考え方UUID
は、ノードがそのノードに固有の特別な文字列属性でタグ付けされ、ノードの名前が変更されても変更されないということです。たとえば、UUID は同じままで名前が変更されていることに注意してください。
import maya.cmds as cmds
loc = cmds.spaceLocator()
cmds.ls(loc, uuid=True)[0] # u'60446AC7-4398-E3CB-4C27-6BA417626E41' #
cmds.ls(loc)[0] # Result: u'locator1' #
loc = cmds.rename(loc, 'my_locator')
cmds.ls(loc, uuid=True)[0] # Result: u'60446AC7-4398-E3CB-4C27-6BA417626E41' #
cmds.ls(loc)[0] # Result: u'my_locator' #
UUID
この情報を利用して、ノードが(名前付けによって) 移動先/移動先の名前空間に関係なく、ノードはその寿命全体にわたって常に同じであり、変更されないことがわかりました。
これをすべてまとめると、ls
コマンドを と組み合わせて使用 する方法は次のuuid
とおりです。
# Query the UUID of our locator
cmds.ls(loc, uuid=True)[0] # Result: u'60446AC7-4398-E3CB-4C27-6BA417626E41' #
# Retrieve the locator name string via UUID
cmds.ls(u'60446AC7-4398-E3CB-4C27-6BA417626E41')[0] # Result: u'my_locator' #