【问题标题】:I want to freeze all my transforms but code is too long我想冻结我的所有转换,但代码太长
【发布时间】:2021-02-08 07:34:12
【问题描述】:

我正在尝试创建一个函数,该函数允许我将所有变换(缩放、旋转、平移)归零 我找到了一种在 python 中对其进行编码的方法,但它似乎有点过多的编码。我想知道是否有任何方法可以简化此代码?

# zero out transforms for 'pSphere1'
objName = 'pSphere1'
# set translate XYZ to 0
cmds.setAttr(objName + '.tx', 0)
cmds.setAttr(objName + '.ty', 0)
cmds.setAttr(objName + '.tz', 0)
# set rotate XYZ to 0
cmds.setAttr(objName + '.rx', 0)
cmds.setAttr(objName + '.ry', 0)
cmds.setAttr(objName + '.rz', 0)
# set scale XYZ to 1
cmds.setAttr(objName + '.sx', 1)
cmds.setAttr(objName + '.sy', 1)
cmds.setAttr(objName + '.sz', 1)

【问题讨论】:

    标签: python performance scripting maya simplify


    【解决方案1】:
    cmds.makeIdentity("pSphere1", apply=False, t=True, r=True, s=True)
    

    【讨论】:

      【解决方案2】:

      为了完整起见,作为对@haggi-krev 答案的补充,您可以使用xform 执行转换:

      cmds.xform('pSphere1', rotation=(0,0,0), translation=(0,0,0), scale=(1,1,1))
      

      您也可以像这样稍微缩写现有代码:

      cmds.setAttr('pSphere1.translate', 0, 0, 0)
      cmds.setAttr('pSphere1.rotate', 0, 0, 0)
      cmds.setAttr('pSphere1.scale', 1, 1, 1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-19
        • 2022-08-14
        • 1970-01-01
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多