Blender 3D

BIS: обновление материалов под Blender 2.81

В связи с изменениями в структуре нодов в последнем релизе Blender 2.81 все открытые материалы в BIS обновлены под эту версию Blender. Совместимость с младшими версиями Blender могла быть потеряна (зависит от используемых в материале нодов).

Как привязать к нажатию кнопки вызов функции, а не оператора

К нажатию кнопки в пользовательском интерфейсе обычно привязывают вызов нужного оператора. Однако часто действия, которые нужно выполнить при нажатии на кнопку, достаточно просты и не требуют оформления в виде отдельного оператора. Да и забивать стек зарегистрированных операторов множеством специфических операторов, рассчитанных на выполнение одной конкретной узкоспециализированной функции не имеет смысла. Гораздо удобнее было бы связать нажатие кнопки с вызовом отдельной функции, однако API Blender позволяет связывать кнопки только с вызовом оператора.

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

Как получить все возможные значения свойства Enum

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

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

TypeError: bpy_struct: item.attr = val: enum “xxx” not found in (‘value_001′, value_002’, …)

где:

xxx – значение, которые мы попытались задать свойству EnumProperty

value_001, value_002, … – возможные значения, которые может принимать данное свойство EnumProperty

Как переместить курсор к нужному вертексу

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

Умножение на матрицу мира должно осуществляться именно в таком порядке (матрица слева).

Добавление объекта в сцену в Blender 2.80 Python API

В API Blender 2.79 созданный объект добавляется в сцену через:

Попытка добавить объект в сцену таким образом в Blender 2.80, приводит к ошибке:

‘bpy_prop_collection’ object has no attribute ‘link’

В Blender 2.80 API добавлять объект нужно не в саму сцену, а в ее коллекции.

Добавить объект в активную коллекцию:

Добавить объект в коллекцию по ее имени: