Últimas noticias
Houdini Solaris y USD: guía de flujo de trabajo por capas para escenas arquitectónicasRender arquitectónico desde la línea de comandos con Blender 5.2 LTSCómo probar la visualización arquitectónica ortográfica en Unreal Engine 5.3Restaurado y reabierto el único planetario construido de Frank Lloyd WrightGuía para configurar callbacks de render en Movie Render Graph de Unreal EngineFases de proyecto en Revit: organiza vistas de renovación y demoliciónGuía de exposición y profundidad de campo para interiores en Unreal EngineAcotación precisa en LayOut: guía paso a paso para láminas arquitectónicasPresentan Muse Spark Open: un modelo multimodal de 816.000 millones de parámetrosGeneración de imágenes arquitectónicas con FLUX y Diffusers: guía de control y velocidad
Consejos y guíasUnreal EngineMovie Render Graph

Guía para configurar callbacks de render en Movie Render Graph de Unreal Engine

El sistema Movie Render Graph de Unreal Engine 5.4 puede ejecutar callbacks de Python antes y después de un trabajo de render o de cada plano. Esta guía explica cómo configurarlos con Execute Script Node y qué aspectos tener en cuenta.

Escritorio que evoca planos de render, en un interior moderno iluminado por la luz del díaImagen IA
Imagen ilustrativa generada con IA.Imagen: 3dsınıfı / FCA AI

En resumen

  1. Los callbacks de Movie Render Graph pueden ejecutar lógica personalizada antes y después de que empiece y termine un trabajo de render o un plano.
  2. La clase del callback se prepara derivándola de MovieGraphScriptBase y sobrescribiendo las funciones correspondientes.
  3. Para los callbacks por plano, se puede activar la opción Flush Disk Writes Per Shot en Global Output Settings Node.
  4. Para que la clase del callback esté disponible cada vez que se abre Unreal Editor, se puede importar la clase de Python correspondiente desde un archivo init_unreal.py.

Movie Render Graph (MRG) de Unreal Engine 5.4 ofrece un sistema de callbacks para ejecutar tareas adicionales antes y después de los trabajos de render. Según la documentación oficial de Epic Games, estas tareas se pueden configurar mediante Execute Script Node, que se añade al gráfico. Esta guía explica el flujo básico de configuración para equipos que quieran realizar preparativos al iniciar un render, revisar los datos de salida cuando termina un trabajo o ejecutar acciones por plano.

¿Cuándo resultan útiles los callbacks?

Un callback es un código personalizado que se ejecuta en un punto determinado del flujo de render. Se pueden usar callbacks de trabajo para el inicio y el final de un trabajo, y callbacks de plano para el inicio y el final de cada plano. Por ejemplo, es posible revisar los datos de salida cuando termina un trabajo o procesar las rutas de archivo de un plano cuando este finaliza.

Execute Script Node de MRG permite incorporar callbacks a la configuración del gráfico. La clase del callback se deriva de MovieGraphScriptBase, de la API de Python de Unreal. Las funciones correspondientes se sobrescriben con @unreal.ufunction(override=True). Una vez registrada la clase del callback, se puede seleccionar en el menú de Execute Script Node.

1. Prepara el complemento Movie Render Queue y el gráfico

Primero, en Unreal Editor, ve a Edit > Plugins, activa el complemento Movie Render Queue en la sección Rendering y reinicia el editor. El proyecto debe incluir un Level Sequence que se vaya a renderizar.

Se accede a Movie Render Graph a través de Movie Render Queue. Este es el flujo descrito en la documentación de Epic:

  1. Abre la ventana Movie Render Queue desde Window > Cinematics > Movie Render Queue.

  2. Pulsa el botón de render y selecciona el Level Sequence correspondiente.

  3. En el menú Unsaved Config de la columna Settings, selecciona Movie Render Graph (Beta).

  4. En la sección Create New Asset, crea un Movie Render Graph, asígnale un nombre y guárdalo.

  5. Abre y edita la configuración del gráfico creado desde la columna Settings.

En el flujo de trabajo actual, Movie Render Queue (MRQ) y Movie Render Graph se pueden usar conjuntamente. MRQ ofrece una interfaz para poner trabajos en cola y realizar renders por lotes, mientras que MRG permite configurar los procesos de render mediante un gráfico basado en nodos.

2. Crea una clase de callback de Python

El siguiente ejemplo muestra callbacks para el inicio y el final de un trabajo. La llamada a on_job_finished se ejecuta cuando termina el trabajo de render; puede usarse tanto si finaliza correctamente como si se cancela. El atributo success de la información del resultado permite comprobar si el trabajo se completó correctamente.

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")

En este ejemplo, se registra el inicio y el final del trabajo. Antes de añadir lógica propia, es importante tener claro en qué fase se ejecuta el callback y qué datos recibe. Las configuraciones del trabajo y del gráfico se pasan al callback como copias; por lo tanto, los cambios realizados dentro de este no modifican directamente el recurso original de la cola.

