Для того, чтобы удалить объект из сцены Blender средствами Python API нужно выполнить следующие действия:
Откроем окно текстового редактора “Text Editor”.
Импортируем главный модуль bpy.
1 |
import bpy |
Удаляем объект при помощи оператора
Оператор удаления объектов работает только в объектом режиме, поэтому если сцена находится в режиме редактирования, переключимся в объектный режим.
1 2 |
if bpy.context.object.mode == 'EDIT': bpy.ops.object.mode_set(mode='OBJECT') |
Оператор удаляет все выделенные объекты. Для того, чтобы удалить только нужный объект, снимем выделение со всех объектов в сцене,
1 |
bpy.ops.object.select_all(action='DESELECT') |
и выделим нужный нам объект. Если мы выделим несколько объектов – все они будут удалены.
1 |
bpy.data.objects['Suzanne'].select_set(True) |
Теперь мы можем выполнить оператор удаления.
1 |
bpy.ops.object.delete() |
После его выполнения выделенный объект будет удален.
Финальный код:
1 2 3 4 5 6 7 8 9 10 |
import bpy if bpy.context.object.mode == 'EDIT': bpy.ops.object.mode_set(mode='OBJECT') # deselect all objects bpy.ops.object.select_all(action='DESELECT') # select the object bpy.data.objects['Suzanne'].select_set(True) # delete all selected objects bpy.ops.object.delete() |
Удаляем объект без помощи операторов
Удалить объект из сцены можно и без помощи операторов. Для этого нужно определить удаляемый объект:
1 |
object_to_delete = bpy.data.objects['Suzanne'] |
и удалить его из глобального списка объектов.
1 |
bpy.data.objects.remove(object_to_delete, do_unlink=True) |
Особое внимание на второй параметр “do_unlink”, который нужно указать равным True, для правильной отлинковки объекта от сцены.
Финальный код:
1 2 3 4 |
import bpy object_to_delete = bpy.data.objects['Suzanne'] bpy.data.objects.remove(object_to_delete, do_unlink=True) |
После выполнения кода, нажатием на кнопку “Run Script”, в зависимости от выбранного способа из сцены будут удалены все выделенные объекты или только определенный объект.