Tutorials

Bounding Box

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

упрощенного просчета физического взаимодействия объектов, например, столкновений.

Использование в UI иконок с неизвестным заранее id

Для отображения в UI рядом со свойством, текстовым лейблом или на кнопке оператора соответствующей иконки нужно указать ее идентификатор в параметре icon или icon_value. Но не для всех видов иконок их идентификаторы заранее известны. Например, нельзя заранее определить id для генерирующихся в рантайме иконок процедурных текстур и материалов.

Для того, чтобы получить идентификатор такой динамической иконки в UI, можно воспользоваться методом icon класса UILayout.

Автокомплит для разработки аддонов Blender в Eclipse IDE

Eclipse IDE, наравне с PyCharm и Visual Studio Code, является одной из наиболее популярных IDE для разработки, в том числе и аддонов для Blender. Для повышения удобства разработки под Blender в Eclipse IDE в нее можно подключить автокомплит – автодополнение кода для Blender Python API.

По заметкам Павла Гераськина.

Группировка данных в подпанелях

Для того, чтобы разбить интерфейс пользователя UI на несколько визуальных групп, чаще всего в Blender API просто регистрируют несколько отдельных панелей и объединяют их вместе, заданием одинакового параметра “bl_category”. В этом случае мы получаем несколько панелей, расположенных вертикально, которые можно сворачивать и разворачивать независимо друг от друга.

Как получить доступ к кастомному атрибуту, созданному в Geometry Nodes

Механизм Geometry Nodes в Blender позволяет легко создавать для объектов дополнительные кастомные атрибуты и помещать в них нужные данные. Однако прямого доступа к таким атрибутам нет.

Как сделать копию объекта при помощи Blender Python API

Создать копию объекта в сцене можно двумя путями:

  1. Вызывая оператор дублирования объекта,
  2. Используя метод copy() самого объекта.

Хоткей для выбора активной камеры

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

Использование UV координат для работы с геометрией

При помощи UV-координат развертки можно манипулировать не только материалами, но и самой геометрией меша. Связать UV-координаты с геометрией в Blender можно при помощи “Geometry Nodes”.

Наложение материалов по UV

Координаты UV-развертки можно использовать для смешивания материалов на меше напрямую. Это может пригодиться если, например, форма меша цилиндрическая или замкнутая, т.е. границы развертки соответствуют границам меша.

Шина передачи сообщений

В API Blender существует модуль, с помощью которого можно отслеживать изменение любого свойства, доступного через Python API. Этот модуль – шина передачи данных или “Message Bus”.

 

Рассмотрим, как можно создать функцию-обработчик события для отслеживания изменения какого-либо свойства. Например – местоположения 3D курсора в сцене.

Как расположить объекты по кривой без искажений

Простейший способ расположить объекты вдоль кривой в Blender – использовать для этого два модификатора: Array и Curve. Однако в этом случае объект искажается – его форма тоже подстраивается под форму кривой. В некоторых случаях, например при проектировании бордюров или танковых гусениц, это нежелательно.

 

Есть несколько способов расположить объекты вдоль кривой без искажений. Один из них – использовать промежуточный меш.

Настройка окружения для удобной ретопологии

Для того, чтобы процесс ретопологии был быстрым и удобным, окружение сцены нужно немного подстроить.

 

Для начала нужно включить привязку к полигонам (Facd), указав в качестве объекта привязки активную точку (Active).

Также нужно отметить чекбокс Backface Culling для того, чтобы активные точки ретопологии не магнитились бы к обратной стороне обрабатываемого меша.

Displacement на Geometry Nodes

Разберем на примере, как работает дисплейс (displacement) – выдавливание неровностей, в Blender на нодах геометрии “Geometry Nodes”.

Добавим в сцену цилиндр (диаметр 0.1, без верхнего и нижнего закрывающих полигонов): shift+a – Mesh – Cylinder.

Перейдем в режим редактирования (tab) и добавим промежуточных ребер так, чтобы сетка получилась равномерной: ctrl+r – 100 – Enter.

Орто освещение

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

Распространение лучей перпендикулярно плоскости освещения (ортогонально) от источника света обеспечивает источник типа “Sun”, однако такой источник не поддерживает освещение текстурами.

Расчет Bounding Sphere для объектов

Чаще всего для быстрых упрощенных расчетов с геометрией объектов используются их Bounding Box – минимальный параллелепипед, в который вписан данный объект. Однако. иногда большую точность и простоту в расчетах может дать Bounding Sphere – минимальная сфера, в которую можно вписать объект. И если размеры и расположение Bounding Box доступно в Blender для любого объекта сразу, Bounding Sphere необходимо рассчитывать самостоятельно.

Напишем функцию, которая на основании переданного объекта вернет нам координаты центра и радиус описывающей его Bounding Sphere.

Локализация аддонов Blender – через API

Классический способ локализации аддона Blender (перевода аддона на разные языки) удобен тем, что для него требуется всего лишь одно обращение к Blender python API – получение текущей используемой локали. Он хорош своей независимостью, однако Blender не был бы Blender-ом, если бы не предоставил пользователям возможность локализации аддонов через свой API.

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

Локализация аддонов Blender – классическая

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

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

Blender – сто советов по моделированию

Видео-подборка с более чем сотней советов по моделированию в Blender.

Автор перевода: Bad Polygon

Еще один способ добавить автокомплит к коду при разработке аддонов Blender в Visual Studio Code

Для повышения удобства разработки аддонов Blender с помощью Microsoft Visual Studio Code в этой IDE можно подключить автодополнение кода для стандартных типов API Blender.

Метод подключения автодополнения кода предложен Zen3515.