Python

Зеркалим (miror) объект с сохранением кастомных нормалей

Для того чтобы отразить объект относительно какой-либо оси (X, Y или Z) в Blender обычно применяется оператор miror. Например, чтобы отзеркалить объект по глобальной оси X, в меню окна 3D вьюпорта нужно выбрать: Object – Miror – X Global. Или можно поступить проще и просто применить к объекту масштаб -1 по нужной оси: s – x – -1. Однако, если на объекте присутствуют кастомные нормали, они не пересчитываются, что в дальнейшем вызывает появление различных артефактов.

Выключение коллекции через Blender Python API

Исключить коллекцию из взаимодействия со сценой можно сняв галочку в чекбоксе, расположенном в Аутлайнере напротив имени нужной коллекции. Для того чтобы проделать это при помощи Blender Python API, необходимо обратиться к коллекции через слой видимости View Layer сцены, на котором расположена нужная коллекция.

Получение списка данных из свойств объектов с использованием list comprehension

Большинство объектов в Blender имеют в своей структуре множество списков данных. Например, внутри объекта “меш” присутствуют списки с набором вертексов этого меша, набором ребер, набором полигонов. А в структуре каждого вертекса присутствует, например, список с его координатами по осям X, Y и Z.

Пересчет нормалей в bmesh

При работе с геометрией меша через объект bmesh мы можем “пересчитывать” нормали – разворачивать нормали в противоположную сторону, отталкиваясь от направления нормалей соседних полигонов.

Разбиваем последовательность вертексов на блоки для построения полигонов

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

Установка sampling pattern для рендер-движка Cycles

Начиная с Blender версии 3.5 в панели рендер-движка Cycles был убран переключатель для режимов адаптивной выборки. Однако сам параметр никуда не делся, и его значение оставлено по умолчанию в “Tabulated Sobol”.

bmesh – удаление с указанием режима (контекста)

Для удаления у bmesh-объекта точек, ребер или полигонов удобнее всего использовать метод remove() для соответствующего набора элементов. Кроме того, для объекта bmesh предусмотрен оператор bmesh.ops.delete(), который позволяет удалять элементы меша с использованием разных режимов (контекста).

Создание нодов Repeat Zone при помощи Blender Python API

Начиная с версии 4.0 в Blender Geometry Nodes появилась специальная группа нод, предназначенная для циклического выполнения участка нодового дерева, заданное число раз. Эта группа нод называется Repeat Zone.