API

Раскладываем выделенные объекты по коллекциям в Blender

Необходимость разложить каждый объект сцены в свою собственную отдельную коллекцию возникает при оптимизации сцены, или же при создании библиотеки ассетов. Помочь быстро выполнить такую операцию может несложный скрипт.

Получение данных из другого .blend файла через temp_data

Если после открытия одного .blend файла нам нужно просматривать данные из другого .blend фала, можно воспользоваться контекстом временных данных temp_data.

Оптимизация скорости обращения к данным через foreach

Язык Python, который используется в API Blender, очень лоялен и нетребователен к типизации данных. Однако при работе с большими объемами данных универсализация преобразования типов может негативно сказываться на скорости работы кода. Например, простейшая инструкция foreach_get(), получающая данные с набора элементов и помещающая их в массив, может быть значительно ускорена просто правильным подбором типа данных, помещаемых в массив.

Определяем угол между двумя ребрами меша в Blender

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

Вызов инструментов из панели пользовательского UI в Blender

В большинстве случаев инструменты (Tools) проще всего активировать нажатием на кнопки в панели инструментов (T-панель). Однако при разработке аддона с пользовательским UI, может оказаться удобным перенести вызов нужных инструментов на кнопки в пользовательской панели.

Показ пользовательской панели в Blender при нажатии клавиш

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

Устанавливаем иконку с панели инструментов на кнопку в пользовательской панели UI в Blender

Для того чтобы установить иконку на кнопки в кастомных пользовательских панелях UI в Blender, мы ищем текстовый идентификатор нужной иконки (обычно при помощи встроенного аддона Icon Viewer) и устанавливаем его значение в параметр icon, при привязке к кнопке нужного оператора. Однако иконки, используемые в панели инструментов отсутствуют в перечне стандартных иконок Blender.

Переключение между режимами DEFAULT и FALLBACK для инструмента в Blender

Переключение между режимами “DEFAULT” и “FALLBACK” в Blender позволяет задействовать инструмент в первом случае выполняя драг мышкой в любом месте 3D вьюпорта, а во втором – только внутри области, ограниченной управляющим кольцом.

Сдвиг дерева нодов в начало координат рабочей области

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

Выбор инструмента через Blender Python API в Blender 3.6

Для смены активного инструмента через Blender Python API необходимо использовать оператор wm.tool_set_by_id, передавая в его параметре идентификатор требуемого инструмента. В ранних версиях Blender, для того чтобы вызвать этот оператор из окна с другим контекстом, например, из текстового редактора Text Edit, необходимо было переопределять контекст.