Category: it

korchy

Назначение вертексам дополнительных свойств

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




Читать дальше: https://b3d.interplanety.org/naznachenie-verteksam-dopolnitelnyh-svoystv/
korchy

Как разделить и объединить окна в Blender через python API

Для манипуляций с размерами и положением интерфейсных окон в Blender предусмотрен ряд операторов.
Чтобы разделить текущее (с текущим context) окно на два в заданном соотношении, нужно выполнить оператор:

bpy.ops.screen.area_split(direction='VERTICAL', factor=0.5)
Где:


direction указывает на направление разбиения - по горизонтали 'HORIZONTAL' или по вертикали 'VERTICAL'
factor - процентное соотношение разделенный окон по выбранному направлению





Читать дальше: https://b3d.interplanety.org/kak-razdelit-i-obedinit-okna-v-blender-cherez-python-api/
korchy

Создание кастомного свойства

API Blender предоставляет для использования набор простых типов свойств, описанных в bpy.props (IntProperty,  BoolProperty и т.д.). Но базовых типов не всегда хватает, иногда нужны более сложные. API Blender позволяет группировать простые свойства, создавая таким образом более сложные.
Рассмотрим создание такого свойства на примере матрицы 3х3.




Читать дальше: https://b3d.interplanety.org/sozdanie-kastomnogo-svoystva/
korchy

Рисование в окне вьюпорта

API Blender предоставляет возможность рисовать в окне вьюпорта (3D Viewport) при помощи модуля gpu.
Для примера нарисуем в центре сцены упрощенный виджет системы координат, состоящий из трех линий разного цвета.




Читать дальше: https://b3d.interplanety.org/risovanie-v-okne-vyuporta/
korchy

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

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




Читать дальше: https://b3d.interplanety.org/kak-privyazat-k-nazhatiyu-knopki-vyzov-funkcii-a-ne-operatora/
korchy

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

Для того, чтобы передвинуть курсор к определенному вертексу меша нужно выполнить следующий код:
bpy.context.scene.cursor.location = bpy.context.object.matrix_world @ bpy.context.object.data.vertices[_VERTEX_NUMBER_].co
Умножение на матрицу мира должно осуществляться именно в таком порядке (матриц



Читать дальше: https://b3d.interplanety.org/kak-peremestit-kursor-k-nuzhnomu-verteksu/
korchy

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

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



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





Читать дальше: https://b3d.interplanety.org/peredacha-parametrov-v-operator/
korchy

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

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




Читать дальше: https://b3d.interplanety.org/perenos-vydeleniya-s-uv-razvertki-na-mesh/
korchy

Fake-bpy-module

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

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



Читать дальше: https://b3d.interplanety.org/fake-bpy-module/
korchy

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

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




Читать дальше: https://b3d.interplanety.org/dekorator-dlya-otlozhennogo-obnovleniya-nodovogo-dereva/