API

Делаем выбранные ребра в меше последовательно активными

Многие операторы в Blender Python API работают отталкиваясь от текущего активного элемента — точки, ребра или полигона. Но очень часто возникает необходимость выполнить такой оператор несколько раз для нескольких выделенных, а не активных, элементов. Чтобы это сделать, нужно последовательно в цикле делать каждый из выделенных элементов активным, и вызывать нужный оператор.

Добавляем HTML ссылку на пользовательскую панель в Blender

Раньше разработчики аддонов и расширений могли указывать ссылку, например, на форму обратной связи или на сайт с дополнительной информацией и документацией только в информации по самому аддону/расширению. Ссылка отображалась в виде кнопки в информационном блоке в рабочей области Preference — Add-ons. С версии Blender 5.2 разработчики сделали возможность размещения HTML-ссылок в любом месте на панелях UI.

Ищем самую верхнюю кость в риге при помощи Blender Python API

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

Выделяем висящую геометрию в Blender

Так называемая «не-манифолд» геометрия в 3D-объектах, это отдельные, висящие в пространстве, точки, ребра или полигоны, а так же отверстия в сплошном меше, выделяется в Blender через пункт меню 3D-вьюпорта: Select — Select All By Trait — Non Manifold. Также эту команду можно выполнить при помощи Blender Python API через оператор bpy.ops.mesh.select_non_manifold(). Если же мы работаем с геометрией через объект BMesh, в нем такого специального оператора не предусмотрено. Однако мы можем выделить такую не-манифолд геометрию самостоятельно.

Создаем полигон через BMesh и назначаем его точкам UV-координаты

Создавая новую геометрию в Blender при помощи Python API очень часто нужно не просто создавать новые полигоны, а еще и сразу присваивать им правильные координаты UV-развертки. При работе через объект BMesh это делается через связку точек геометрии с точками развертки мешлупами.

Определяем активный полигон в объекте BMesh

Объект BMesh безусловно обладает большей функциональностью и возможностями для работы с данными мешей по сравнении со стандартным набором данных, хранящимся в свойстве data объекта. Однако некоторые моменты управления данными меша в объекте BMesh не всегда очевидны. Рассмотрим, на пример, достаточно тривиальная операция по получению текущего активного полигона.

Получение точек на UV-развертке из объекта BMesh в Blender

Когда мы работаем с объектом BMesh в Blender Python API мы, точно так же, как и в базовом объекте, можем получить точки на UV-развертке, отталкиваясь от вертексов на самом объекте.

Формат OBJ при экспорте из Blender

Для того чтобы экспортировать геометрию из Blender в отдельный файл в формате OBJ нужно в главном меню выбрать пункт File — Export — Wavefront (obj) и указать путь, куда нужно сохранить .obj файл.

Создаем полигон в плоскости другого полигона через Blender Python API

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

 

Выравниваем нормали на двух полигонах

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