Информация о раскраске вершин меша хранится в его свойстве с именем vertex_colors, а также в его цветовых атрибутах color_attributes. Для того чтобы удалить с меша информацию о цветах его вершин, нужно очистить эти его свойства.
Для начала пройдем в цикле по всем выделенным объектам:
1 |
for obj in bpy.context.selected_objects: |
Если цвета на вертексы меша наносились раскраской кистью в режиме Vertex Paint, данные о цветах вертексов хранятся в свойстве vertex_colors.
1 2 3 4 5 |
for col_attr in obj.data.vertex_colors: print(col_attr) # <bpy_struct, MeshLoopColorLayer("Attribute") at 0x00000182DE127B88> # ... |
Свойство vertex_color – это коллекция, поэтому мы можем удалить из нее данные, вызвав метод remove() и указав в параметре удаляемые данные.
1 2 3 |
for obj in bpy.context.selected_objects: for col_attr in obj.data.vertex_colors: obj.data.vertex_colors.remove(col_attr) |
Если же вы сначала создали контейнер под цветовую раскраску вертексов, нажав на кнопку с плюсиком во вкладке Data Properties – Color Attributes, или же, например, перенесли цвета на вертексы меша из Geometry Nodes, цветовая раскраска хранится в специальном атрибуте.
Для того чтобы удалить данные цветовых атрибутов, воспользуемся таким же методом remove() для коллекции color_attributes.
1 2 |
for attr in obj.data.color_attributes: obj.data.color_attributes.remove(attr) |
Чтобы изменения сразу вступили в силу, обновим меш
1 |
obj.update_tag() |
и перерисуем экран вьюпорта.
1 2 |
for area in bpy.context.screen.areas: area.tag_redraw() |
Теперь для каждого из выделенных мешей с вертексов полностью удалены все данные о цвете.
Полный код:
1 2 3 4 5 6 7 8 |
for obj in bpy.context.selected_objects: for col_attr in obj.data.vertex_colors: obj.data.vertex_colors.remove(col_attr) for attr in obj.data.color_attributes: obj.data.color_attributes.remove(attr) obj.update_tag() for area in bpy.context.screen.areas: area.tag_redraw() |