如何获取循环以影响每个单独的对象

时间:2014-01-09 20:16:28

标签: python for-loop increment maya autodesk

人们!我的问题涉及我正在尝试解决的Python练习(更具体地说,该程序是Autodesk Maya,但我使用的是Python编码)。练习涉及获取数组/列表中包含的多个对象(球体),然后使用增量变量使它们在偏移动画中移动。换句话说,我希望第一个球体移动,然后下一个球体在延迟的时间内移动,然后是下一个延迟更长时间的球体,等等。

我的代码如下:

    spheres = mc.ls(selection=True)
    count=0

    for i in range(len(spheres)):
        count+=2
        mc.selectKey(spheres)
        mc.keyframe(edit=True, relative=True, timeChange=count)
        print spheres(i)

球体是我的物体,正如我所说,我希望第一个球体在时间线上正常移动,然后下一个球体以延迟时间2移动,然后下一个球体以延迟时间4移动,等等。

非常感谢任何帮助。

谢谢, ë

2 个答案:

答案 0 :(得分:3)

您实际上并未在单个球体上设置关键帧;看起来你在所有领域设置它

您的for循环通常是错误的形式,但也没那么有用。尝试将其更改为:

spheres = mc.ls(selection=True)
count=0

for sphere in spheres:
    count += 2
    mc.selectKey(sphere) # only selecting the one sphere!
    mc.keyframe(edit=True, relative=True, timeChange=count)
    print sphere # no need to look up the element
                 # which by the way should have been [i] not (i)

输出:

enter image description here

关键帧最初都排成一行,但现在每个都偏移了两帧。

答案 1 :(得分:1)

你没有告诉我们问题是什么,但我有猜测。 (如果我猜错了,请详细说明你的问题,我会删除我的答案。)

你得到这样的例外吗?

TypeError                                 Traceback (most recent call last)
----> 1 print spheres(i)

TypeError: 'list' object is not callable

您声称自己拥有球体的“阵列/列表”。如果sphereslist(或array或几乎任何其他类型的集合),则使用[]运算符对其进行索引。 ()运算符用于函数调用,而不是索引。您试图将list称为函数,将其作为参数传递i,而不是尝试将list作为序列访问,获取{{1}元素。

修复它:

i