Последние новости
Руководство по Cinema 4D MoGraph Cloner: клонирование в архитектурных сценахРазмытие движения в Blender Cycles: настройки для архитектурной анимацииРуководство по настройке коллекций и View Layer в Blender PythonInstancer 2D управляет 10 тысячами элементов в Fusion с помощью полейКак создать рельеф и смягчить рёбра в SketchUpКак создать свечение в архитектурном рендере с помощью Glare в BlenderНастройки архитектурной камеры в Blender: перспектива, кадр и глубина резкостиТрекинг камеры в Blender: как добавить 3D-модель в видеоRhino 8 QuadRemesh: как преобразовать quad mesh в SubD-модельРуководство по Unreal Engine Nanite: детализированная геометрия в архитектурных сценах
УрокиBlender

Руководство по настройке коллекций и View Layer в Blender Python

С помощью Blender Python API можно добавлять коллекции в сцену, группировать объекты и управлять видимостью View Layer. В руководстве описаны основные шаги и важные моменты для сцен архитектурной визуализации.

Аккуратная студийная композиция, напоминающая архитектурный интерьерный макет, распределённый по коллекциямИИ-изображение
Иллюстрация создана с помощью ИИ.Изображение: 3dsınıfı / FCA AI

Коротко

  1. В Blender 2.8x фиксированные слои сцены, использовавшиеся в эпоху 2.7x, уступили место коллекциям и структуре View Layer.
  2. Объект можно связать с несколькими коллекциями; при этом новый объект не создаётся.
  3. Коллекцию можно исключить из активного View Layer, чтобы управлять ею в структуре этого слоя.
  4. `hide_viewport` и `hide_render` управляют видимостью объекта в разных контекстах.

Чему вы научитесь в этом руководстве?

Сцены архитектурной визуализации могут объединять конструктивную оболочку здания, элементы интерьера, мебель и множество других объектов. По мере роста проекта становится важно группировать элементы сцены и управлять разными рабочими представлениями. Python API Blender позволяет связывать объекты с коллекциями и с помощью View Layer определять, какие части иерархии коллекций будут активны.

В этом руководстве вы научитесь создавать коллекцию с помощью Python, связывать её со сценой, добавлять в неё активный объект и исключать коллекцию из активного View Layer. Также мы рассмотрим различия между настройками видимости объектов и структурой коллекций и View Layer. Примеры основаны на официальной документации Python API Blender и описании API сцены и объектов, опубликованном для Blender 2.80.

Требования

Запускайте примеры в среде Blender, где доступен Python API. Код обращается к активной сцене, а при необходимости — и к активному объекту через bpy. В первом примере новая коллекция создаётся непосредственно с помощью bpy.data.collections.new и связывается с корневой коллекцией сцены; наличие ранее активной коллекции не требуется. Отдельный пример связывает активный объект с новой коллекцией, но пропускает этот шаг, если активного объекта нет.

В документации не указаны конкретная версия Blender, учётная запись пользователя или требования к дополнительному программному обеспечению. Поэтому перед использованием кода проверьте поведение API в установленной версии Blender. Документ для разработчиков Blender 2.80 описывает изменения API периода 2.8x, а актуальные страницы API документируют свойства Scene и Object. Учитывайте эти различия при работе со скриптами для более старых версий.

Настройка структуры коллекций: шаг за шагом

1. Разделите задачи коллекций и View Layer

В эпоху Blender 2.7x сцены можно было организовать с помощью 20 фиксированных слоёв. После изменений API в 2.8x для организации объектов стали использовать коллекции, а для управления видимостью и рендером частей иерархии коллекций — View Layer. Поэтому свойства слоёв сцены из старых скриптов не следует путать с новой системой коллекций.

Коллекции иерархически группируют объекты и другие коллекции. View Layer определяют, какие части этой структуры будут активны. Создание коллекции не перемещает объекты в неё автоматически: их нужно связать с коллекцией отдельно.

2. Добавьте в сцену новую коллекцию

Следующий пример связывает новую коллекцию Mimari_Govde с корневой коллекцией активной сцены. Код создаёт коллекцию, а затем добавляет её в иерархию сцены:

python
import bpy

scene = bpy.context.scene
collection = bpy.data.collections.new("Mimari_Govde")
scene.collection.children.link(collection)

bpy.data.collections.new создаёт новую коллекцию. scene.collection.children.link связывает её с корневой коллекцией сцены. В этом примере не используются активный объект или ранее активная коллекция. Если в файле уже есть коллекция с таким именем, перед повторным запуском скрипта проверьте структуру сцены.

3. Свяжите активный объект с новой коллекцией

После создания коллекции можно добавить в неё активный объект с помощью следующего примера:

python
obj = bpy.context.object

if obj is not None:
    collection.objects.link(obj)

Если активный объект есть, он связывается с коллекцией; если его нет, код внутри условия не выполняется. Эта связь не создаёт копию объекта. Согласно документации разработчиков Blender, один и тот же объект может входить в несколько коллекций и при этом остаётся одним объектом.

В архитектурных сценах это позволяет выстраивать структуру группировки без дублирования данных объектов. Однако приведённый код не удаляет объект из его текущей коллекции, а лишь добавляет связь с новой. Поэтому отдельно проверьте другие связи объекта с коллекциями в сцене.

4. Исключите коллекцию из активного View Layer

Если коллекция находится непосредственно под корневой коллекцией сцены, её можно исключить, обратившись к соответствующему LayerCollection в активном View Layer:

python
bpy.context.view_layer.layer_collection.children["Mimari_Govde"].exclude = True

