При работе с мешем, который окружен другими объектами в Blender сцене, часто нужно сделать так, чтобы все остальные объекты не заслоняли его и не мешали точному моделированию. В этом случае проще всего включить режим изоляции объекта (клавиша /), который скроет с экрана все, что его окружает. Однако бывают случаи, когда одновременно нужно и работать в мешем, и контролировать и соотносить его с его окружением. Здесь лучше всего подойдет так называемы “призрачный” режим – когда все окружающие объекты выглядят полупрозрачными и не мешают работе, однако в то же время позволяют ощущать и контролировать масштабы и положение объекта в сцене.
По умолчанию такой режим работы есть в скульпте, Он включается в опциях 3D вьюпорта галочкой “Fade Inactive Geometry”, а величина прозрачности окружения регулируется значением в этот же поле от 0 до 1.
Хотя в объектном режиме 3D вьюпорта такой опции нет, мы можем сами настроить себе режим призрачного окружения при помощи несложного скрипта.
Для начала получим указатель на рабочую область 3D вьюпорта.
|
1 2 3 4 |
area = next((_area for _area in bpy.context.screen.areas \ if _area.type == 'VIEW_3D'), None) # <bpy_struct, Area at 0x000002167324D700> |
По умолчанию все объекты, видимые в 3D вьюпорте, отображаются цветом в зависимости от настроек материала объекта. Однако на этапе моделирования материалы на объекты обычно еще не назначены. Поэтому нам нужно переключиться в режим работы 3D вьюпорта, который отображает объекты локальным цветом объектов.
Переключим режим шейдинга вьюпорта в значение “OBJECT”.
Чтобы получить доступ к параметрам 3D вьюпорта, воспользуемся процедурой переопределения контекста.
|
1 2 |
with bpy.context.temp_override(area=area): bpy.context.space_data.shading.color_type = 'OBJECT' |
Теперь мы можем пройти в цикле по всем объектам сцены и если текущий объект – меш и он не является активным, поставить значение прозрачности его локального материала на минимум (равное 0.1).
|
1 2 3 4 5 6 |
for obj in bpy.context.blend_data.objects: if obj.type == 'MESH': if obj != bpy.context.active_object: obj.color[3] = 0.1 else: obj.color[3] = 1.0 |
Ветка “else”, в которую мы попадем только для активного объекта сцены, и снимаем с него прозрачность, в целом не обязательна. Однако она дает нам “однокнопочную” возможность быстро переключиться на другой меш в сцене, сделав его непрозрачным, а все окружение – призрачным, просто ткнув в него мышкой и еще раз выполнив наш скрипт.
Для того чтобы отключить режим призрачного окружения, нам нужно сделать все наоборот – опять пройти по всем объектам в сцене и сделать их непрозрачными,
|
1 2 3 |
for obj in bpy.context.blend_data.objects: if obj.type == 'MESH': obj.color[3] = 1.0 |
а так же переключить режим работы вьюпорта обратно в “MATERIAL”.
|
1 2 |
with bpy.context.temp_override(area=area): bpy.context.space_data.shading.color_type = 'MATERIAL' |
Теперь, запуская скрипт включения и выключения режима призрачного окружения, мы можем удобно работать с моделированием меша не теряя общей связи со всей сценой целиком.

.blend file on Patreon