如何使用Python在Maya中检查框架是否为关键框架?

问题描述 投票:0回答:1

我需要在Maya中遍历动画的每一帧,并创建两个数组,每个单帧中给定属性的值之一,仅在关键帧中创建一个值。问题是,我无法弄清楚如何使Maya在python中问“当前帧是否是此属性的关键帧”的问题。不过,我是通过MEL计算出来的,因此也许有人可以帮我转换它。

这是MEL中的循环:

global proc int keyExistsAtFrame(   int $frameNum,
                    string $object,
                    string $attribute)
{
    int $value;
    selectKey -clear;
    $value = `selectKey -add -k -t $frameNum ($object + "." + $attribute)`;

    if($value)
        return 1;
    else
        return 0;
}

for( $i=1; $i<120; ++$i )
{
    currentTime -edit $i;
    if (keyExistsAtFrame($i, "DD_headRoll_ctrl", "rotateZ"))
    {
        print "key exists at ";
        print $i;
        print "\n";
    }
}

如何将其实现到我的python脚本中?这是我当前在python中的草稿:

import maya.cmds as cmd

for i in range(int(cmd.playbackOptions(q=1, minTime = True)), int(cmd.playbackOptions(q=1, maxTime = True))):
    cmd.currentTime(i, e=1)
    iskey = cmd.selectKey(add = True, k = True, t = (i, i), attribute = "DD_headRoll_ctrl.rotateZ")
    #print iskey
    if iskey:
        print i
python python-2.7 maya mel
1个回答
0
投票

查找插头是否具有钥匙实际上比这要简单得多:

object = "pSphere1"
attr = "tx"

cmds.keyframe(object + "." + attr, q=True)

# Result: [5.0, 28.0, 46.0, 79.0] #

[cmds.keyframe将返回每个键处于打开状态的帧的列表。

© www.soinside.com 2019 - 2024. All rights reserved.