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

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

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

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

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

Особенности использования матрицы масштаба

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

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

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

Локализация аддонов Blender – через API

Классический способ локализации аддона Blender (перевода аддона на разные языки) удобен тем, что для него требуется всего лишь одно обращение к Blender python API – получение текущей используемой локали. Он хорош своей независимостью, однако Blender не был бы Blender-ом, если бы не предоставил пользователям возможность локализации аддонов через свой API.

Принцип создания мультиязычных аддонов с использованием Blender python API по сути мало отличается от классического. Нам точно так же необходимо создать словарь со всеми вариантами перевода текстовых строк, используемых в нашем аддоне, и в дальнейшем пользоваться им для перевода.

Читать далее «Локализация аддонов Blender – через API»

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

При обращении к геометрии меша – его точкам, ребрам и полигонам, Blender оперирует исходными данными без учета наложенных на объект модификаторов.

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

будет возвращено без учета наложенного на объект модификатора Subdivision, который подразделяет геометрию меша, увеличивая ее значения.

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

Как сделать кнопку перехода по url-адресу в интерфейсе Blender

Для того, чтобы выполнить переход по url-адресу из Blender – открыть нужный адрес в браузере, можно воспользоваться системным оператором wm.url_open.

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

Читать далее «Как сделать кнопку перехода по url-адресу в интерфейсе Blender»

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

Если нужно одновременно иметь доступ и к текущему контексту, например для работы с операторами, и к данным сцены, например для работы с мешами, мы обращаемся к двум предопределенным в Blender Python API структурам: “bpy.context” и “bpy.data”.

Например мы можем передать указатели на эти две структуры в функцию:

Однако в структуре контекста “bpy.context” уже есть ссылка с именем “blend_data”, которая указывает на данные сцены. С помощью этого указателя можно обращаться к данным сцены, не передавая его отдельно в явном виде.

Как снять выделение с точек меша

Для меша в Blender можно снимать и устанавливать выделение точек через свойство “select” для каждой точки.

Однако для снятия выделения с точки недостаточно установить значение свойства “select” точки равным “False”.

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

Локализация аддонов Blender – классическая

Если вы хотите, чтобы ваш аддон был доступен для всех пользователей Blender по всему миру, вам обязательно нужно предусмотреть его локализацию – перевод интерфейса на разные языки.

Простейший способ сделать ваш аддон мультиязычным – классический, он используется во многих программах и, к тому же, требует минимального обращения к Blender Python API.

Читать далее «Локализация аддонов Blender – классическая»

Удаление коллекций через Blender Python API

Удаление коллекций в Blender осуществляется через список коллекций в bpy.data.

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

Читать далее «Удаление коллекций через Blender Python API»

Как назначить на объект констрейнт при помощи Blender Python API

Назначение ограничителей (констрейнтов) на объекты производится через свойство объекта “constraints”.

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

Читать далее «Как назначить на объект констрейнт при помощи Blender Python API»

Еще один способ добавить автокомплит к коду при разработке аддонов 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’