La clase debe registrarse para aparecer en el menú de Execute Script Node. En el ejemplo de Epic, el registro de la clase se realiza para la sesión actual. Si se quiere que esté disponible cada vez que se abre el editor, se puede importar la clase desde uno de los archivos /Content/Python/init_unreal.py. Esto hace que la clase se cargue al iniciar el editor.

3. Elige entre callbacks de trabajo y de plano

on_job_start se ejecuta cuando empieza un trabajo de render; on_job_finished, cuando termina. Si un Level Sequence contiene varios planos, se pueden usar on_shot_start y on_shot_finished por separado para cada uno. El callback de inicio del plano se ejecuta antes de que este se configure. El callback de finalización del plano recibe los datos de salida de ese plano.

Hay dos formas de activar los callbacks por plano: marcar la opción Flush Disk Writes Per Shot en Global Output Settings Node del gráfico o sobrescribir la función is_per_shot_callback_needed en la clase y hacer que devuelva True. No actives esta opción sin valorar sus consecuencias: Epic señala que puede aumentar el tiempo de render, ya que espera a que los archivos se escriban en el disco.

¿Qué aporta a los flujos de trabajo de arquitectura y archviz?

Los equipos de visualización que ponen en cola varios planos o escenas pueden incorporar tareas repetitivas al flujo de render mediante callbacks a nivel de trabajo y de plano. Acceder a los datos de salida y a las rutas de archivo cuando termina un trabajo sienta las bases para dirigir, por ejemplo, los archivos generados por los planos a una etapa posterior de procesamiento. Sin embargo, la documentación no describe un estándar específico para nombrar archivos ni una automatización de archviz lista para usar; esta lógica debe desarrollarse según las necesidades del proyecto.

Si se busca integrar el flujo con una render farm u otro proceso, también son importantes las opciones de render local y en un proceso independiente de MRQ. Para renderizar en un proceso independiente, los cambios del proyecto deben estar guardados. Comprueba los callbacks en un trabajo de prueba pequeño antes de usar la configuración de entrega real; en especial, verifica el efecto de la opción de escritura en disco por plano sobre la duración y que la clase se cargue al iniciar el editor.

Errores frecuentes

  • Olvidar reiniciar el editor después de activar el complemento Movie Render Queue.

  • Dar por hecho que los callbacks por plano se ejecutarán automáticamente; también hay que activar el requisito de escritura en disco por plano.

  • Interpretar que la finalización del trabajo significa únicamente que el render se completó correctamente. El callback también puede ejecutarse si se cancela; comprueba la información de éxito.

  • Suponer que los cambios realizados en la copia del trabajo o de la configuración del gráfico dentro del callback actualizan el recurso original de la cola.

  • Pasar por alto que esperar a que se escriban los archivos al final de cada plano puede alargar el tiempo de render.

Fuentes

2 fuentes
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/movie-render-pipeline-in-unreal-engine
Resumen
D
dev.epicgames.comdev.epicgames.com/documentation/en-us/unreal-engine/running-pre-and-post-render-callback-mrg-scripts-in-unreal-engine
Resumen

No republicamos los textos de las fuentes; las citas breves van marcadas y el resto es resumen y comentario propios.

La opinión de 3dsınıfı
3dValoración del editor

Para los estudios de arquitectura y visualización de Turquía, el principal valor de los callbacks es su potencial para integrar en un flujo más ordenado las comprobaciones repetitivas posteriores al render o las tareas por plano. En presentaciones con muchos planos, acceder a los datos del trabajo y a las rutas de archivo ofrece un punto de partida útil para desarrollar automatizaciones propias.

Sin embargo, esta función no es por sí sola una solución de render farm lista para usar; es necesario configurar la clase de Python y probarla según la estructura del proyecto. Esperar a que se escriban los archivos por plano puede afectar a la duración. Antes de entregar un proyecto, los estudios deberían validar los callbacks en un trabajo pequeño y, si usan el render en un proceso independiente, recordar que deben guardar los cambios del proyecto.

Preguntas frecuentes

¿Para qué sirven los callbacks de Movie Render Graph?

Permiten ejecutar código personalizado antes y después de que empiece y termine un trabajo de render o un plano. Los callbacks a nivel de trabajo o de plano se pueden configurar mediante Execute Script Node del gráfico.

¿Cómo se activan los callbacks por plano en Unreal Engine?

Se puede marcar la opción `Flush Disk Writes Per Shot` en Global Output Settings Node. Como alternativa, se puede sobrescribir la función `is_per_shot_callback_needed` en la clase del callback y hacer que devuelva `True`.

¿Cómo se puede disponer de la clase del callback cada vez que se abre el editor?

Se puede importar la clase desde uno de los archivos `/Content/Python/init_unreal.py`. Así se carga al iniciar el editor.

Los comentarios y el foro están en turco.Únete al debate
+

Noticias relacionadas