Rikki Knight Trembath, responsable de la recherche et du développement chez Technicolor Creative Studios, explore le Codex : squelettes de performance pour Maya et Unreal.
Le squelettage est un composant essentiel de tout projet d’animation. Un squelette rapide permet non seulement de rendre le pipeline plus efficace, mais aussi d’améliorer le travail d’animation grâce à une plus grande interactivité et une meilleure visibilité dans le contexte.
Dans la plupart des cas, les marionnettes sont trop peu performantes, ce qui pose un problème lorsque les animateurs requièrent un retour d’information en temps réel pour créer des animations. Cela peut également représenter une dépense importante si vous souhaitez composer un squelette complet dans plusieurs applications.
Ne serait-il pas merveilleux de créer un squelette rapide qui ne soit pas victime de ces faibles vitesses de lecture ? Ne passer du temps qu’à le créer une seule fois pour ensuite utiliser le même squelette dans d’autres applications ? Cela rendrait le transfert d’animation beaucoup plus convivial. En effet, au lieu de déplacer des clés («baked keys»), vous pouvez utiliser des images clés qui conservent vos breakdowns.
C’est là qu’intervient Codex, une application propriétaire de création de contenu numérique (DCC). Indépendamment de la logique commerciale (MPC, The Mill, Mikros), la création de squelettes est agnostique des applications standard (Maya, Houdini, Unreal, etc.).
Qu’est-ce que cela fait ?
Codex crée un cadre de travail permettant aux artistes de générer des composants, des bras, des jambes et autres qui s’assemblent pour former une créature. Cela vous semble peut-être évident puisque de nombreux systèmes de squelettes le font. Mais notre cadre diffère, car nous communiquons avec d’autres DCC, tout en maintenant les données centralisées et agnostiques. Si un DCC plante, l’utilisateur ou l’utilisatrice peut se reconnecter à notre serveur et reprendre là où il ou elle en était dans Codex. Cela décentralise le squelettage des applications habituelles comme Maya, ouvrant ainsi la voie à de nombreuses réflexions.
Ces composants générés par Codex sont orientés données. Cela nous permet de prendre le contrôle et de précéder à une utilisation efficace de la mémoire et des entrées/sorties.
Ils sont également fonctionnels, c’est-à-dire qu’ils ont des entrées et des sorties strictement typées et doivent être exempts d’effets secondaires. Enfin, ils fournissent des limites statiques pour que les composants puissent échanger et transmettre des données.
Codex nous permet donc de nous détacher de la gestion et de l’écriture de script traditionnels de composants souvent liés au DCC. Les artistes sont ainsi libres de créer un squelette une première fois avant de le recréer dans d’autres DCC (p. ex. Maya, Unreal).
Grâce à sa structure, Codex permet de facilement exporter plusieurs squelettes dans différentes résolutions d’évaluation. On obtient ainsi divers niveaux de complexité d’un squelette pour différents départements, comme le layout, la prévisualisation, l’animation, les VFX, etc. Comme il s’agit du même squelette avec des niveaux d’évaluations croissants, le mouvement peut être intégré harmonieusement dans le pipeline.
Les objets de données des composants correspondent à des fonctions programmatiques agnostiques de l’hôte (Maya, Houdini, etc.). Ils disposent de spécifications d’accès, telles que privé (private), protégé (protected) et public (public), qui contribuent au développement du squelette. (« Public » est destiné aux utilisateurs en aval, notamment les animateurs ; « protégé » et « privé » sont liés à la conception du squelette et à l’initialisation.) Le composant se voit fournir des paramètres par le squelette et des entrées par l’animation, qui renvoie une série de sorties. Cette approche amène les utilisateurs à considérer la conception des composants comme une fonction ou un logiciel. En considérant les composants comme des logiciels au lieu de voir les squelettes comme des ressources, l’utilisateur ou l’utilisatrice peut commencer à versionner et à surveiller les composants tout au long du processus de production, comme s’il s’agissant d’un logiciel. On peut alors facilement parcourir les programmes pour repérer ce qui pourrait être obsolète avec la bibliothèque centrale. De plus, les composants étaient des objets de données, nous pouvons maintenant les différencier pour le squelettage afin de percevoir les potentielles différences avant de choisir la version utilisée pour le programme.
Mais comment est l’interface réservée aux artistes ? Doivent-ils apprendre de nouvelles choses ?
La création du squelette peut être réalisée dans un environnement familier afin de favoriser l’adoption du produit.
Nous utilisons une validation dans Maya pour effectuer de petits tests unitaires sur les ressources. Les personnes chargées du squelettage sont ainsi certaines de travailler selon les lignes directrices définies par Codex. Une fois le composant passé, l’utilisateur ou l’utilisatrice peut l’abstraire en un objet de données. Lorsqu’un test échoue, nous proposons une étape de conformation afin de limiter au maximum les interruptions pour l’utilisateur ou l’utilisatrice. Cela nous permet de réparer le squelette automatique, ce qui fait gagner du temps à l’utilisateur ou l’utilisatrice.
Une fois qu’une bibliothèque de composants est constituée, le processus d’assemblage des créatures est facilité. Même si cela peut sembler courant pour les artistes, Codex permet de réduire le temps nécessaire à la création de squelettes en offrant une interface de type « glisser-déposer ». Cette méthode simplifie la création d’une créature, en s’éloignant des scripts de construction traditionnels. Les composants peuvent être importés et dupliqués ou les sections copiées et collées, permettant la fusion de composants si nécessaire, comme une chaîne FK ou une ligne IK. Les artistes peuvent travailler de manière isolée avec un composant dans Maya, tout en gardant la créature entière chargée dans Codex. Si un ou une artiste doit adapter une ressource importante, les modifications peuvent être réalisées rapidement dans Maya sans avoir besoin de la créature dans son entièreté. De plus, puisque Codex possède les données, nous pouvons accélérer les temps de construction lors de l’injection et de la création du squelette dans Maya.
Codex souhaite collaborer avec le DCC en améliorant et en complétant le flux de travail de l’artiste, plutôt que d’injecter un moteur différent. Les squelettes peuvent ainsi tirer parti des fonctions du DCC, alors que les moteurs personnalisés peuvent rendre la chose plus compliquée.
Une de nos améliorations a été de renforcer l’éditeur de nœuds de Maya. En effet, si vous ne faites pas attention, les graphiques peuvent rapidement être perdus dans Maya. Pour simplifier la tâche, cette amélioration consiste notamment à s’assurer que l’artiste peut représenter graphiquement et de manière isolée le composant. Normalement, on obtient le graphique entier du début à la fin, ce qui n’est pas très utile si vous travaillez sur un composant et souhaitez le voir de manière isolée.
Par ailleurs, l’ajout d’une sauvegarde automatique des graphiques garantit leur continuité entre les œuvres abstraites et les différentes sessions Maya. La perte des travaux lors de l’organisation de la lisibilité d’un graphique est ainsi évitée.
Nous avons également ajouté une nouvelle fenêtre de recherche dans le catalogue. Elle améliore l’éditeur de nœuds en utilisant une police standard au lieu d’afficher la police native qui, si le nom devient trop long, est trop petite pour être lue. Nous avons également ajouté un historique des nœuds et un menu d’exploration. Ce n’est pas une nouveauté dans la mesure où ces fenêtres contextuelles existent, mais cette fonction manquait dans l’éditeur de nœuds. Et pour finir, nous avons instauré un langage d’interrogation permettant d’effectuer des recherches non seulement par nom, mais aussi par types d’entrée/sortie et même par balises.
En résumé, avec les lignes directrices et les nœuds que Codex a fournis à Maya jusqu’à présent, des créatures complexes ont fonctionné jusqu’à plus de 90 fps, offrant des créatures en temps réel pour des montages élaborés.
Codex ouvre de nouvelles perspectives en matière de squelettage : tout en fournissant des squelettes performants, nous permettons aussi aux squelettes et leur description d’évaluation d’être agnostiques de l’application sans nécessiter des moteurs personnalisés. Les artistes disposent des outils nécessaires pour créer un personnage une première fois avant de le reproduire dans de nombreuses applications, avec la possibilité de varier les résolutions d’évaluation.
Apprenez-en plus sur nos studios ainsi que sur ce que nous faisons ici.