Мне нужно циклически проходить через каждый кадр анимации в 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