Как удалить объект через Blender Python API

Для того, чтобы удалить объект из сцены Blender средствами Python API нужно выполнить следующие действия:

Откроем окно текстового редактора “Text Editor”.

Читать далее «Как удалить объект через Blender Python API»

Как вывести все имеющиеся ноды

Получить все доступные шейдерные ноды в виде списка можно по их типу.

Для начала, добавим в сцену любой объект, например – куб, создадим для него материал и удалим из него все ноды. Сюда, в этот материал, мы выведем все имеющиеся в Blender ноды шейдеров.

Читать далее «Как вывести все имеющиеся ноды»

Как просмотреть список добавленных в заголовок окна операторов

Для добавления оператора в заголовок (header) окна используются функции append и prepend в которых параметром нужно указать функцию отрисовки кнопки вызова оператора.

Например, чтобы добавить в заголовок окна вьюпорта (3D View) кнопку вызова оператора добавления в сцену куба, нужно определить функцию отрисовки оператора:

и добавить ее в заголовок окна:

Кнопка с оператором добавления куба в сцену появится в заголовке окна вьюпорта.

Просмотреть список всех функций, добавляющий операторы в заголовок окна можно с помощью свойства _draw_funcs метода draw.

Обратите внимание, что свойство _draw_funcs определяется в методе draw только если в него добавлены пользовательские операторы. Если пользовательские операторы не в заголовок не добавлялись, будет выдана ошибка

AttributeError: ‘function’ object has no attribute ‘_draw_funcs’

Как создать камеру с помощью Blender Python API

Для того, чтобы создать и добавить в сцену камеру при помощи Blender Python API нужно:

1. Создать блок данных для камеры.

2. Создать объект и связать его с созданным блоком данных.

3. Поместить созданный объект в сцену.

Камера будет помещена в текущую сцену в ее главную коллекцию.

Финальный код:

Как добавить объект из другого blend-файла в сцену с помощью Blender Python API

Blender Python API предоставляет возможность добавления или линковки объектов из других *.blend файлов в сцену при помощи оператора append.

Для того, чтобы добавить (append) объект (например – меш) из другого blend-файла нужно:

Читать далее «Как добавить объект из другого blend-файла в сцену с помощью Blender Python API»

Автокомплит для Blender 2.90

Обновление fake-bpy-modules – модулей автокомплита Blender Python API от Nutti. Добавлена ветка для Blender 2.90.

Последний релиз от 12.08.2020

GitHub автора: https://github.com/nutti/fake-bpy-module

Файлы отдельно (без установки через pip) https://github.com/Korchy/blender_autocomplete

Использование браузера файлов FileBrowser для открытия и сохранения файлов

В скриптах и аддонах импорта-экспорта форматов, не поддерживаемых в Blender по умолчанию, пользователю необходимо предоставить возможность выбора файлов при помощи браузера файлов “FileBrowser”.

Для того, чтобы открыть браузер файлов, а после указания пользователем необходимых файлов, получить путь к ним, нужно использовать классы ImportHelper и ExportHelper.

Читать далее «Использование браузера файлов FileBrowser для открытия и сохранения файлов»

Создание меша через Python API

Для того, чтобы создать объект в сцене Blender средствами Python API нужно выполнить следующие действия:

Откройте окно текстового редактора “Text Editor”.

Читать далее «Создание меша через Python API»

Как установить нужные пакеты через pip в Blender

При разработке аддонов иногда необходимо использовать пакеты, не входящие в базовый набор Python-интерпретатора Blender. Чаще всего нужные пакеты входят в в Python Package Index (PyPI) и могут быть установлены в Blender через систему управления пакетами Pip.

Менеджер пакетов Pip изначально уже установлен в Blender. Однако Blender не позволяет вызвать команду установки нужного пакета обычным способом “pip install имя_пакета”.

Читать далее «Как установить нужные пакеты через pip в Blender»

fake-bpy-modules для Blender 2.83

Обновление модулей автокомплита Blender Python API от Nutti – добавлена ветка для Blender 2.83.

Последний релиз от 2020.07.24.

GitHub автора: https://github.com/nutti/fake-bpy-module

Файлы отдельно (без установки через pip) https://github.com/Korchy/blender_autocomplete

Создание собственного аддона с помощью аддона NodeTree Source

Пример использования аддона NodeTree Source для создания отдельного аддона, который сам строит сложные нодовые деревья.

Аддон Blender: NodeTree Source

Аддон Blender для конвертации нодов материалов в исходный код на python и сохранения его в библиотеке.

Gumroad

Читать далее «Аддон Blender: NodeTree Source»

Как повернуть объект в Blender Python API

Для управления поворотом объекта служит свойство “rotation_euler”. Оно представляет собой список из трех значений, каждое из которых соответствует повороту вокруг координатных осей в радианах. В rotation_euler[0] хранится поворот вокруг оси X, в rotation_euler[1] – вокруг оси Y и в rotation_euler[2] – вокруг оси Z. Для того, чтобы повернуть объект вдоль нужной оси на нужный угол, нужно задать значение поворота в радианах в соответствующем нужной оси поле rotation_euler.

