我已经使用maya超过5年了,现在我想开始使用python为我想要在Maya中执行的特定操作编写脚本。我确实有一些在JS中编写脚本的经验。
简要介绍一下我已经做过的事情:
我想使用python for循环在Maya中创建多个对象,以改变它们的位置或旋转。我在这方面做得很成功。
现在我想在Maya中按名称选择一个对象,并使用for循环复制它,旋转/移动/缩放。我遇到的问题是,当我复制目标对象时,我无法更改它的名称。
通常使用JS时,我只会使用"i“,并将其添加到循环'nameOfObject'+ i中的名称末尾
Python只允许名称是字符串,输入整数值会导致语法错误。
有没有办法执行此操作?
我的代码:
import maya.cmds as cmds
from random import randint
for i in range(0,50):
cmds.duplicate('solitude')
cmds.rotate(0,i*20,0)
它创建了50个相同的对象,但我需要选择新创建的对象,而不需要对整个对象进行硬编码。
发布于 2017-07-15 03:01:01
我认为这种类型的错误很常见,请尝试执行以下操作:
cmds.duplicate('solitude'+str(i))
发布于 2017-07-16 10:21:54
我知道你已经接受了一个答案,如果你在场景中没有几个重复的节点,那么使用迭代器编号和源节点的名称是可行的……
一个更“防弹”的解决方案是捕获duplicate命令返回到一个变量中的内容,然后使用该项目进行旋转。这样,就不需要构造副本的名称,因为无论maya决定为其命名什么,实际上都已具有该副本的名称。
如果这是您需要做的很多事情,您还可以在执行复制和旋转之前捕获您的选择以用作源节点。因此,您可以通过选择一个项目,然后运行代码来使用以下代码。
import maya.cmds as mc
src = mc.ls(sl=True)[0]
dup = src
for i in xrange(50):
dup = mc.duplicate(dup)[0]
mc.rotate(0,i*20,0, dup)
另外,还有一个小问题--你似乎没有在代码中使用randint
……你可能会在其他地方使用它,尽管...
https://stackoverflow.com/questions/45109839
复制相似问题