Render.ru

Вопрос по timeControl

Leontij

Пользователь сайта
Рейтинг
4
#1
По команде timeControl -query -rangeArray $gPlayBackSlider я могу узнать, выделенный диапазон кадров на time slider.

А можно ли, напротив, выделить диапазон кадров?
 

4i4ikov

Знаток
Рейтинг
37
#2
Последнее редактирование:

Leontij

Пользователь сайта
Рейтинг
4
#3
Сэнсей в 2005-м писал что нельзя
http://ewertb.soundlinker.com/mel/mel.027.php

АПИ или pуmel смотрели?
Уважаемый 4i4ikov, спасибо за ответ.

Конечно смотрел. Но не нашел. Есть класс MAnimControl, но он позволяет все, кроме того, что мне надо. Обычно, все, что можно сделать вручную, можно повторить скриптом или плагином, а здесь у меня осечка вышла. Обидно однако.
 

4i4ikov

Знаток
Рейтинг
37
#4
Думаю потому что смысла в этом мало, вот и нельзя.
Это чисто визуальный элемент, чтобы юзер увидел.
А все операции можно проделывать без выделения:

Двинули ключи
keyframe -e -iub false -an objects -t "8:14" -r -o move -tc 2

Удалили
cutKey -clear -iub false -an objects -t "10:16" -o keys

и тд.
 

Leontij

Пользователь сайта
Рейтинг
4
#5
Уважаемый 4i4ikov

Если говорить о перемещении-удалении ключей, то, согласен, смысла мало.

В скрипте shotView это выделение используется для определения, какой именно кусок таймлайна надо playblast-ить. Так вот, иногда на сложных сценах это выделение само собой слетает (на простых сценах этого не происходит). Была мысль это дело поправить, но не получается. Ну и ладно.
 

4i4ikov

Знаток
Рейтинг
37
#6
Глобальные переменные вставить туда и сохраняйте в них range

В этом куске:
Код:
float $rangeToBlast[] = `timeControl -q -ra $gPlayBackSlider`;

if ( $rangeToBlast[1] - $rangeToBlast[0] == 1 )
{
$startTime = `playbackOptions -q -min`;
$endTime = `playbackOptions -q -max`;
}
else
{
$startTime = $rangeToBlast[0];
$endTime = $rangeToBlast[1];
}
сделать
Код:
float $rangeToBlast[] = `timeControl -q -ra $gPlayBackSlider`;

if ( $rangeToBlast[1] - $rangeToBlast[0] == 1 )
{
  //$startTime, $endTime читаем из глобальных переменных
}
else
{
$startTime = $rangeToBlast[0];
$endTime = $rangeToBlast[1];
  // $startTime, $endTime сохраняем в глобальных переменных
}
если нужны
playbackOptions -q -min
playbackOptions -q -max
которых уже не будет после исправления,
то перед запуском два раза щелкать по таймлайну для полного выделения.
 

Leontij

Пользователь сайта
Рейтинг
4
#7
Уважаемвый 4i4ikov

Еще раз спасибо за ответ. Мне даже не удобно, что Вас отвлекаю.

Засада еще и в том, что командочка `timeControl -q -ra $gPlayBackSlider` на сложных сценах возвращает неправильные значения. Т.е. красный выделенный диапазон виден, он сильно меньше всего диапазона, а результат: {1, 2}. Поэтому скрипт считает весь таймлайн. Ну ничего, и этот глюк как-нибудь победим.
 

4i4ikov

Знаток
Рейтинг
37
#8
Уважаемвый 4i4ikov

Еще раз спасибо за ответ. Мне даже не удобно, что Вас отвлекаю.
Да хватит уже реверансы отвешивать))) если бы мне было не удобно, то я и не отвечал бы.



>Засада еще и в том, что командочка `timeControl -q -ra $gPlayBackSlider` на сложных сценах возвращает неправильные значения.

То есть если в скрипт эдиторе её одну выполнить, тоже не правильно покажет? Странная ошибка и не понятно причем тут сложность сцены.

+
проверить $gPlayBackSlider, может она меняется. По идеи она не должна меняться.
Попробовать из скрипта убрать $gPlayBackSlider в 582 строке, оставить только
global string $global_svStrings[], $sVrecentPlayBlast;

+
ну и глюк версии может быть. Проверить на старой майке.
 
Последнее редактирование:

Leontij

Пользователь сайта
Рейтинг
4
#9
Да хватит уже реверансы отвешивать))) если бы мне было не удобно, то я и не отвечал бы.
Ок. Ритуал исполнен.

>Засада еще и в том, что командочка `timeControl -q -ra $gPlayBackSlider` на сложных сценах возвращает неправильные значения.
В процедуре blastit скрипта shotView эта команда смотрит: выделен аниматором активный диапазон таймлайна или нет. Если выделен (т.е. разница между значениями != 1) то бластится часть сцены. Так вот, на таймлайне выделение есть, а команда возвразает например {1, 2}

В GraphEditor-е народ вроде бы этот инструмент не использует.

Что касается "ошибок скрипта в сложных сценах", то, ясное дело, это -- суеверие.

+ ну и глюк версии может быть. Проверить на старой майке.
Согласен, все может быть. Хе-хе... Но, чтобы не расстраиваться, лучше не проверять, работает скрипт в других версиях или нет. А если работает?

С уважением, Лео
 

Leontij

Пользователь сайта
Рейтинг
4
#10
Проблемма решилась (чтобы не сглазить -- временно решилась) так: timeControl вызывается первой командой в процедуре blastIt. Тогда все (пока что) работает правильно. Дело в том, что я в blastIt много чего добавил, поэтому и появился риск ошибки.
 
Сверху