Например, чтобы повернуть активный объект вокруг оси X на 90 градусов, нужно выполнить следующий код:

math.radians удобно использовать для преобразования угла из градусов в радианы.

Как переключать flat – smooth шейдинг через Blender Python API

Режим отображения flat/smoot моделей регулируется через свойство “use_smooth” для каждого полигона модели.

Для того, чтобы включить режим сглаженного (smooth) отображения полигонов, нужно для каждого полигона установить свойство “use_smooth” равным True.

Для активного объекта:

Чтобы установить режим отображения флэт (flat) – для каждого полигона нужно установить “use_smooth” равным False.

Чтобы изменение отобразилось на экране, нужно вызвать обновление данных объекта.

Переключение на вид из камеры через Python API

Для переключения к виду из камеры нужно выполнить следующую команду:

Данный оператор работает в режиме “тоггл”, поэтому его повторное выполнение вернет вид в окне к предыдущему состоянию.

Читать далее «Переключение на вид из камеры через Python API»

Преобразование между системами координат

Для того, чтобы перейти из глобальной системы координат в локальную систему координат объекта нужно умножить глобальные координаты на инвертированную матрицу объекта:

Для того, чтобы перейти из локальной системы координат объекта в глобальную систему координат нужно умножить локальные координаты на матрицу объекта:

Ссылки на объекты ломаются при использовании отмены ctrl+z

В линейке Blender 2.8x система отмены операций undo/redo (ctrl+z / ctrl+shift+z) была полностью переделана по сравнению с линейкой 2.7x. Одним из результатов такого изменения API является то, что при выполнении операции отмены все объекты в сцене перестраиваются заново – текущий объект уничтожается, а вместо него создается совершенно новый объект. Ссылки, которые указывали на старый объект, до выполнения операции отмены, после нее указывают на невалидный объект с которым больше нельзя работать.

Читать далее «Ссылки на объекты ломаются при использовании отмены ctrl+z»

Куда пропало автозавершение кода в python-консоли Blender 2.82

В Blender 2.81 и более ранних версиях в python-консоли можно было просмотреть возможные варианты завершения набираемого кода, нажав “ctrl + пробел”. В Blender 2.82 эта возможность исчезла.

На самом деле этот функционал в 2.82 не удален, его просто перенесли на нажатие клавиши “tab“.

Выравнивание элементов пользовательского интерфейса по колонкам

Часто элементы интерфейса, размещаемые в пользовательских панелях, не соответствуют друг другу по размерам, в результате чего общая компоновка панели выглядит не красиво. В качестве наглядного примера создадим пользовательскую панель и разместим на ней кнопку оператора и текстовое поле ввода.

Выровнять размеры кнопки и поля ввода здесь напрашивается само собой.

Читать далее «Выравнивание элементов пользовательского интерфейса по колонкам»

Как получить полный список коллекций

Для того чтобы получить список коллекций со всеми внутренними коллекциями, можно использовать следующую функцию:

Читать далее «Как получить полный список коллекций»

Глобальная замена материалов в сцене для рендер-движка EEVEE

Часто бывает нужно получить рендер всей сцены с одним материалом. Например для “глиняных” рендеров (clay render) или рендеров сетки (wireframe render). Если для рендер-движка Cycles в настройках View Layer Properties – Override предусмотрена возможность глобально заменить все материалы на один, то для рендер-движка EEVEE такой возможности нет.

Быстрое переопределение материалов для рендер-движка EEVEE можно сделать с помощью небольшого скрипта, как это показано в следующем видео:

Автор скрипта и видео Виталий Сокол

Читать далее «Глобальная замена материалов в сцене для рендер-движка EEVEE»

Особенности задания параметров оператора

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

Например, нам нужно вызвать оператор “transform_apply” – применение трансформаций к объекту, указав применить только масштаб.

Если мы вызовем оператор следующим образом:

К объекту все равно будут применены все трансформации (масштаб, вращение и положение).

Читать далее «Особенности задания параметров оператора»

Рендер из консоли только на определенных GPU-картах

Иногда для эффективного распределения нагрузки на “железо” бывает нужно запустить рендер из Blender только на определенных видеокартах их нескольких имеющихся.

Для этого можно использовать несложный скрипт, в котором указать номера используемых для рендера устройств.

Читать далее «Рендер из консоли только на определенных GPU-картах»

Как определить направление кривой Безье

Направление кривой Безье, визуально обозначаемое наклоном нормалей, можно определить исходя из индексов ее точек.

Индексы точек кривой Безье всегда идут по возрастанию в направлении кривой.

Имея две точки на кривой, через их индексы можно получить направление:

 

Обновление модулей для автокомплита fake-bpy-modules для Blender Python API

Обновление модулей автокомплита Blender Python API от Nutti – добавлена ветка для Blender 2.81a.

Последний релиз от 2020.01.11.

GitHub автора: https://github.com/nutti/fake-bpy-module

Файлы отдельно (без установки через pip) https://github.com/Korchy/blender_autocomplete