Во-вторых, иногда Batch Render не может посчитать правильный результат, в то время как в окне Render View все считается, как нужно. Примером может служить наш построитель кривых или сцены, использующие expressions, которые создают новые объекты во время анимации. Если запустить их на просчет с неначального кадра, то результат рендеринга с помощью Batch Render будет непредсказуем.

Посмотрим, как можно быстро решить эту довольно экзотическую проблему с помощью MEL. Коль скоро на MEL можно повторить все действия, производимые пользователем через интерфейс, то наверняка несложно будет написать скрипт, выполняющий нужное количество раз следующую последовательность действий:

• Рендеринг текущего кадра с помощью меню Render=>Render Current Frame.

• Сохранение полученной картинки в окне Render View посредством File=>Save Image…

• Переход в следующий кадр.

Очевидно, что нужно просто «подглядеть», что какие команды MAYA использует для выполнения вышеуказанных действий. Для этого нужно включить в меню Script Editor «шпионский» режим отображения всех команд в ответ на действия пользователя: Seript=>Echo All Commands. Теперь просто выполняем нужные действия и определяем нужные команды.

Итак, рендерим картинку в окне: Render=> Render Current Frame. В Script Editor усматриваем и запоминаем команду:

RenderlntoNewWindow; Затем сохраняем картинку через меню окна Render View: File=>Save Image…

Задаем произвольное имя файла, например, renderTestl .iff.

Тип файла оставляем без изменения (Maya IFF), хотя можно задать и другие форматы изображений.

Нажав кнопку Save, обнаруживаем в Script Editor команду типа: renderWindowSavelmageCatlback "renderView”

“С:/Documents and Settings/Administrator/My Documents/maya/projects/default/images/renderTestl .iff” "image”; После небольшого эксперимента можно убедиться, что если не писать в этой команде полный путь к файлу, а ограничиться только его именем, картинка все равно будет сохраняться в папке images текущего проекта:

renderWindowSavelmageCallback “renderView” “renderTestl .iff” “image”; Впрочем, любители порядка и дисциплины могут е дальнейшем использовать имя файла с полным путем.

И, наконец, нажав кнопку перехода в следующий кадр, находим в Script Editor команду

playButtonStepForward; Теперь, используя сакральные знания о работе циклов, можно легко написать несложный скрипт, который последовательно отрендерит в окне Render View несколько кадров (например, десять, начиная с текущего) и сохранит их на диск в папку images текущего проекта.

int $i; int $N=10;

string $fname=’YenderTest”; for($i=0; $i<$N;$i++)

{

RenderlntoNewWindow;

renderWindowSavelmageCallback “renderView” ( $fname + $i + ".iff” } “image”; playButtonStepForward;

}

Самое «сложное» здесь - составить имя файла с номером, равным счетчику цикла, чтобы все картинки сохранялись со своими уникальными именами.

Запустив этот недлинный скрипт, вы должны увидеть, как, начиная с текущего кадра, в окне Render View просчитаются десять картинок, а анимация последовательно сдвинется на десять кадров. После этого в папке images вы можете обнаружить новые изображения.


⇐ вернуться назад | | далее ⇒