如何存储然后检索父子依赖性数据(Maya MEL/Python 脚本)

2024-03-04

我有一个需要的层次结构:

  1. 分开
  2. 做一点事()
  3. 按照以前的方式将其重新组装起来。

我确实知道如何打破事物,并且对当层次结构扁平时我需要做什么有计划。问题是我如何养育他们?


Details

这与我之前的问题有关:

冻结带有动画子对象的父对象的缩放变换(MAYA MEL/Python 脚本) https://stackoverflow.com/q/45757754/8483714

我需要冻结层次结构中所有节点上的比例变换。问题是节点上有平移动画,如果我尝试冻结父节点上的缩放,它的子动画会变得很奇怪。 不过,看起来有一个解决方案,但我需要帮助来实施它。 我想要:

  1. 对每个对象进行分组
  2. 让每个群体走向世界
  3. 将动画烘焙到世界空间(摆脱组节点)
  4. 冻结尺度变换
  5. 重新养育他们

当我手动执行时它可以工作,所以一切都应该没问题。但如果您认为有更好的方法来实现我的主要目标,请告诉我。

所以,我一直在考虑将所有节点写入一个字符串并从那里调用它们,但我不知道如何处理分支。 例如: 如果它是一个无分支的层次结构(一直有一个父级和一个子级),我可以轻松地用两个和父级来调用它们。 但是分支使字符串中的名称像“父母,孩子,孩子,孩子,父母......”

可能是我想太多,方向错误。有任何想法吗?


如果你还没有使用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)

这基本上应该从你的顶部节点开始,并递归地沿着层次结构创建一个几乎像嵌套字典的数据结构...每个键都是一个父节点,它的键值是一个存储子列表和字典的元组儿童数据。每个子字典都遵循相同的格式 - 子字典是一个键,其子数据位于元组中,等等,直到层次结构的末尾。我使用带有列表和字典的元组,因为字典是无序的...该列表基本上将确保您按照它们来自的顺序重新设置它们的父级,但如果您真的不这样做,您可以只存储字典关心保留订单...

要将其全部恢复,您将执行以下操作:

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

reparent(hierarchy_tree)

现在...我还没有测试过这段代码 - 有点是即时编写的,没有将其引入 Maya。我更担心在重新父函数中弹出的错误,因此您可能需要在那里进行尝试/例外,但希望它会跳过任何空的字典项目并让您接近所需的内容 -养育/重新养育。这还假设您的所有节点都有唯一的短名称......

哦,关于递归函数的注意事项...确保它们会在某个时刻终止,否则您可能会陷入无限循环(这应该没问题,因为我们正在跟踪具有明确终点的层次结构 - 即:没有更多子节点)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何存储然后检索父子依赖性数据(Maya MEL/Python 脚本) 的相关文章

  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 如何计算 pandas datetime 对象的均值和方差?

    如何计算 YYYY MM DD 形式的 python 日期时间对象的汇总统计数据 均值和标准差 我想对具有不同 ID 的不同日期时间对象组执行此操作 数据如下 import datetime as dt df pd DataFrame Da
  • 如何传递架构以从现有数据帧创建新数据帧?

    要将 schema 传递到 json 文件 我们这样做 from pyspark sql types import StructField StringType StructType IntegerType data schema Stru
  • Pandas set_levels,如何避免标签排序?

    我使用时遇到问题set levels多索引 from io import StringIO txt Name Height Age Metres A 1 25 B 95 1 df pd read csv StringIO txt heade
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有

