Blender 3D

Создание пользовательских панелей UI в Blender

При написании аддонов важно размещать элементы UI – кнопки, поля, переключатели и т.д. таким образом, чтобы пользователь легко находил их и имел к ним удобный доступ. Для размещения кастомного UI Blender предоставляет разработчикам аддонов следующие области:

Как расположить объекты на плоскости без пересечений в Blender при помощи Geometry Nodes

Для того чтобы заполнить объектами плоскость в Blender Geometry Nodes обычно используется нод Distrubute Points on Faces, который выдает набор точек, случайным образом раскиданных по поверхности полигонов меша, после чего в этих точках располагаются нужные объекты. В простейшем случае эти точки располагаются случайно и объекты, привязанные к ним, могут пересекаться друг с другом, если точки окажутся близко друг от друга. Однако при небольшой доработке можно настроить ноды так, что привязанные к точкам меши пересекаться не будут.

Шрифт с бортиком в Blender Geometry Nodes

При помощи Blender Geometry Nodes можно быстро превратить обычный текст в эффектную надпись, выполненную объемным штифтом с бортиком. Основным помощником в создании такого шрифта нам послужит нод Extrude.

Быстрая привязка параметров к кадрам анимации

Для того чтобы быстро связать любой изменяемый параметр меша с анимацией кадров нужно просто ввести в окошке этого параметра #frame. Теперь при прокрутке таймлайна анимации значение этого параметра будет равно номеру текущего кадра.

Родительская коллекция

В Blender Python API у коллекции нет прямого указателя на ее родительскую (parent) коллекцию. Однако мы можем получать родительскую коллекцию, просматривая список потомков каждой коллекции, пока в одном из них не найдем текущую.

Фильтрация значений доступных для выбора в кастомном свойстве UILayout.prop()

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

Вывод текста в хедер окна Blender

При исполнении модальных операторов таких, как вращение (rotation), перемещение (translation) или масштабирование (scale), в хедер текущей рабочей области вьюпорта выводится текст с текущими значениями изменяемых параметров меша. При необходимости в хедер можно выводить любой требуемый текст.

Как сделать коллекцию активной

Сделать коллекцию активной в Blender Python API за одно действие нельзя. Свойство bpy.context.collection доступно только для чтения, а bpy.context.view_layer.active_layer_collection является типом LayerCollection, которому нельзя присвоить стандартный тип коллекции Collection. Для того, чтобы назначить активную коллекцию, нужно по исходной коллекции Collection определить коллекцию слоя видимости LayerCollection и уже ее устанавливать в качестве активной.