在具有动画子对象的父对象上冻结缩放变换(MAYA MEL/Python脚本)

在具有动画子对象的父对象上冻结缩放变换(MAYA MEL/Python脚本),python,parent-child,hierarchy,maya,mel,Python,Parent Child,Hierarchy,Maya,Mel,我有平移和旋转动画的对象层次,缩放xyz是相等的和静态的,但不是1。当我在父网格上冻结缩放时,它的子动画会变得疯狂。有没有办法防止这种情况发生 我已经找到了一个解决办法,但还不完美。假设我们有这样简单的设置: parentObject=>childObject 我将childObject放入一个组“childObjectGroup” 将childObjectGroup设置为世界的父对象,并将其变换归零(不包括比例) 将childObject的trasformations烘焙到世界上,这样我们就

我有平移和旋转动画的对象层次,缩放xyz是相等的和静态的,但不是1。当我在父网格上冻结缩放时,它的子动画会变得疯狂。有没有办法防止这种情况发生


我已经找到了一个解决办法,但还不完美。假设我们有这样简单的设置: parentObject=>childObject

  • 我将childObject放入一个组“childObjectGroup”
  • 将childObjectGroup设置为世界的父对象,并将其变换归零(不包括比例)
  • 将childObject的trasformations烘焙到世界上,这样我们就不再需要团队了。(找到了一个很好的脚本)
  • 冻结parentObject和childObject上的缩放变换
  • 把它们重新租回来

  • 它适用于这样的简单层次结构,但不确定如何将其应用于具有较深树和多个早午餐的更复杂层次结构。可能我遗漏了一些东西,有一个非常简单的解决方案。

    每当您更改父节点的比例时,其子节点的平移都会发生变化-至少,如果您使用世界空间单位进行测量。因此,在缩放为0.5的父对象下移动10个单位实际上将移动5个世界空间单位(例如)

    我很确定你们的旋转应该很好,因为比例并没有真正改变围绕轴心旋转的方式;但是,如果从不在对象中心的轴旋转某个对象,并且具有非均匀缩放(xyz不都相等),则挤压空间内的旋转将感觉更像一个椭圆形而不是圆形

    如果这不是一个问题,那么主要需要担心的是平移位置-基本上需要获得每个关键点处每个对象的世界空间位置,“修复”比例,然后遍历关键点并再次设置世界空间位置(我会使用
    xform
    命令,因为您可以使用世界空间值查询和设置位置)


    但是,如果比例不均匀,则可能无法以提供相同结果的方式计算旋转(仅取决于位置/轴和连续的后代位置/轴)。如果家长的比例实际上没有影响任何东西,也不应该设置关键帧/动画,则可以锁定并隐藏它,而不会产生任何负面影响。

    谢谢您的回答!幸运的是,比例的xyz是相等的。如果您认为我概述的解决方案可行,那么我想我需要提出一个关于如何存储家长-孩子hi的新问题erarchy dependency,然后我将所有内容分解并冻结缩放变换,然后以与以前相同的方式重新拆分。知道如何实现吗?当然可以-您可以将其存储在一个dict中,其中每个键都是父键,值是其子项的列表
    {parent_node1':['child1','child2'],'parent_node2':['child3',child4'}
    如果不知道层次结构的实际情况,就有点难以猜测。
    children=maya.cmds.listRelatives('parent_node',c=True)
    应该可以从每个父节点获得您所需的信息。您需要对多少个父节点执行此操作,并且是否需要递归执行此操作?请注意-我对您的新问题做出了回应。如果有任何帮助,请向上投票!您的评论可以被视为我最近打开的问题中的已接受答案!仍然有一个问题g我没有得到。我可以看到如何使用dict来存储1级层次结构,但如何处理更深层次的树?Root\u parent1\u child1\u child2\u孙子1\u parent2\u child3\u孙子2\u孙子1在示例键“parent\u node1”中有值“child1”和“child2”。如果child2中有孙子呢?理想情况下,我想编写一个脚本这可以处理不同的父子层次结构tnx供您使用@silent_sightHaha,我来不及给您一个关于我的问题=)谢谢。