Maya查找对象是否已实例化?

时间:2016-02-23 10:33:39

标签: python maya

在Maya中,有没有办法通过脚本来查明某个对象是否是一个实例?到目前为止我尝试的每一个技巧都不起作用。谢谢!

2 个答案:

答案 0 :(得分:5)

来自source

# Python code
import maya.OpenMaya as om

def getInstances():
    instances = []
    iterDag = om.MItDag(om.MItDag.kBreadthFirst)
    while not iterDag.isDone():
        instanced = om.MItDag.isInstanced(iterDag)
        if instanced:
            instances.append(iterDag.fullPathName())
        iterDag.next()
    return instances

修改

我刚刚意识到我并没有真正回答你的问题而只是在Maya场景中给你所有的实例。

以下是您可以用来检查节点是否是实例的其他代码:

def pathToDagNode( fullPath ):
    if not cmds.objExists(fullPath):
        return None
    else:
        selectionList = om.MSelectionList()
        selectionList.add( fullPath )
        dagPath = om.MDagPath()
        selectionList.getDagPath( 0, dagPath )
        return dagPath

dag_node = pathToDagNode( '|your|node|full|path' )
print dag_node.isInstanced()

答案 1 :(得分:3)

脚本中的

def is_instanced(shape):
    return len (cmds.listRelatives(shape, ap=True) or []) > 1

如果你有变换:

def is_instanced_xform(xform):
    shape = cmds.listRelatives(xform, s=True)
    if not shape: 
       return False
    return len (cmds.listRelatives(shape, ap=True) or []) > 1