Как поставить курсор в начало или в конец активного стрипа в Blender VSE

Чтобы поставить курсор в начало активного стрипа в Blender VSE нужно выполнить команду:

Чтобы переместить курсор в конец активного стрипа:

 

Передача параметров в оператор

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

Передаваемый параметр должен быть определен, как свойство оператора.

Читать далее «Передача параметров в оператор»

Перенос выделения с UV-развертки на меш

Для переноса выделения с UV-развертки на меш достаточно вспомнить, что развертка напрямую связана с мешем через мешлупы.

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

Читать далее «Перенос выделения с UV-развертки на меш»

Как получить список вертексов, входящих в группу в Vertex Groups

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

 

Создание точки на кривой Безье

Кривая Безье строится по четырем точкам: две основные точки (p0, p1) и две опорные (p0_hr, p1_hl).

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

Читать далее «Создание точки на кривой Безье»

Fake-bpy-module

Автокомплит кода сильно упрощает работу при написании скриптов или разработке аддонов для Blender. Один из лучших на сегодня модулей автокомплита разрабатывается Nutti. Последнее обновление: 20190718.

Проект размещается на GitHub автора: https://github.com/nutti/fake-bpy-module

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

Декоратор для отложенного обновления нодового дерева

Если в панелях интерфейса аддона присутствует поле, значение которого меняет что-то в нодовом дереве, при изменении значения в этом поле нодовое дерево каждый раз перекомпилируется. Если пользователь меняет значение в таком поле зажав и двигая мышкой, слишком частая перекомпиляция нодового дерева приведет к заметным подвисаниям Blender.

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

Автор кода: Skarn

Читать далее «Декоратор для отложенного обновления нодового дерева»

Класс для создания нодов по их типу

Класс для удобного создания нодов по их типу.

Автор кода: Skarn

Читать далее «Класс для создания нодов по их типу»

Как защитить свой аддон от распространения через агрегаторы

С ростом популярности Blender растет и количество аддонов, создаваемых для него сторонними разработчиками. В настоящий момент под Blender написано множество качественных профессиональных аддонов. С течением времени аддонов становится все больше. И на волне роста их количества появились агрегаторы — программы или сервисы самостоятельно проводящие поиск аддонов в сети и позволяющие пользователям Blender устанавливать аддоны быстро, сразу много и минуя каналы распространения аддонов, выбранные их авторами. Что вызвало среди разработчиков аддонов волну негатива.

Читать далее «Как защитить свой аддон от распространения через агрегаторы»

Как узнать, включен ли режим просмотра 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» должен соответствовать имени класса.

Читать далее «Правила наименования классов в Blender 2.8 API»

Изменения в регистрации аддонов через 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

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

 

Доступ к элементам привязки в Blender 2.8 Python API

Свойство, указывающее на выбранный тип привязки в Blender 2.7

в Blender 2.8 изменилось на

 

Указание центральной точки в Blender 2.8 Python API

Указание опорной точки в Blender 2.7

в Blender 2.8 API перемещено в:

 

Свойство use_drag_immediately в Blender 2.8 Python API

Свойство use_drag_immediately в Blender 2.7

в Blender 2.8 API перемещено в

 

Переключение системы координат в Blender 2.8 Python API

Обращение к текущей используемой системе координат, которое в Blender 2.7 осуществлялось через

в Blender 2.8 перенесено в коллекцию объектов TransformOrientatiosSlots. Для получения и изменения текущей системы координат нужно обращаться к объектам коллекции сцены transform_orientation_slots.

 

Как сделать объект (меш) активным в Blender 2.8 Python API

Для того, чтобы сделать меш (объект) активным в Blender 2.8 Python API вместо своства context.scene используется context.view_layer.

При попытке сделать меш активным через «bpy.context.scene.objects.active» Blender сигнализирует ошибкой:

AttributeError: bpy_prop_collection: attribute «active» not found

Чтобы сделать объект активным, нужно использовать следующую команду:

 

Выбор объекта (меша) в Blender 2.8 Python API

В связи с изменениями Blender API в версии 2.8 выбор меша (объекта) теперь осуществляется с помощью геттера/сеттера.

При попытке проверить выбран ли объект через «bpy.context.active_object.select» Blender сигнализирует ошибкой:

AttributeError: ‘Object’ object has no attribute ‘select’

Для проверки, является ли объект выбранным в Blender 2.8 нужно использовать геттер:

Для того, чтобы выделить объект в Blender 2.8 нужно использовать сеттер:

Для снятия выбора нужно использовать тот же сеттер:

 

Как узнать версию Python, используемую в Blender

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

Это означает, что в текущей версии Blender используется Python 3.7.0.

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

или в полной форме: