Последние новости
Houdini Solaris и USD: руководство по слоям для архитектурных сценРендер архитектурной сцены из командной строки в Blender 5.2 LTSКак тестировать ортографическую визуализацию архитектуры в Unreal Engine 5.3Единственный построенный планетарий Фрэнка Ллойда Райта восстановили и открылиНастройка render-callback’ов в Unreal Engine Movie Render GraphФазы проекта в Revit: настройка видов реконструкции и сносаЭкспозиция и глубина резкости в интерьерах Unreal EngineТочные размеры в LayOut: пошаговое руководство для архитектурных чертежейПредставлена Muse Spark Open: мультимодальная модель на 816 млрд параметровСоздание архитектурных изображений с FLUX в Diffusers: контроль и скорость
СоветыUnreal EngineMovie Render Graph

Настройка render-callback’ов в Unreal Engine Movie Render Graph

Система Movie Render Graph в Unreal Engine 5.4 позволяет запускать Python-callback’и до и после render-задачи или каждого кадра. В руководстве объясняются настройка через Execute Script Node и важные нюансы.

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

Коротко

  1. Callback’и Movie Render Graph могут выполнять пользовательскую логику до и после начала и завершения render-задачи или кадра.
  2. Класс callback’а создаётся на основе MovieGraphScriptBase, а нужные функции переопределяются.
  3. Для callback’ов на уровне кадров можно включить параметр Flush Disk Writes Per Shot в Global Output Settings Node.
  4. Чтобы класс callback’а был доступен при каждом запуске Unreal Editor, соответствующий класс Python можно импортировать из файла init_unreal.py.

Movie Render Graph (MRG) в Unreal Engine 5.4 предлагает систему callback’ов для выполнения дополнительных операций до и после render-задач. Согласно официальной документации Epic Games, их можно настроить через Execute Script Node, добавленный в граф. В руководстве рассматривается базовый процесс настройки для команд, которым нужно выполнить подготовительные действия перед render, изучить выходные данные после завершения задачи или обработать отдельные кадры.

Когда полезны callback’и?

Callback — это пользовательский код, выполняющийся в определённый момент render-процесса. Для начала и завершения задачи можно использовать job callback’и, а для начала и завершения каждого кадра — shot callback’и. Например, после завершения задачи можно просмотреть выходные данные, а после завершения кадра — обработать пути к файлам, относящимся к нему.

Execute Script Node в MRG позволяет добавлять callback’и в конфигурацию графа. Класс callback’а наследуется от MovieGraphScriptBase из Python API Unreal. Нужные функции переопределяются с помощью @unreal.ufunction(override=True). После регистрации класс callback’а становится доступен в меню выбора Execute Script Node.

1. Подготовьте плагин Movie Render Queue и граф

Сначала в Unreal Editor откройте Edit > Plugins, включите плагин Movie Render Queue в разделе Rendering и перезапустите редактор. В проекте также должен быть Level Sequence, предназначенный для render.

Доступ к Movie Render Graph осуществляется через Movie Render Queue. В документации Epic приведена следующая последовательность действий:

  1. Откройте окно Movie Render Queue через Window > Cinematics > Movie Render Queue.

  2. Нажмите кнопку Render и выберите нужный Level Sequence.

  3. В столбце Settings откройте меню Unsaved Config и выберите Movie Render Graph (Beta).

  4. В разделе Create New Asset создайте Movie Render Graph, задайте ему имя и сохраните.

  5. Откройте созданную конфигурацию графа из столбца Settings и отредактируйте её.

В существующем рабочем процессе Movie Render Queue (MRQ) и Movie Render Graph можно использовать совместно. MRQ предоставляет интерфейс для постановки задач в очередь и пакетного render, а MRG позволяет настраивать render-процессы с помощью графа из узлов.

2. Создайте класс Python-callback’а

В примере ниже показаны callback’и начала и завершения задачи. Вызов on_job_finished выполняется по завершении render-задачи; он может срабатывать как при успешном завершении, так и при отмене. Успешность задачи можно проверить по атрибуту success в данных о результате.

python
import unreal

