【问题标题】:How do I find the time of a particular keyframe using cmds.selectKey?如何使用 cmds.selectKey 找到特定关键帧的时间?
【发布时间】:2015-11-23 03:11:45
【问题描述】:

我正在尝试从键的 animCurve 节点(以下代码中的“lastKey”)中查找特别选择的键的时间。我可以使用以下方式选择我的密钥:

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

但是 cmds.selectKey 只返回所选键的数量。而且命令中似乎没有查询键索引时间的方法。

我尝试过使用 cmds.keyframe,但我的密钥不在特定属性上,它是 Set Driven Key。

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

“无”被返回。

【问题讨论】:

    标签: python animation maya


    【解决方案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,你可以像这样得到 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 2023-03-04
      • 2012-11-06
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多