如果您知道您正在处理哪个对象和/或属性,您可以像这样获得时间:
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,你可以像这样得到 Driver 值的列表
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
注意:列表的顺序基于驱动程序的值。