@unreal.uclass()
class CallbackOverrides(unreal.MovieGraphScriptBase):
    @unreal.ufunction(override=True)
    def on_job_start(self, in_job_copy):
        super().on_job_start(in_job_copy)
        unreal.log("Render işi başlıyor")

    @unreal.ufunction(override=True)
    def on_job_finished(self, in_job_copy, in_output_data):
        super().on_job_finished(in_job_copy, in_output_data)
        unreal.log("Render işi tamamlandı veya iptal edildi")

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

Чтобы класс появился в меню Execute Script Node, его необходимо зарегистрировать. В примере Epic регистрация класса выполняется на текущий сеанс. Чтобы класс был доступен при каждом запуске, его можно импортировать из одного из файлов /Content/Python/init_unreal.py. Это позволит загрузить класс при запуске редактора.

3. Выберите между job- и shot-callback’ами

on_job_start срабатывает при запуске render-задачи, а on_job_finished — при её завершении. Если Level Sequence содержит несколько кадров, on_shot_start и on_shot_finished можно использовать отдельно для каждого из них. Callback начала кадра выполняется до его настройки. Callback завершения кадра получает выходные данные этого кадра.

Есть два способа включить callback’и на уровне кадров: отметить Flush Disk Writes Per Shot в Global Output Settings Node графа или переопределить в классе функцию is_per_shot_callback_needed, чтобы она возвращала True. Не включайте эту настройку без необходимости: Epic отмечает, что она может увеличить продолжительность render, поскольку редактор ждёт записи файлов на диск.

Что это даёт в архитектурных и archviz-процессах?

Команды визуализации, ставящие в очередь несколько планов или сцен, могут встроить повторяющиеся операции в render-процесс с помощью callback’ов на уровне задач и кадров. Доступ к выходным данным и путям к файлам после завершения задачи позволяет, например, направлять файлы, созданные для разных кадров, на следующий этап обработки. Однако в документации не описаны конкретный стандарт именования файлов или готовая archviz-автоматизация — такую логику нужно разрабатывать с учётом особенностей проекта.

При интеграции с render farm или другим процессом также важны варианты локального render и render в отдельном процессе в MRQ. Для render в отдельном процессе необходимо сохранить изменения проекта. Прежде чем переходить к реальным настройкам сдачи проекта, проверьте callback’и на небольшой тестовой задаче: особенно важно оценить влияние записи на диск для каждого кадра на продолжительность render и убедиться, что класс загружается при запуске редактора.

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

  • Не перезапустить редактор после включения плагина Movie Render Queue.

  • Предполагать, что shot callback’и сработают автоматически: для них отдельно нужно включить запись на диск для каждого кадра.

  • Считать, что завершение задачи означает только успешный render. Callback может вызываться и при отмене; проверяйте признак успешного завершения.

  • Ожидать, что изменения копии задачи или конфигурации графа внутри callback’а обновят исходный объект в очереди.

  • Не учитывать, что ожидание записи файлов после каждого кадра может увеличить продолжительность render.

Источники

Источников: 2
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/movie-render-pipeline-in-unreal-engine
Пересказ
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/running-pre-and-post-render-callback-mrg-scripts-in-unreal-engine
Пересказ

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

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

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

Вместе с тем эта функция сама по себе не является готовым решением для render farm: класс Python нужно настроить и протестировать с учётом структуры проекта. Ожидание записи на диск для каждого кадра может повлиять на продолжительность render. Перед сдачей проекта бюро стоит проверить callback’и на небольшой задаче; при использовании render в отдельном процессе важно не забыть сохранить изменения проекта.

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

Для чего нужны callback’и Movie Render Graph?

Они позволяют выполнять пользовательский код до и после начала и завершения render-задачи или кадра. Callback’и на уровне задач и кадров настраиваются через Execute Script Node в графе.

Как включить shot callback’и в Unreal Engine?

Можно отметить параметр `Flush Disk Writes Per Shot` в Global Output Settings Node. Другой способ — переопределить в классе callback’а функцию `is_per_shot_callback_needed` и вернуть `True`.

Как сделать класс callback’а доступным при каждом запуске редактора?

Класс можно импортировать из одного из файлов `/Content/Python/init_unreal.py`. Это позволит загружать его при запуске редактора.

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

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