我试图从键中找到特别选择的键的时间' animCurve节点(" lastKey"在下面的代码中)。我可以使用以下方式选择我的密钥:
cmds.selectKey(lastKey, index=(1, 1))
但cmds.selectKey仅返回所选键的数量。并且看起来并不是查询密钥索引时间的一种方式。
我尝试过使用cmds.keyframe,但我的密钥不是特定属性,而是设置驱动密钥。
print cmds.keyframe(lastKey, index=(1,1), query=True)
"无"得到了回报。
答案 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
注意:列表的顺序取决于驱动程序的值。