En bref
- Les callbacks de Movie Render Graph peuvent exécuter une logique personnalisée avant le début et après la fin d’un travail de rendu ou d’un plan.
- La classe de callback est dérivée de MovieGraphScriptBase et préparée en surchargeant les fonctions concernées.
- Pour les callbacks par plan, vous pouvez activer l’option Flush Disk Writes Per Shot dans le nœud Global Output Settings.
- Pour que la classe de callback soit disponible à chaque ouverture de l’Unreal Editor, vous pouvez importer la classe Python correspondante depuis un fichier init_unreal.py.
Movie Render Graph (MRG), dans Unreal Engine 5.4, propose un système de callbacks permettant d’exécuter des opérations supplémentaires avant et après les travaux de rendu. Selon la documentation officielle d’Epic Games, ces opérations se configurent à l’aide du nœud Execute Script ajouté au graphe. Ce guide présente les étapes de configuration de base pour les équipes qui souhaitent préparer le rendu, examiner les données de sortie une fois le travail terminé ou effectuer des opérations plan par plan.
Dans quels cas les callbacks sont-ils utiles ?
Un callback est du code personnalisé exécuté à une étape précise du flux de rendu. Les callbacks de travail (job) peuvent intervenir au début et à la fin d’un travail ; les callbacks de plan (shot), au début et à la fin de chaque plan. Il est par exemple possible d’examiner les données de sortie une fois le travail terminé ou de traiter les chemins des fichiers associés à un plan lorsque celui-ci est terminé.
Le nœud Execute Script de MRG permet d’ajouter des callbacks à la configuration du graphe. La classe de callback dérive de MovieGraphScriptBase, disponible dans l’API Python d’Unreal. Les fonctions concernées sont surchargées à l’aide de @unreal.ufunction(override=True). Une fois la classe de callback enregistrée, elle est disponible dans le menu de sélection du nœud Execute Script.
1. Préparer le plugin Movie Render Queue et le graphe
Dans Unreal Editor, commencez par activer le plugin Movie Render Queue dans la section Rendering en suivant le chemin Edit > Plugins, puis redémarrez l’éditeur. Le projet doit contenir une Level Sequence à rendre.
Movie Render Graph est accessible depuis Movie Render Queue. Voici la procédure présentée dans la documentation d’Epic :
Ouvrez la fenêtre Movie Render Queue via
Window > Cinematics > Movie Render Queue.Cliquez sur le bouton de rendu et sélectionnez la Level Sequence concernée.
Dans la colonne Settings, ouvrez le menu
Unsaved Configet choisissezMovie Render Graph (Beta).Dans la section
Create New Asset, créez un Movie Render Graph, nommez-le et enregistrez-le.Ouvrez la configuration du graphe créé depuis la colonne Settings et modifiez-la.
Dans le flux de travail existant, Movie Render Queue (MRQ) et Movie Render Graph peuvent être utilisés ensemble. MRQ fournit une interface pour mettre les travaux en file d’attente et lancer des rendus par lots, tandis que MRG permet de configurer les opérations de rendu au moyen d’un graphe de nœuds.
2. Créer une classe de callback Python
L’exemple ci-dessous présente des callbacks au début et à la fin d’un travail. L’appel à on_job_finished intervient une fois le travail de rendu terminé ; il peut être utilisé aussi bien en cas de réussite qu’en cas d’annulation. L’attribut success des informations de résultat permet de vérifier si le travail a abouti.
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")Dans cet exemple, une entrée est ajoutée au journal au début et à la fin du travail. Avant d’ajouter votre propre logique, il est important de déterminer précisément à quelle étape le callback intervient et quelles données il reçoit. Les configurations du travail et du graphe sont transmises au callback sous forme de copies ; les modifications effectuées dans le callback ne modifient donc pas directement l’asset d’origine dans la file d’attente.
La classe doit être enregistrée pour apparaître dans le menu du nœud Execute Script. Dans l’exemple d’Epic, l’enregistrement de la classe est effectué pour la session en cours. Pour qu’elle soit accessible à chaque démarrage, vous pouvez l’importer depuis l’un des fichiers /Content/Python/init_unreal.py. La classe sera ainsi chargée au démarrage de l’éditeur.
3. Choisir entre callbacks de travail et callbacks de plan
on_job_start intervient au début d’un travail de rendu ; on_job_finished est appelé à la fin. Si une Level Sequence contient plusieurs plans, on_shot_start et on_shot_finished peuvent être utilisés séparément pour chacun d’eux. Le callback de début de plan intervient avant la préparation du plan. Celui de fin de plan reçoit les données de sortie correspondantes.
Il existe deux façons d’activer les callbacks par plan : cocher l’option Flush Disk Writes Per Shot dans le nœud Global Output Settings du graphe, ou surcharger la fonction is_per_shot_callback_needed dans la classe et lui faire renvoyer True. N’activez pas cette option sans nécessité : Epic indique qu’elle peut allonger la durée du rendu, car elle impose d’attendre l’écriture des fichiers sur le disque.
Quels avantages pour l’architecture et l’archviz ?
Les équipes de visualisation qui mettent en file d’attente plusieurs vues ou scènes peuvent intégrer des opérations récurrentes au flux de rendu au moyen de callbacks au niveau du travail et du plan. L’accès aux données de sortie et aux chemins de fichiers une fois le travail terminé fournit notamment une base pour transmettre les fichiers produits par les plans à une étape de traitement ultérieure. Toutefois, la documentation ne décrit ni norme de nommage de fichiers particulière ni automatisation archviz prête à l’emploi : cette logique doit être développée en fonction du projet.
Si vous envisagez une intégration à une render farm ou à un processus différent, les options de rendu local et de rendu dans un processus distinct de MRQ sont également à prendre en compte. Pour le rendu dans un processus distinct, les modifications du projet doivent avoir été enregistrées. Avant d’utiliser les callbacks pour des paramètres de livraison réels, vérifiez-les sur un petit travail de test ; contrôlez en particulier l’incidence de l’écriture des fichiers par plan sur la durée et le chargement de la classe au démarrage de l’éditeur.
Erreurs fréquentes
Oublier de redémarrer l’éditeur après avoir activé le plugin Movie Render Queue.
Supposer que les callbacks de plan s’exécuteront automatiquement : la nécessité d’écrire les données sur le disque pour chaque plan doit aussi être activée.
Interpréter la fin d’un travail comme un rendu forcément réussi. Le callback peut également être appelé en cas d’annulation ; vérifiez le statut de réussite.
Penser que les modifications apportées à la copie du travail ou de la configuration du graphe dans le callback mettent à jour l’asset d’origine dans la file d’attente.
Ne pas tenir compte du fait que l’attente de l’écriture des fichiers après chaque plan peut allonger la durée du rendu.
Sources
2 sourcesLes textes sources ne sont pas republiés ; les courtes citations sont signalées, le reste est notre propre résumé et commentaire.
Pour les studios d’architecture et de visualisation en Turquie, les callbacks peuvent surtout servir à intégrer plus méthodiquement des vérifications récurrentes après le rendu ou des opérations propres à chaque plan. Dans les présentations comportant de nombreux plans, l’accès aux données du travail et aux chemins de fichiers constitue un point de départ utile pour développer des automatisations personnalisées.
Cette fonctionnalité ne constitue toutefois pas, à elle seule, une solution de render farm prête à l’emploi : la classe Python doit être configurée et testée en fonction de la structure du projet. Attendre l’écriture sur le disque pour chaque plan peut avoir une incidence sur la durée du rendu. Avant la livraison, les studios devraient vérifier les callbacks sur un petit travail et, s’ils utilisent le rendu dans un processus distinct, penser à enregistrer les modifications du projet.
Questions fréquentes
À quoi servent les callbacks de Movie Render Graph ?
Ils permettent d’exécuter du code personnalisé avant et après le début ou la fin d’un travail de rendu ou d’un plan. Les callbacks au niveau du travail ou du plan peuvent être configurés avec le nœud Execute Script du graphe.
Comment activer les callbacks de plan dans Unreal Engine ?
Vous pouvez cocher l’option `Flush Disk Writes Per Shot` dans le nœud Global Output Settings. Vous pouvez aussi surcharger la fonction `is_per_shot_callback_needed` dans la classe de callback et lui faire renvoyer `True`.
Comment rendre une classe de callback disponible à chaque démarrage de l’éditeur ?
La classe peut être importée depuis l’un des fichiers `/Content/Python/init_unreal.py`. Elle sera ainsi chargée au démarrage de l’éditeur.



