python和maya的联系_如何存储然后检索父子依存关系数据(Maya MEL/Python脚本)

如果您还没有使用python,我建议您使用python—您可以相互使用几乎任何数据类型,以便在单个数据结构中获得所需的内容。这将比创建一个长字符串并在以后再次断开它要容易得多。在

要收集层次结构数据:import maya.cmds as mc

def hierarchyTree(parent, tree):

children = mc.listRelatives(parent, c=True, type='transform')

if children:

tree[parent] = (children, {})

for child in children:

hierarchyTree(child, tree[parent][1])

top_node = 'name_of_node' # could also use mc.ls(sl=True)[0] if you want...

hierarchy_tree = {}

hierarchyTree(top_node, hierarchy_tree)

这基本上应该从你的顶部节点开始,递归地向下层次结构,以创建一个几乎类似于嵌套dicts的数据结构。。。每个键都是一个父节点,其键值是一个元组,该元组存储子节点的列表和子数据的dict。每个子dict遵循相同的格式-子对象是一个键,它的子数据在元组中,等等,等等,直到层次结构的末尾。因为dict是无序的,所以我用的是一个列表和一个dict的元组。。。这个列表基本上可以确保你按照它们来自的顺序对它们进行再父代,但是如果你真的不在乎保留顺序,你可以只存储dict。。。在

若要将其全部还原,请执行以下操作:

^{pr2}$

现在。。。我还没有测试过这段代码-在没有把它引入Maya的情况下就编写了它。我更关心re parent函数中突然出现的错误,因此您可能需要尝试一下/except,但希望它可以跳过任何空的dict项,让您接近您需要的in parenting/re parenting。这也假设所有节点都有唯一的短名称。。。在

哦,关于递归函数。。。确保它们会在某个点终止,否则你会陷入一个无限循环中(这应该很好,因为我们跟踪的层次结构有一个明确的结束-即:没有更多的子节点)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值