Samuel Dubois - Tool Programmeur

Outil de passerelle entre logiciel de montage et séquencer

Lors de mon stage à Atelier Daruma, on m’a demandé de réaliser un plug-in Unreal pour faire la passerelle entre un logiciel de montage video et les Level Sequences du moteur en deux clics.

Utilisation :

L’utilisateur réalise son montage sur un logiciel permettant d’exporter des fichiers XML, il nomme ses pistes selon des conventions afin que celles-ci soient bien parsées. Il export ensuite son montage en fichier XML.

la_sixème_collection
Il ouvre maintenant Unreal Engine, sélectionne une Level Sequence, fait un clique droit dessus et choisit de réimporter le fichier XML. S’il n’a jamais fait d’import sur cette séquence, il faut qu’il renseigne l’emplacement de l’XML ainsi que les emplacements de dossier où seront rangés les fichiers de chaque type. Ensuite, l’outil va parcourir tous les éléments et va les importer en .Uasset si besoin est dans les dossiers choisis. Par exemple, si une piste sonore a été créée, l’outil va chercher le .WAV référencé dans la piste pour l’importer dans le dossier Sound.

L’outil va ensuite faire de la réflexion pour tous les events et fonction d’actors présent dans la scène qui sont cités dans le XML, et placer des key d’events triggers ou répéteurs au bon temps. Vient ensuite la gestion de tout élément liée au séquencer comme des Skeletal animations, des mouvements de caméra ou encore des sub sequence.

Au bout de quelques secondes, l’utilisateur verra son séquencer s’ouvrir et une fenêtre décrivant ce qui a été modifié et importé et les éventuelles erreurs.

Réalisation:

Cet outil m’a été demandé afin de réduire au minimum la charge de travail du producteur dans Unreal pour obtenir un rendu écran rapidement. Ce travail a donc demandé beaucoup de discussions avec lui afin que l’ergonomie de l’outil lui plaise. L’outil pouvant intégrer des sons, des animations, des Niagara particules et des events gameplay, j’ai également discuté avec chaque personne impliquée dans la réalisation de notre projet afin d’adapter l’outil à leurs besoins, leurs possibilités et leurs pipelines respectives.

Afin de créer cet outil, j’ai dû récréer une grande partie des systèmes appelés lors du drag&drop d’un .Uasset dans un sequencer. Pour cela, j’ai décortiqué le code du module UMovieScenes et tous ceux qui lui sont liés. J’ai également dû recréer une partie de leur helpers et libraries afin que mon plug-in soit indépendant de ces derniers et soit utilisable sur tous les projets n’utilisant que le module de base sans ses extensions.

J’ai aussi dû palier à des problèmes du séquencer comme son actualisation visuelle et sa sauvegarde, pour cela j’ai eu la chance de pouvoir utiliser l’Unreal Development Network et de discuter avec des développeurs d’Unreal pour trouver des solutions à des problèmes qu’ils n’avaient pas encore résolus.

Finalement, en plus du C++ j’ai dû utiliser du Python pour utiliser le parseur XML : Beautiful Soup, car le parseur proposé sur Unreal ne me permet pas de réaliser tout ce dont j’avais besoin.

Timeline:

Afin de pouvoir debugger et voir plus facilement certains éléments, j’ai réalisé un player de sequence: la timeline. Ce dernier fonctionne comme un player vidéo classique, on peut se déplacer via un slider au temps que l’on veut, mettre en pause et se déplacer entre différents chapitres. Comme l’outil de séquence permet de créer beaucoup d’event répéter et trigger d’actor, j’ai dû adapter la timeline pour que tous les événements gameplay, sonores et cinématographiques possible apparaissent à l’état qu’ils devraient apparaitre si l’on avait joué sans la timeline, et cela, à n’importe quel temps (chose aisée pour les events trigger, mais moins pour les répétiteurs ou les events Niagara). Le retour dans le temps et bien entendu possible.

Compétences acquises :

- J’ai approfondi ma connaissance en C++ Unreal et en Python.
- J’ai appris à utiliser énormément de réflexion pour créer un outil le plus généraliste possible.
- J’ai appris à utiliser créer des modules, plug-ins et librairies sur Unreal.
- J’ai approfondi ma relation avec tous les pôles de production d’un projet vidéo ludique.
- J’ai approfondi ma connaissance en UX design pour créer un outil ergonomique.