Еще один способ добавить автокомплит к коду при разработке аддонов Blender в Visual Studio Code

Для повышения удобства разработки аддонов Blender с помощью Microsoft Visual Studio Code в этой IDE можно подключить автодополнение кода для стандартных типов API Blender.

Метод подключения автодополнения кода предложен Zen3515.

Читать далее «Еще один способ добавить автокомплит к коду при разработке аддонов Blender в Visual Studio Code»

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

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

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

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

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

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

Значения угла камеры в Blender могут устанавливаться как в миллиметрах – параметр Focal Length, так и в градусах – параметр Field of View.

Для того, чтобы получить Field of View в градусах имея значение Focal Length в миллиметрах, можно впользоваться следующей формулой:

Читать далее «Как получить FOV камеры в градусах из длины фокуса в мм»

Как создать группу вертексов Vertex Group и добавить в нее точки с помощью Blender Python API

Работа с группами точек для текущего активного объекта осуществляется через его структуру “vertex_groups”.

Читать далее «Как создать группу вертексов Vertex Group и добавить в нее точки с помощью Blender Python API»

Как создать развертку для меша через Blender Python API

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

Создать собственно развертку с нужным именем:

Далее, для задания координат точек развертке, нужно пройтись по всем “лупам” меша:

Читать далее «Как создать развертку для меша через Blender Python API»

Как получить список координат точек UV-развертки

Получить список координат точек развертки меша может понадобиться, например, при экспорте меша из внутреннего формата Blender в какой-нибудь внешний формат.

Список разверток, имеющихся у меша, можно получить, обратившись к элементу uv_layers:

Читать далее «Как получить список координат точек UV-развертки»

Как удалить объект через 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“.

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

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

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

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