尝试在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)
答案 0 :(得分:0)
在您的示例中,面部不是围绕其先前位置旋转,而是围绕对象枢轴旋转(您可以尝试在执行脚本之前移动对象枢轴并查看旋转中心更改)。
如果您想要另一个支点,您需要将其指定为参数。我不确定你想要旋转面部的中心,所以我只是指定了(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)