Maya 2018,python,移动和旋转提取的面
Maya 2018, python, move and rotate extracted face
尝试在 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)
在您的示例中,面部不是围绕其先前位置旋转,而是围绕对象枢轴旋转(您可以尝试在执行脚本之前移动对象枢轴并查看旋转中心的变化)。
如果您想要另一个枢轴,则需要将其指定为参数。我不确定你想围绕哪个中心旋转面所以我刚刚指定了 (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)
尝试在 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)
在您的示例中,面部不是围绕其先前位置旋转,而是围绕对象枢轴旋转(您可以尝试在执行脚本之前移动对象枢轴并查看旋转中心的变化)。
如果您想要另一个枢轴,则需要将其指定为参数。我不确定你想围绕哪个中心旋转面所以我刚刚指定了 (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)