1

伙计们!我的问题涉及我目前正在尝试解决的 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 的延迟时间移动,依此类推,等等。

对此的任何帮助将不胜感激。

谢谢, 乙

4

2 回答 2

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)

输出:

在此处输入图像描述

关键帧最初都是对齐的,但现在每帧都与前一个偏移了两帧。

于 2014-01-09T20:25:34.550 回答
1

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

你有这样的例外吗?

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

TypeError: 'list' object is not callable

你声称你有一个球体的“数组/列表”。如果sphereslistarray或几乎任何其他类型的集合),则使用[]运算符对其进行索引。()运算符用于函数调用,而不是索引。您尝试将其list作为函数调用,将其i作为参数传递,而不是尝试将其list作为序列访问,获取第ith 个元素。

要解决这个问题:

print spheres[i]
于 2014-01-09T20:22:34.590 回答