Для написания скриптов на языке Python в Blender уже имеется встроенный текстовый редактор. Однако по своим возможностям он значительно уступает специально разработанным для написания кода IDE. Во встроенном редакторе Blender отсутствует грамотный автокомплит, не очень удобная подсветка, нет возможности организовывать проекты – всех тех вещей, которые определяют скорость и легкость написания кода. Однако совсем не сложно для написания скриптов в Blender подключить и использовать внешнюю IDE.
На сегодня существует несколько IDE (интегрированная среда разработки) для языка Python. У каждой из них есть свою плюсы и минусы. В качестве примера подключения внешней IDE к Blender рассмотрим среду разработки PyCharm от компании JetBrains. Это достаточно мощная среда, обладающая всеми основными функциями, к тому же, у нее есть бесплатная Community версия, которая практически полностью перекрывает все обычные требования к такого рода программам.
-
- Скачать и установить на компьютер PyCharm
- Скачать дистрибутив с официального сайта: PyCharm Community Edition.
- Провести установку.
- Для работы PyCharm требуется установить отдельный интерпретатор языка Python. Его нужно скачать и установить на комьпютер.
- Скачать с официального сайта дистрибутив интерпретатора языка Python.
- Версию скачиваемого интерпретатора лучше всего выбирать ту же самую, которая используется в Blender.
- Чтобы узнать версию Python в Blender:
-
- В главном меню выбрать
- Help – Save System Info
- Указать, куда нужно сохранить файл с системной информацией о текущей версии Blender.
- Открыть сохраненный файл и в параграфе Python посмотреть номер используемой версии:
- Blender 2.77 использует Python 3.5.1
- В главном меню выбрать
-
- Чтобы узнать версию Python в Blender:
- Версию скачиваемого интерпретатора лучше всего выбирать ту же самую, которая используется в Blender.
- Провести установку.
- Скачать с официального сайта дистрибутив интерпретатора языка Python.
- Создать в PyCharm скрипт для использования в Blender
-
- Запустить PyCharm
- Создать новый проект
- Create New Project
- Указать месторасположение проекта и версию компилятора
-
-
- В поле Location выбрать место для размещения проекта. Например D:/Blender/motion_script.
- В поле Interpreter нужно указать интерпретатор Python.
-
-
- Нажатием правой кнопки мышки на имени проекта вызвать меню и создать новый файл для скрипта. Например motion_script.py.
-
- Скачать и установить на компьютер PyCharm
Файл для написания скрипта готов.
- Для того, чтобы в PyCharm правильно работал автокомплит Blender API, нужно экспортировать файлы с его описанием из Blender и подключить в созданный проект.
- Получение файлов для автокомплита
- Для версии Blender до 2.77
- Для экспорта файлов с описанием автокомплита можно воспользоваться следующей утилитой: pypredef_gen.
-
- В данном проекте нам нужен только один файл pypredef_gen.py, который лежит в директории python_api.
- Нужно скачать этот файл и сохранить его куда-нибудь в удобное место, например на диск D:/
- Для того, чтобы его запустить, создадим командный файл ppg.cmd, можно там же, на диске D:/ со следующим содержанием, заменив _BLENDER_PATH_ на полный путь к Blender (например он может быть таким: %ProgramFiles%\blender_2.77, но обязательно укажите свой):
1"_BLENDER_PATH_\blender.exe" -b -P "d:/pypredef_gen.py" -
- Запустить созданный командный файл ppg.cmd
- После выполнения, там же где размещался файл pypredef_gen.py (в примере на диске D:/) будет создана директория pypredef с файлами, описывающими структуру Blender API. Сохранить ее в какое-нибудь удобное место.
- Для экспорта файлов с описанием автокомплита можно воспользоваться следующей утилитой: pypredef_gen.
- Для версии Blender 2.79, 2.80 и выше
- Готовая версия файлов автокомплита, которую можно скачать с GitHub: https://github.com/Korchy/blender_autocomplete
- Для версии Blender до 2.77
- Подключение файлов для автокомплита в PyCharm.
- Файлы автокомплита можно подключить сразу для всех проектов (делается один раз, но минус в том, что в этом случае они будут использоваться даже в проектах, не связанных с Blender) или же к каждому новому конкретному проекту.
- Для единоразового подключения ко всем проектам (к текущему и создаваемым в будущем):
- В главном меню PyCharm выбрать: File – Settings
- Project: Имя текущего проекта – Project Interpreter
- Нажать на шестеренку в правом верхнем углу – More
- Нажать Show Paths For The Selected Interpreter
- Нажать плюсик и выбрать директорию с файлами автокомплита.
- Обратите, внимание, в PyCharm c версии 2020.3 путь к файлам автокомплита можно указать через отдельный пункт меню: Settings – Apperance & Begavior – Path Variables.
- Для подключения только к текущему проекту:
- В главном меню PyCharm выбрать: File – Settings
- Project: Имя текущего проекта – Project Structure
- Нажать Add Content Root и выбрать директорию с файлами автокомплита.
- Получение файлов для автокомплита
После выполнения этих действий автокомплит Blender API будет работать в проекте PyCharm.
- Открыть Blender
- Открыть текстовый редактор
- Нажатием на кнопку New создать новый файл
- Вставить в него следующий текст, заменив _PATH_ на путь к файлу со скриптом п. 3.3.1. (в данном примере это D:/Blender/motion_script) и _FILE_NAME_ на название файла со скриптом п. 3.3.4. (в данном примере это motion_script).
- Нажатием на кнопку New создать новый файл
- Открыть текстовый редактор
1 2 3 4 5 |
import bpy import os filename = os.path.join("_PATH_", "_FILE_NAME_.py") exec(compile(open(filename).read(), filename, 'exec')) |
Все готово. Можно переключиться в IDE PyCharm, пользуясь всеми преимуществами системы, написать в созданном файле нужные команды для выполнения скрипта, после чего вернувшись в окно Blender просто нажать на кнопку Run Script и скрипт будет выполнен.
Файл Blender с этим текстом можно сохранить как шаблонный и пользоваться им одним для написания любых скриптов.
Бонус с примером:
Для примера введем в файл скрипта в открытом окне PyCharm следующие команды:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
bpy.ops.mesh.primitive_cube_add(location=(0,0,0)) Obj = bpy.context.active_object mod = Obj.modifiers.new("Bevel", 'BEVEL') mod.segments = 3 bpy.ops.object.shade_smooth() mod1 = Obj.modifiers.new("Array", 'ARRAY') mod1.count=20 mod2 = Obj.modifiers.new("Array", 'ARRAY') mod2.relative_offset_displace[0]=0 mod2.relative_offset_displace[1]=1 mod2.count=20 bpy.ops.object.modifier_apply(apply_as='DATA', modifier="Array.001") bpy.ops.object.modifier_apply(apply_as='DATA', modifier="Array") bpy.ops.object.editmode_toggle() bpy.ops.mesh.separate(type="LOOSE") bpy.ops.object.editmode_toggle() bpy.ops.object.randomize_transform(loc=(0, 0, 1)) |
Этот скрипт создает куб, добавляет на него фаску, размножает его на поле 20х20 кубов и в случайном порядке приподнимает каждый из них вертикально на высоту в пределах 1. В результате получается модный технологичный “бекграунд” с кубиками. Остается назначить материал и выставить освещение. И можно запускать рендер.
Спасибо за подробную инструкцию.
Хорошего кодинга!