Выбрать главу

      context.imageSizeX(160)

      context.imageSizeY(120)

      context.setImageType(Blender.Scene.Render.PNG)

      context.enableRGBAColor()

      context.alphaMode=2

Даже если мы рендерим простое неподвижное изображение, мы используем метод renderAnim() контекста рендера, поскольку иначе результаты рендерятся не в файл, а только в буфер. Следовательно, мы устанавливаем начальный и конечный кадры анимации в 1 (точно так же, как и текущий кадр), чтобы удостовериться, что мы генерируем простой одиночный кадр. Затем мы используем метод getFrameFilename(), чтобы получить имя файла (с полным путём) отрендеренного кадра (выделено). Далее мы одновременно сохраняем это имя файла и возвращаем его как результат:

      context.currentFrame(1)

      context.sFrame=1

      context.eFrame=1

      context.renderAnim()

      self.result=context.getFrameFilename()

      return self.result

Последняя часть скрипта определяет функцию run(), чтобы запустить сервер Captcha, и вызывает эту функцию, если скрипт выполняется автономно (то есть, если он не был импортирован как модуль). Определив функцию run() таким образом, мы можем изолировать часто используемые параметры сервера по умолчанию, как например, номер порта, который прослушивается (выделено), но допустимо повторное использование модуля, если потребовалась другая настройка:

def run(HandlerClass = CaptchaRequestHandler,

      ServerClass = BaseHTTPServer.HTTPServer,

      protocol="HTTP/1.1"):

      port = 8080

      server_address = ('', port)

      HandlerClass.protocol_version = protocol

      httpd = ServerClass(server_address, HandlerClass)

      httpd.serve_forever()

if __name__ == '__main__':

      run()

Полный код доступен как captcha.py в файле captcha.blend, и сервер можно запустить несколькими путями: из текстового редактора (с Alt + P), из меню Scripts | render | captcha, или запустив Блендер в фоновом режиме из командной строки. Чтобы остановить сервер снова, необходимо завершить Блендер. Обычно это можно сделать посредством нажатия Ctrl + C в консоли или в окне DOSbox.

Предупреждение

Заметьте, что этот сервер реагирует на чьи угодно запросы, а это далеко небезопасно. Как минимум он должен быть запущен через межсетевой экран, который ограничивает доступ к нему только для сервера, которому требуются вопросы Captcha. Прежде чем запускать его в любом месте, которое может быть доступно из Интернета, вы должны тщательно подумать о безопасности вашей сети!

Итог

В этой главе мы автоматизировали процесс рендера и узнали, как выполнять множество операций с изображениями без потребности во внешнем графическом редакторе. Мы изучили:

• Автоматизацию процесса рендера

• Создание множества видов для презентации продукта

• Создание билбордов из сложных объектов

• Манипуляцию изображениями, в том числе результатами рендера, используя библиотеку обработки изображений Python Imaging Library (PIL)

• Построение сервера, создающего изображения по-требованию, которые могут быть использованы как вопросы CAPTCHA

В последней главе мы взглянем на некоторые служебные задачи.

9

Расширение вашего инструментария

В этой главе мы будем меньше говорить о процессе рендера, и больше о том, как сделать жизнь легче для повседневного использования Блендера, расширяя его функциональность. Мы будем использовать некоторые внешние библиотеки, которые нужно будет установить, и в определенный момент скрипты Питона, возможно, станут немного труднее для чтения начинающими. Также, с точки зрения художника, это глава может быть не настолько визуально приятной, так как работу этих скриптов не представишь в виде симпатичных иллюстраций. Тем не менее, эти скрипты на самом деле добавляют полезную функциональность, особенно для разработчика скриптов, так что, пожалуйста, продолжайте читать.

В этой главе Вы узнаете как:

• Построить список активов, например, карты изображений, и заархивировать их

• Публиковать отрендеренное изображение автоматически через FTP

• Расширить функциональность встроенного редактора поиском с регулярными выражениями

• Ускорить вычисления, используя Psyco - компилятор-на-лету

• Добавить управление версиями к вашим скриптам с помощью Subversion