Инстансы – это такие объекты в Blender, которые используют один, общий на всех, блок данных. Они имеют одну и ту же геометрию, материал, свойства и атрибуты, что позволяет сильно выигрывать на скорости обработки сцены и рендере.
Быстро выделить все инстансы объекта можно выбрав в меню 3D вьюпорта “Select – Select Linked – Object Data”, или же нажав комбинацию клавиш Shift + l и выбрав тот же самый пункт “Object Data”.
Выбор инстансов производится путем вызова оператора “select_linked()” Blender Python API с параметром type установленным в “OBJECT”:
|
1 |
bpy.ops.object.select_linked(type='OBDATA') |
Если мы хотим выделить все инстансы текущего активного объекта в коде скрипта или аддона, мы можем использовать этот оператор.
Или же, если мы не хотим привязываться к вызову оператора, мы можем найти и выделить все инстансы по общему блоку данных:
|
1 2 3 4 |
instances = [_obj for _obj in bpy.data.objects \ if _obj.data == bpy.context.object.data and _obj != bpy.context.active_object] # [bpy.data.objects['Cube.005'], bpy.data.objects['Cube.006']] |
Для того чтобы выделить только их, сначала снимем выделение со всех объектов сцены
|
1 |
bpy.ops.object.select_all(action='DESELECT') |
А затем установим для каждого из них свойство “select” в значение True.
|
1 2 |
for instance in instances: instance.select_set(True) |
И еще вернем выделение на текущий активный объект
|
1 |
bpy.context.object.select_set(True) |
Таким образом мы выделяем все инстансы текущего активного объекта во всей сцене в Blender.

.blend file on Patreon