如何在 Maya 中获取父级关节组 python

How can you get parent groups of joints in maya python

我有这样的层次结构:

root_ctrl
 group2
   group3
     joint

我想获取组的名称。

输出应该是['group2', 'group3']。 我试过使用

parents = cmds.listRelatives('joint', allParents = True )
output = []
parents = (cmds.ls('joint', long=True)[0].split('|')[1:-1])
print parents 

但是这个 returns [joint,group3,group2,root_ctrl]。 但我想要 [group3, group2] 作为输出。

如果我理解你的问题,这是一个解决方案。这是一个不太漂亮的解决方案,但它仍然有效。

hierarchy = cmds.ls('joint', long=True)[0]

def get_groups(hierarchy=None):
    nodes = [node for node in hierarchy.split('|') if node]
    return [x for x in nodes if cmds.listRelatives(x, shapes=True) is None and cmds.nodeType(x) == 'transform']

print(get_groups(hierarchy))