Maya 2018,python,移动和旋转提取

2024-10-01 19:29:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

下面的代码显示了问题。只需创建一个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)

Tags: 对象代码true参数moveoscmdsrotate
1条回答
网友
1楼 · 发布于 2024-10-01 19:29:06

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

如果需要另一个轴,则需要将其指定为参数。我不确定要旋转面围绕哪个中心,所以我只指定了(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就可以了。代码如下:

^{pr2}$

相关问题 更多 >

    热门问题