如何使用cmds.selectKey查找特定关键帧的时间?

时间:2015-11-23 03:11:45

标签: python animation maya

我试图从键中找到特别选择的键的时间' animCurve节点(" lastKey"在下面的代码中)。我可以使用以下方式选择我的密钥:

cmds.selectKey(lastKey, index=(1, 1))

但cmds.selectKey仅返回所选键的数量。并且看起来并不是查询密钥索引时间的一种方式。

我尝试过使用cmds.keyframe,但我的密钥不是特定属性,而是设置驱动密钥。

print cmds.keyframe(lastKey, index=(1,1), query=True)

"无"得到了回报。

1 个答案:

答案 0 :(得分:1)

如果你知道你正在使用哪个对象和/或属性,你可以得到这样的时间:

import maya.cmds as cmds

# Get index value of last key
keyIndex = (cmds.keyframe("myObject.attribute", indexValue=True, q=True))[-1]

# Get time of key index
keyFrame = cmds.keyframe("myObject.attribute", q=True, index=(1, keyIndex))

这有用吗? cmds.keyframe()返回查询关键帧的时间值列表。

一种更简单的方法可能是简单查询lastKey的关键帧,然后取出列表中的最后一个元素,就像这样

import maya.cmds as cmds
keyFrame = (cmds.keyFrame("myAnimCurve", q=True))[-1]

这假设lastKey只附加了一个animCurve。否则列表会更乱。


编辑驱动密钥

我刚刚注意到有关Driven Key的信息。如果以下不是您正在寻找的内容,您能否详细说明一下您的问题?

如果你有animCurve,你可以获得驱动程序值的列表,如此

driverKeys = cmds.keyframe("myAnimCurve", q=True, floatChange=True)

同样,您可以获得驱动值的列表,例如

drivenKeys = cmds.keyframe("myAnimCurve", q=True, valueChange=True)

最后,您可以使用[-1]

简单地获取列表中的最后一个元素
print(driverKeys[-1])  # return time of last driven keyframe
print(drivenKeys[-1])  # return value at last driven keyframe

注意:列表的顺序取决于驱动程序的值。