Эта строка исключает коллекцию Mimari_Govde из активного View Layer. Чтобы снова включить её, установите для exclude значение False. Код предполагает, что коллекция находится непосредственно в иерархии View Layer. Если она вложена в другую коллекцию, обращаться к ней нужно по соответствующему пути в иерархии.

View Layer управляют тем, какие части структуры коллекций активны. Это не то же самое, что по отдельности менять свойства видимости каждого объекта. Оценивая результат, учитывайте, связаны ли объекты с другими коллекциями и как устроен используемый View Layer.

5. Управляйте видимостью объектов отдельно

Если нужно управлять не видимостью коллекции, а отдельным объектом, используйте свойства объекта. hide_viewport влияет на видимость объекта во вьюпорте, а hide_render — в рендере. Например, чтобы скрыть активный объект при рендере:

python
obj = bpy.context.object

if obj is not None:
    obj.hide_render = True

Здесь меняется только видимость в рендере. Для скрытия во вьюпорте предусмотрено отдельное свойство hide_viewport. Выбирайте свойство в зависимости от нужного результата и не используйте эти настройки как взаимозаменяемые.

Распространённые ошибки

Полагать, что объекты добавляются автоматически при создании коллекции: создание коллекции и связывание с ней объекта — разные операции. Добавьте нужный объект в коллекцию отдельно.

Использовать в новом API старые методы работы со слоями сцены: в 2.8x структура коллекций и View Layer изменилась. Не применяйте конструкции вроде object.layers из старых скриптов, не сверив их с актуальной структурой коллекций.

Путать связь с коллекцией с копированием объекта: один и тот же объект может находиться в нескольких коллекциях. Связывание с коллекцией не создаёт новый объект или копию геометрии.

Искать коллекцию не на том уровне иерархии View Layer: пример с исключением предполагает, что коллекция является непосредственным дочерним элементом активного слоя. Для вложенных коллекций путь обращения нужно изменить с учётом фактической иерархии сцены.

Считать видимость во вьюпорте и в рендере одной настройкой: hide_viewport и hide_render — разные свойства. Определите, касается ли проблема вьюпорта или результата рендера, и измените соответствующее свойство.

Влияние на рабочий процесс в архитектуре и визуализации

Коллекции можно использовать для группировки конструктивной оболочки здания, мебели и других элементов сцены, которыми нужно управлять вместе. Структура View Layer позволяет задавать, какие части этой иерархии будут активны. Такой подход помогает поддерживать порядок в сценах, особенно в многочастных проектах, и управлять видимостью на уровне групп.

Этот подход может быть полезен архитектурным бюро, дизайнерам интерьеров и специалистам по archviz, которые хотят создавать повторяемую структуру сцен Blender с помощью Python. Однако источники не обещают совместимость с конкретным движком рендеринга, повышения производительности или преимуществ для определённого оборудования. В проектах следует проверять версию Blender, фактическую иерархию коллекций и рабочий процесс обмена файлами с другими участниками.

Следующие шаги

Сначала запустите пример создания коллекции на копии файла. Затем проверьте шаг связывания с активным объектом и убедитесь, что объект может входить в несколько коллекций. Перед применением кода исключения View Layer проверьте, где находится коллекция в структуре активного слоя.

Затем по отдельности изучите свойства hide_viewport и hide_render, чтобы определить, какой уровень видимости отвечает вашим задачам. Если вы собираетесь использовать скрипты в разных версиях Blender, сверяйтесь с документацией API для нужной версии и тестируйте изменения до их применения к файлу проекта.

Источник и лицензия

Документ “Blender 2.80: Scene and Object API” (K2) в документации Blender Developer описывает изменения в структуре коллекций и View Layer. Документация Blender Python API по Scene (K1) и Object (K4) распространяется по лицензии CC BY-SA 4.0. В руководстве технические сведения из этих источников адаптированы на турецкий язык и изложены с оригинальными примерами.

Источники

Источников: 3
D
developer.blender.orgdeveloper.blender.org/docs/release_notes/2.80/python_api/scene_and_object_api
Пересказ
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Scene.html
Пересказ
D(
docs.blender.org (CC BY-SA 4.0)docs.blender.org/api/current/bpy.types.Object.html
Пересказ

Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.

Мнение 3dsınıfı
3dОценка редактора

Для архитектурных бюро и команд визуализации в Турции управление коллекциями с помощью Python может сделать организацию сцены более повторяемой. Возможность связывать объекты с разными коллекциями без их дублирования особенно удобна в рабочем процессе команд, проекты которых становятся всё масштабнее.

Вместе с тем эти примеры не обещают сокращения времени рендеринга или повышения производительности на определённом оборудовании. В реальном проекте следует проверить версию Blender и иерархию сцены, а автоматизацию сначала протестировать на копии файла. Источники также не содержат сведений об учётных записях, оборудовании или условиях оплаты.

Частые вопросы

Как создать новую коллекцию в Blender с помощью Python?

Коллекцию создают с помощью `bpy.data.collections.new`, а затем связывают с иерархией коллекций сцены через `scene.collection.children.link`. Объекты нужно добавлять в неё отдельно.

Может ли один объект одновременно входить в несколько коллекций Blender?

Да. Согласно документации разработчиков Blender, один объект можно связать с несколькими коллекциями, при этом он остаётся одним объектом.

В чём разница между `hide_viewport` и `hide_render` в Blender?

`hide_viewport` управляет видимостью объекта во вьюпорте, а `hide_render` — в рендере. Это разные свойства.

Комментарии и форум — на турецком языке.Присоединиться к обсуждению
+

Похожие новости