Introduction:
La plupart des fichiers de projet des logiciels de compositing que nous utilisons sont éditables comme un simple fichier texte et cette particularité amène donc des possibilités d'automatisation intéressantes car il va être possible de modifier directement le projet sans l'ouvrir.
Prenons un exemple: vous devez produire pour chaque jour de l'année un habillage où seule la date et le titre changent. Ces informations vous sont fournies dans un fichier formaté. Pour réaliser ça à la main, il faudrait créer 365 version de votre composition ou projet... Un peu long. Voici maintenant comment on pourrait procéder en automatisant ça via un script (pour ça, demandez à votre colègue programmeur de le programmer ): le script irait donc ouvrir le fichier du projet comme fichier texte, remplacer la date et le titre et lancer le calcul avec un nom différent (pour ne pas écraser à chaque fois le rendu précédent).
Les fichiers de projet éditables
On va s'intéresser dans cet article à AfterEffect CS4, Motion 3 et Shake 4 qui proposent tous trois un format de fichier de projet éditable. Pour éditer convenablement (à la main) des fichiers de projet, je vous conseil le graticiel TextWrangler.
After Effect
Depuis la version CS4, After Effect proposer d'enregistrer ses projets en format XML (extension .aepx). Malheureusement, le XML proposé est encore principalement en mode binaire, c'est à dire globalement incompréhensible. D'après Adobe, c'est un transition avant un vrai format de fichier XMl (peut-être dans After CS5?). Pour résumer, la seule chose d'intéressante, c'est de pouvoir modifier le chemin des fichiers sources; ce qui permet par exemple d'appliquer des effets en série sur un grand nombre de vidéo, etc.
Voici donc un aperçu de la partie "utile" d'un fichier .aepx:
<Alas>
<fileReference filetype="4D6F6F56" fullpath="FusionRaid:FCP_HD2:EXPORTS:TestAfter:Burning Man.mov"
platform="Mac" theRawMacAlias="436f5341018c00020000...(longue liste de chiffres)....." />
</Alas>
On comprend donc qu'il suffit de modifier le chemin vers le fichier .mov pour qu'un autre soit utilisé (ça correspond à la fonction remplacer le métrage dans After Effect).
C'est donc à peu près tout pour After! A noter qu'il ne faut utiliser ce format XML que dans ce but. Pour votre travail habituel, gardez le format .aep (standard).
Motion
Les fichiers de projet Motion (.motn) sont aussi du XML, mais cette fois-ci complètement intelligible, et même en français (c'est pas pour autant qu'on peut faire du compositing à la main non plus...). Autre avantage, ces fichiers .motn sont directement compatibles QuickTime, il suffit de les renommer en .mov pour les ouvrir nativement avec QuickTime Player!
Dans mon projet, j'ai donc créé deux texte et importé une vidéo en fond. Il faut penser à bien nommer ses couches:
Qu'est ce que donne le fichier Motion ouvert dans un éditeur?
On va déjà retrouver les couches, par exemple celle que j'ai nommé Titre:
<scenenode name="Titre" id="10037" factoryID="12" version="3">
<style name="Style " id="10039" factoryID="1">
<font type="0">HelveticaNeue</font>
On remarque qu'on peut par exemple changer la police, et plus loin dans le code, on tombe sur:
<text>Burning Man</text>
Qu'on peut donc aussi modifier.
Et on retrouve le même principe pour le fichier vidéo source:
<footage name="Couche de média" id="10004">
<clip name="Burning Man" id="10003">
<pathURL>file://localhost/Volumes/FusionRaid/FCP_HD2/EXPORTS/TestAfter/Burning%20Man.mov</pathURL>
Donc en changeant ces valeurs (texte, chemin de fichier) et en réouvrant le projet dans Motion, on verra que celui-ci a bien été modifié.
Le principal problème reste donc de s'y retrouver dans la masse d'informations de ces fichiers. C'est pour ça qu'on bon utilitaire de text comme TextWrangler avec un bon outil de recherche est indispensable.
Shake
Contrairement à ce qu'on pourrait croire, le format de fichier de Shake reste, je trouve, plus compréhensible. Voici donc un exemple d'un script avec une vidéo, un effet tourbillon (twirl), un texte, et un module de sortie.
Je n'ai copié ici que la partie nous concernant (un script Shake contient en effet aussi les paramétrages d'interface, etc.):
// Input nodes
VideoSource = SFileIn("//Powermacg5-fcp/Volumes/Macintosh HD/Users/3d/Desktop/Montage2.mov",
"Auto", 0, 0, "v1.1", "0", "", 0);
// Processing nodes
Twirl1 = Twirl(VideoSource, 0, 29.9, 1, width/2, height/2, width/2,
width/2, 1, 1);
Titre = AddText(Twirl1, "Shake en mode texte!", "Utopia Regular",
54.1000023, xFontScale/GetDefaultAspect(), 1, 300, 76, 0,
2, 2, 1, 1, 1, 1, 0, 0, 0, 45, 0, 1);
testShake = FileOut(Titre, "//Powermacg5-fcp/Volumes/Macintosh HD/Users/3d/Desktop/testShake",
"QuickTime", "Shake 3 QT 1", "Apple Animation", 0, "100W@c6000WDcsuHpoe10pFnKA6W230PPMM......",
0, 44100, 16);
La encore, on voit qu'on peut facilement modifier de nombreux paramètres: fichier source, texte, police, codec de sortie, chemin de sortie, etc.
En résumer, on voit qu'avec ces trois logiciels (surtout Motion et Shake), on peut créer un projet "générique" qui servira, en modifiant uniquement en mode texte le fichier, à créer un multitude de déclinaisons. Pour aller plus loin, on va pouvoir aussi automatiser les rendus! (ça sert à quoi d'automatiser 365 projets s'il faut ensuite lancer 365 rendus )
L'automatisation des rendus
La aussi, on se débarasse des interfaces graphiques, et direction la ligne de commande ( ) (je vous le redis: faites du programmeur un de vos amis!). le principe, c'est un script qui appelle la ligne de commande qui lance le rendu de votre projet. Jusqu'à là, aucun intéret, mais si ce script va chercher le titre en fonction de la date, le remplace dans le fichier projet, lance le rendu avec le bon nom et chemin de sortie et boucle pour tous les jours de l'année, ça peut être très intéressant!
After Effect
After Effect propose un module de rendu en ligne de commande qui se nomme aerender et se trouve dans votre dossier d'application After Effect. Pour l'utiliser, il faut donc passer par le Terminal (dans le dossier Applications/Utilitaires), mais on ne va pas trop mettre les mains dans le cambouis:
Une fois le Terminal ouvert, on glisse l'application aerender dans la fenêtre du terminal (ce qui a pour effet d'écrire automatiquement le chemin vers ce qu'on a glissé), puis on écrit -project avec un espace, puis on glisse le projet à calculer. Voilà, notre ligne de commande Terminal est écrite!
On vient de faire une commande basique (rendre toutes les compositiions de la file d'attente de rendu, seulon leurs paramètres de rendu), mais il est possible de faire bien plus: spécifier la composition à rendre, les paramètres, la zone de rendu, multiprocessing, etc. Tout est expliqué dans l'aide d'After Effect.
Il va donc être possible de gérer ses rendus dans passer par l'interface (il faut juste avoir une première fois préparé ses presets de rendu).
Shake
Shake est un outil fait à la base pour travailler directement en ligne de commande. Il permet donc encore plus de manipulations par script que AfterEffect. On va juste s'arreter au rendu: Il suffit (dans un cas simple) de taper :
shake -exec chemin/ver/mon/script/monscript.shk
pour calculer un projet (pour obtenir le chemin vers le script, il suffit là aussi de le glisser dans la fenêtre du Terminal).
Toute la documentation sur l'utilisation de la ligne de commande se trouve dans la documentation livrée avec Shake (Apendice B: The Shake Command-Line Manual) à partir de la page 1015.
Motion
Pour Motion, c'est un peu plus compliqué. il ne semble pas y avoir de possibilité de rendu direct en ligne de commande, mais grâce à la compatiblité directe des fichiers Motion avec QuickTime (il suffit de renommer l'extension .motn en .mov), il va être possible de passer:
- Soit par Shake (le fichier Motion "transformé" en .mov est appelé dans Shake puis rendu (cf ci-dessus). La même chose devrait être possible avec After Effect.
- Soit par qt_tools. Cet ensemble de script permet de faire pas mal de choses avec QuickTime en ligne de commande, notamment via la partie qt_export (choix du codec de destination, fréquence d'image, etc.)
Côté programmation
Pour automatiser tout ça, il faut ensuite créer un programme qui va lire les données, ouvrir et modifier le projet en y inscrivant ces données, lancer le rendu de ce projet, et répéter ces opérations en boucle tant qu'il reste des données à traiter. Normalement, c'est pas trop votre job, mais voici quelques infos:
Sur Mac, il est possible de programmer dans de nombreux langages. Le plus simple reste peut-être d'utiliser AppleScript. mais il est aussi possible d'aller plus loins avec les outils de développement Apple (Xcode). D'autres solutions existent, par exemple développer une interace en PHP pour lancer les rendus via une page web qui irait chercher les données dans une base MySQL, etc.
En discuter sur le forum: Fichiers de projet éditables (XML...) et automatisation des rendus
|