栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何存储然后获取父子依赖项数据(Maya MEL / Python脚本)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何存储然后获取父子依赖项数据(Maya MEL / Python脚本)

如果您还没有的话,我建议您使用python-
您可以相互使用几乎任何数据类型,以在单个数据结构中获得所需的数据。这将比创建一个长字符串并稍后再将其重新分配容易得多。

收集层次结构数据:

import maya.cmds as mcdef 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)

这基本上应该从您的顶部节点开始,然后递归地向下层次结构创建一个类似于嵌套字典的数据结构…每个键都是父节点,其键值是一个存储子项列表和儿童数据。每个子dict遵循相同的格式-
子是键,其子数据在元组等中,等等,等等,直到层次结构的末尾。我正在使用具有列表和字典的元组,因为字典是无序的…列表基本上可以确保您按照它们来自的顺序重新父它们,但是如果您不是真的,可以只存储字典关心保留订单…

要将其作为父项,您将执行以下操作:

def reparent(tree):    for parent, data in tree.iteritems():        children, child_tree = data        mc.parent(children, parent)        reparent(child_tree)reparent(hierarchy_tree)

现在…我还没有测试过此代码-无需将其带入Maya即可即时编写。我更担心re-
parent函数中会弹出错误,因此您可能需要在其中尝试/例外,但希望它会跳过所有空的dict项,并使您接近需要输入的内容。育儿/重新育儿。这也假设您所有节点都有唯一的短名称…

哦,关于递归函数的说明…请确保它们会在某个时刻终止,否则您可能会陷入无限循环中(这很好,因为我们正在跟踪具有确定末端的层次结构,即:否更多子节点)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611553.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号