Быстрое перемещение модификатора Auto Smooth в конец списка модификаторов

С версии 4.1 оператор сглаживания нормалей в Blender был полностью заменен на модификатор, реализованный на механизме Geometry Nodes. Это удобно для решения ряда проблем, однако если модификатор Auto Smooth располагается в стеке модификаторов не на последнем месте, до других модификаторов, изменяющих геометрию меша, это приводит к появлению артефактов. Чтобы быстро переместить модификатор в конец стека, можно использовать несложный скрипт.

Автор скрипта Алексей Маслов.

Добавим так же опционально возможность установить для всех модификаторов требуемое значение угла сглаживания. Для этого в начале скрипта определим переменную, в которую занесем значение нужного нам угла (18 градусов) или None, если значение угла в модификаторе изменять не нужно.

Пройдем по всем выделенным объектам сцены в цикле.

А для каждого объекта по списку его модификаторов. Цикл проходи по копии списка, которую мы создаем срезом [:], чтобы избежать возможного зацикливания.

Определим нужный нам модификатор (Auto Smooth) по типу, он относится к нодовому типу и части имени.

Если нужный модификатор присутствует на меше, для начала поменяем угол сглаживания (если мы его установили заранее).

Теперь нам нужно сместить модификатор в конец стека. Воспользуемся для этого оператором modifier_move_to_index, который помещает модификатор на место по числовому индексу.

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

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

Модификатор будет перемещен в конец стека.

Полный код скрипта:

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии