• Как распространять скрипт
С таким количеством пунктов кажется нужно очень много изучить, но к счастью, кривая обучения не такая уж крутая, как она могла бы показаться. Давайте просто по-быстрому наберём несколько строк на Питоне, чтобы разместить простой объект в нашей сцене Блендера, просто, чтобы показать что мы можем, перед тем, как мы уйдём с головой в более глубокие воды.
1. Запустите Блендер с пустой сценой
2. Откройте интерактивную консоль Питона (посмотрите на скриншот вверху, чтобы увидеть, где её найти).
3. Наберите следующие строки (заканчивайте каждую с помощью Enter/Return).
mesh = Mesh.Primitives.Monkey()
Scene.GetCurrent().objects.new(mesh,'Suzanne')
Window.RedrawAll()
Вуаля! Это - все, что нужно для добавления в сцену Сюзанны, знаменитого талисмана Блендера.
API Блендера
Почти всё в Блендере доступно из скриптов Питона, но есть некоторые исключения и ограничения. В этом разделе мы проиллюстрируем, что это в точности означает, и какие заметные возможности не доступны через Питон (например, динамика жидкостей).
API Блендера состоит из трех основных областей интереса:
• Доступ к объектам Блендера и их свойствам, например объект Camera (Камера) и его свойство angle (угол) или объект Scene (Сцена) и его свойство objects (объекты)
• Доступ к операциям для выполнения, например добавление новой Камеры или рендеринг изображения
• Доступ к графическому интерфейсу пользователя, используя простое построение из блоков или взаимодействие с системой событий Блендера
Есть также несколько утилит, которые не попали ни в одну из этих категорий, так как они касаются абстракций, не имеющих прямого отношения к объектам Блендера, видимым конечному пользователю, например функции, манипулирующие векторами и матрицами.
В совокупности это означает, что мы можем достичь многого из скриптов на Питоне. Мы можем:
• Создавать новый объект Блендера любого типа, включая камеры, лампы, меши, и даже сцены
• Взаимодействовать с пользователем с помощью графического интерфейса
• Автоматизировать общие задачи в Блендере, такие как, рендеринг
• Автоматизировать задачи поддержки вне Блендера, как, например, очистка каталогов
• Манипулировать любым свойством объекта Блендера, на который можно воздействовать с помощью API
Это последнее утверждение показывает одну из текущих слабостей API Блендера: любое свойство объекта, который разработчики добавляют Блендер в коде на С, должна предусматриваться отдельно в API на Питоне. Нет автоматического преобразования из внутренних структур в доступного на Питоне интерфейса, а это означает, что усилия должны дублироваться и это может привести к пропущенной функциональности. Например, в Блендере 2.49 невозможно задавать моделирование жидкостей из скриптов. Хотя возможно настроить систему частиц, нет возможности установить поведенческие характеристики системы частиц boids.
Другая проблема API Питона 2.49 - то, что многие из действий пользователя, которые можно выбрать для выполнения над объектом, не имеют эквивалента в API. Настройка простых параметров, как например, угла камеры или выполнение вращения любого объекта является легким и даже, например, применение модификатора subsurface к мешу - просто несколько строк кода, но обыкновенные действия, особенно над меш объектами, как например, подразделение выбранных рёбер или выдавливание граней, отсутствуют в API и должны быть осуществлены разработчиком скрипта.
Эти проблемы заставили разработчиков Блендера полностью переработать API Питона Блендера для версии 2.5, уделяя особое внимание паритету (то есть, все возможное в Блендере должно быть возможно, используя API Питона). Это означает, что во многих ситуациях, должно быть значительно легче будет получить те же результаты в Блендере 2.5.
Наконец, Питон используется в большем количестве мест, чем просто в автономных скриптах: PyDrivers и PyConstraints позволяют нам управлять путём, которым ведут себя объекты Блендера, и мы столкнемся с ними в последующих главах. Питон также позволяет нам писать заказные текстуры и шейдеры как часть системы нодов, что мы увидим в Главе 7, Создание заказных шейдеров и текстур.
Также, важно иметь в виду, что Питон предлагает нам значительно больше, чем просто инструменты (уже впечатляющие), для автоматизации всех видов задач в Блендере. Питон является общим языком программирования с включенной расширенной библиотекой, так что мы не обязаны прибегать ко внешним инструментам для общесистемных задач, таких, как например, копирование файлов или архивации каталога. Даже сетевые задачи могут быть весьма легко реализованы, что доказывает множество предоставляемых рендер-ферм.