Для применения (apply) модификатора объекта с помощью Blender Python API можно воспользоваться оператором bpy.ops.object.modifier_apply. Однако он обрабатывает только один активный объект.
Если нужно применить модификатор, например Subdivision Surface, для нескольких выделенных объектов, нужно сделать каждый из них активным, и после этого вызвать указанный оператор.
Пройдем в цикле по всем выделенным объектам, сделаем каждый из них активным и если в списке модификаторов текущего объекта присутствует модификатор Subdivision Surface – применим его.
1 2 3 4 5 6 7 8 9 |
import bpy for obj in bpy.context.selected_objects: bpy.context.view_layer.objects.active = obj for modifier in obj.modifiers: if modifier.type == 'SUBSURF': bpy.ops.object.modifier_apply( modifier=modifier.name ) |
Если нужно применить модификатор другого типа, нужно изменить тип модификатора в условии:
1 |
if modifier.type == 'SUBSURF': |
Узнать тип для активного модификатора на текущем активном объекте, можно выполнив следующий код:
1 2 3 |
import bpy print(bpy.context.object.modifiers.active.type) |
есть же аддон в блендере modifier tools
А если вы пишете свой? )