随机推荐

  • 在密码框的某些事件中显示密码字符

    我正在开发一个 Windows Phone 应用程序 我要求用户登录 在登录页面上 用户必须输入密码 现在我想要的是给用户一个复选框 选择该复选框后应显示密码的字符 我没有在密码框中看到任何显示密码字符的属性 请建议一些方法来做到这一点 不
  • 调试和分析网络工作者

    我正在运行计算 例如网络工作者的寻路 这可能需要几秒钟 我想优化它 对于我当前的代码来说 Chrome 似乎快了大约 3 倍 但是时间花在哪里或者为什么我不知道 一般来说 如何调试 Web Worker 如何分析网络工作者 火狐和 Chro
  • 使用 jQuery 隐藏跨度

    即使已经嵌入图像 如果没有文本 如何隐藏跨度 基本上每个跨度中都嵌入了很少的网页图标和视频图标 访问网站 webicon 查看视频 videoicon 因此 如果 没有链接文本 嵌入WEBICON 包括图像图标在内的整个内容都应该隐藏 di
  • 如何让 Backbone.ajax 返回成功数据

    我试图让 Backbone ajax 返回集合 集合 我需要程序的另一部分的模型 我想让数据在与 ajax 方法相同的级别上可用 Backbone ajax dataType jsonp url https api twitter com
  • 如何通过字符串或整数获取枚举值

    如果我有枚举字符串或枚举 int 值 如何获取枚举值 例如 如果我有一个枚举如下 public enum TestEnum Value1 1 Value2 2 Value3 3 在某些字符串变量中 我的值 value1 如下 string
  • 我想找到线程消息并使用 slack-api 删除它

    可以通过以下方法找到私信或私信im history and converstation history 如何查找话题消息 我想找到线程消息并删除它们 查找话题消息 您需要使用conversations history https api s
  • jQuery 验证插件 - 如何在页面加载时显示标签

    填写输入后 该插件会插入一个标签 但是我希望在页面加载时插入所有标签 任何想法都会很棒 谢谢 该插件的链接在这里 http jqueryvalidation org documentation http jqueryvalidation o
  • 如何计算列表中点的距离?

    我有两组列表 A 和 O 它们都有来自 x y z 坐标的点 我想计算A点和B点之间的距离 我使用了for循环 但它只给了我一个结果 它应该从结果中给出 8 个数字 我很感激有人能看一下 这是我的项目的最后一步 Ax 232 34 233
  • 如何设置 Eclipse 工作区机制来共享设置?

    我该如何配置这个工具 我已经在 Eclipse 环境中设置了首选项 底部图标显示工作区机制正常 但是 当我打开工作区或创建新工作区时 没有任何反应 没有任何首选项 如何设置工作区机制 以及如何告诉工作区使用另一个工作区的设置 默认情况下 工
  • 在面向对象编程中,null 的最佳替代方案是什么?

    我觉得不满意在面向对象编程中 有其他解决方案吗 我不喜欢避免它this way http en wikipedia org wiki Null Object pattern either 最好的处理方法是什么 Java 8 有新的Optio
  • 在 Rails 中使用部分的最佳实践

    为了与 DRY 原则保持一致 当我重复某个特定模式超过一两次时 我会尝试使用部分模式 结果 我的一些观点由十个或更多不同的部分组成 我担心这可能会对整体表现产生负面影响 一些编程书籍将部分的使用与方法的使用进行比较 那么我应该使用相同的理由
  • 应用 CSS3 缩放时可排序行为错误

    我正在使用 CSS 转换缩放 JQuery 可排序元素 拖动时可排序项目的起始位置和偏移量都是错误的 因为 JQuery 不考虑 CSS 比例 我用这里找到的代码部分解决了这个问题 jQuery 拖动 使用 CSS 变换比例调整大小 htt
  • JSF2.0的宽度如何设置?

    代码 div div
  • 单个查询中多个日期范围的总和?

    我有以下查询 SELECT SUM balance transactions fee AS sum id FROM balance transactions JOIN charges ON balance transactions sour
  • Objective-C 插件架构安全性(Mac,不是 iPhone)

    我可能正在为 Cocoa 应用程序 Mac 而不是 iPhone 编写一个插件系统 一种常见的方法是将每个插件打包为一个包 然后将该包注入到主应用程序中 我担心这样做的安全隐患 因为捆绑包将具有对 Objective C 运行时的完全访问权
  • 查找数组中的最小值[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有两个数组 int playerSums 9 string playerNames 9 我正在尝试获取最小值在数组中p
  • 网站的 A/B 测试是什么意思?

    请解释 举例 网站 A B 测试的含义 在网站上下文中 这意味着该网站 网络应用程序的某些用户获得slightly修改版本 并验证与基线 控制 版本相比 每个修改如何影响可用性 用户行为 与往常一样 A B 测试是一种统计技术 您需要足够大
  • 使用哪些 C# AES 加密选项以便可以在公共网站上解密结果? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想使用类似于下面的代码来加密字符串 并能够使用公开网站 例如其中一个网站 对其进行解密 但也对其他一些网站开放 htt
  • 用户窗体工具箱附加控件对话窗口未显示

    在使用 MS Excel 显然还有 Outlook Word 或 Power Point 时 我创建了一个用户表单 工具箱显示控件选项卡和代表各种控件的 16 个图标 当我右键单击工具箱控制区域中的某个空白区域时 会出现一个菜单 其中在顶部
  • 如何存储然后检索父子依赖性数据(Maya MEL/Python 脚本)

    我有一个需要的层次结构 分开 做一点事 按照以前的方式将其重新组装起来 我确实知道如何打破事物 并且对当层次结构扁平时我需要做什么有计划 问题是我如何养育他们 Details 这与我之前的问题有关 冻结带有动画子对象的父对象的缩放变换 MA