Python

Как узнать, включен ли режим просмотра Local View в окне 3D View

Следующая команда вернет список окон 3D_VIEW в которых включен режим работы Local View:

 

Как управлять видимостью объектов во вьюпорте и при рендере

Самый простой способ заставить нужный объект появляться и исчезать – назначить ему ключи анимации. Для этого нужно навести курсор на значок глаза (видимость во вьюпорте) или фотоаппарата (видимость при рендере) в окне “Outliner”, нажать клавишу “i” и далее в Graph Editor управлять созданным ключом так же, как с обычными ключами анимации.

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

“hide_viewport” property cannot be animated

или

“hide_render” property cannot be animated

Однако с помощью Blender Python API видимостью таких объектов можно управлять.

Модули для автокомплита Blender API

Nutti, автор проекта fake-bpy-modules, перевел установку модулей автокомплита Blender Python API на платформу pip. Установка через pip быстрее и проще, однако иногда бывает нужно просто скопировать файлы модулей автокомплита в нужное место, а на GitHib Nutti они теперь не размещаются.

Копии файлов автокомплита для Blender версий 2.79 и 2.80 можно скачать отсюда напрямую: https://github.com/Korchy/blender_autocomplete

Как получить глобальные координаты вертекса

Чтобы получить координаты вертекса в глобальной системе координат сцены если мастшаб объекта не применялся, нужно умножить локальные координаты вертекса на матрицу трансформации объекта:

 

Правила наименования классов в Blender 2.8 API

В API Blender 2.8 ужесточаются требования к наименованию классов и их идентификаторов. Имя класса должно соответствовать следующему шаблону:

Где {SEPARATOR} – две буквы, обозначающие принадлежность класса к определенному типу (от какого типа наследуется класс):

  • HT – Заголовок
  • MT – Меню
  • OT – Оператор
  • PT – Панель
  • UL – Список UI

Идентификатор класса “bl_idname” должен соответствовать имени класса.

Изменения в регистрации аддонов через API в Blender 2.8

В Blender 2.7 регистрация и разрегистрация аддонов через Python API производилась через Window manager – wm:

В Blender 2.8 API операторы работы с аддонами перенесены в preferences:

 

Положение 3D курсора в Blender 2.8 Python API

Свойство, указывающее на местоположение 3D-курсора

в Blender 2.8 перенесено в объект курсора

При попытке обращения к позиции курсора через “context.scene.cursor_location” Blender выдаст ошибку:

‘Scene’ object has no attribute ‘cursor_location’

Создание свойств для аддона

При разработке аддонов часто бывает необходимо предоставить пользователю возможность задавать ряд параметров, влияющих на общую работу аддона. Например, пользователь может указать постоянную директорию для загрузки/сохранения файлов или задать тот или иной режим работы аддона. Конечно, интерфейс для задания подобных параметров можно разместить и в рабочей панели аддона, но гораздо удобнее поместить его в отдельную панель свойств аддона, которая размещается под панелью инсталляции аддона в окне Preferences.

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

Создадим простейший аддон и добавим ему глобальный параметр, поместив его в панель свойств аддона:

Умножение матриц, векторов, кватернионов в Blender 2.8 Python API

В Blender 2.7 для умножения матриц, кватернионов и векторов использовался оператор “*” (звездочка). В Blender 2.8 API он заменен на оператор “@” (ат).

При попытке использования оператора “*” для умножения матриц, векторов или кватернионов, Blender 2.8 сигнализирует ошибкой:

Element-wise multiplication: not supported between ‘Matrix’ and ‘Matrix’ types

Пример использования оператора “@”: