【问题标题】:Maya 2018, python, move and rotate extracted faceMaya 2018,python,移动和旋转提取的面部
【发布时间】:2018-01-18 01:26:26
【问题描述】:

尝试在 Maya 中编写部分 Python 代码以从对象中提取面部,然后移动并旋转它。我尝试了 polyChipOff 本身的参数,尝试了 xform 以及移动和旋转功能。问题是一样的。如果旋转是在平移面相对于前一个位置而不是当前位置旋转之后。

我对某些概念的理解完全错误吗?

下面的代码显示了问题。只需创建一个 pCube 并启动脚本。从我的角度来看,这段代码应该背对着,然后绕着自己旋转很多次。相反,它会在一个圆中旋转,中心在移动命令之前面部所在的位置。

from maya import cmds    

face1 = 'pCube1.f[1]'
cmds.select(face1)
cmds.polyChipOff(dup=True)
cmds.move(2, 2, 0, r=True, os=True, dph=True)
cmds.rotate(0,0,10, a=True, os=True, dph=True)
for i in range (35):
    cmds.polyChipOff(dup=True)
    cmds.rotate(0,0,10, a=True, os=True, dph=True)

【问题讨论】:

    标签: python rotation maya


    【解决方案1】:

    在您的示例中,面部不是围绕其先前位置而是围绕对象枢轴旋转(您可以在执行脚本之前尝试移动对象枢轴并查看旋转中心的变化)。

    如果您想要另一个枢轴,则需要将其指定为参数。我不确定您要围绕哪个中心旋转面,所以我刚刚指定了 (2, 2, 0):

    from maya import cmds    
    
    face1 = 'pCube1.f[1]'
    cmds.select(face1)
    cmds.polyChipOff(duplicate=True)
    cmds.move(2, 2, 0, relative=True, objectSpace=True)
    rotation_pivot = [2, 2, 0]
    cmds.rotate(0, 0, 10, relative=True, pivot=rotation_pivot)
    for i in range (35):
        cmds.polyChipOff(duplicate=True)
        cmds.rotate(0, 0, 10, relative=True, pivot=rotation_pivot)
    

    更新: 如果您需要围绕自己的中心旋转面,那么就像您提到的那样,它只是 componentSpace=True 。所以代码看起来像这样:

    from maya import cmds    
    
    face1 = 'pCube1.f[1]'
    cmds.select(face1)
    cmds.polyChipOff(duplicate=True)
    cmds.move(2, 2, 0, relative=True, objectSpace=True)
    cmds.rotate(0, 0, 10, relative=True, componentSpace=True)
    for i in range (35):
        cmds.polyChipOff(duplicate=True)
        cmds.rotate(0, 0, 10, relative=True, componentSpace=True)
    

    【讨论】:

    • 是的。我尝试使用 cs 作为组件空间的参数。然而,问题是所有不同的移动命令(xform、move、polyChipOff)都不会将面的枢轴与面一起移动,因此组件的旋转中心保持在原来的位置。至少我是这样理解 Maya 的行为的。
    • 我找到了解决方案的一部分,新的 def 将枢轴对齐到面部 bbx 的中心。现在旋转按预期工作,但我仍然想更好地理解组件转换概念。单独移动支点对我来说似乎很奇怪。
    • 谢谢。有用。我确定我之前尝试过这个 cs 代码但它没有用。无论如何,非常感谢您的解决方案。
    猜你喜欢
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多