【问题标题】:Zeroed out joints values归零关节值
【发布时间】:2014-09-02 10:21:28
【问题描述】:

我的场景中有几个关节,我需要将其通道值归零,因为我将这些关节放入不同的网格(它们位于场景中的不同位置)

我知道我可以手动输入cmds.setAttr(joint01.translateX, '0') 等等以获取其他翻译以及旋转属性。 有没有其他方法可以在一两行内编译它(类似于冻结变换,尽管它不适用于关节)而不是写出 6 行?

ls = cmds.ls(type="joint")
for item in ls:
    cmds.setAttr(item + ".translateX",0)
    ...
    ...
    ...

编辑:我正在为创建带状脊柱创建单独的关节,因此想知道是否有任何其他更短的方法可以代替写出setAttr 的 3 个或更多句子

【问题讨论】:

    标签: python maya


    【解决方案1】:

    我想你想要cmds.makeIdentity。您可以指定将哪些属性归零。

    但是,请记住,这对几何和关节有不同的作用。在将变换值归零之前,它会更改几何体的顶点位置以反映移动、旋转和缩放;对于关节,它将旋转移动到 JointOrient 并重新定位子关节。

    【讨论】:

    • 嗨,如果我错了,请纠正我,但每当我在单个关节上使用冻结变换时,它只会将旋转值归零。我也尝试过使用 makeIdentity 命令,但它没有按预期工作,因为菜单?命令不起作用
    • 您不能将单个关节上的平移归零:如果关节是层次结构的根,它将保持其原始平移。如果它是一个子关节,它的平移将改变以补偿其上方关节的缩放和旋转。冻结几何图形时,实际顶点会移动以保留视觉外观;这对关节是不可能的。如果您确实需要关节中的 0-0-0 值,则需要在其上方插入一个新关节或变换以隐藏底层变换
    • 是的,我理解您的意思。也请原谅我,因为我意识到我在我的帖子中不清楚。实际上,在创建单独关节时,我并没有尝试将“父”或子关节归零,以丝带脊柱为例
    • 如果关节是单独的,将它们真正归零的唯一方法是在它们上方使用虚拟变换。您可以在重置变换之前通过移动地理来“归零”几何;对于仅使用额外的 JointOrient / RotateOrient 进行变换的关节,您不能这样做。如您发布的示例中那样将 tx、ty 和 tz 设置为零会将关节移动到原点
    • 我明白了...嗯,我想我会坚持使用setAttr 命令,然后我将“捕捉”关节到每个单独的毛囊上。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2020-06-14
    相关资源
    最近更新 更多