データ駆動型動アニメのバッチレンダリング時はaerender.exeじゃなくafterfx.exeを使おう

データ駆動型動アニメのバッチレンダリング時はaerender.exeじゃなくafterfx.exeを使おう

以下、2022年11月現在の After Effects で調査された記事内容となっているので、その旨。

データ駆動型動アニメ

データ駆動型アニメーションの操作
https://helpx.adobe.com/jp/after-effects/using/data-driven-animations.html

ちょっと前に実装されたこの機能がとても素敵。AfterEffectsのプロジェクトは表現のためのテンプレートとして扱い、実際のデータは外部jsonデータから流し込もうというアプローチ。Flash Action Script の何かを思い出す。

インフォグラフィックスなどで活躍しそうな機能だが、その他いろいろ面白そうなことに使えそうだなと、おらワクワクしてきたぞ。

CSVファイルでバージョンを作成

テキスト情報をCSVファイルとリンクして、複数のグラフィックバージョンをすばやく作成します。

https://helpx.adobe.com/jp/after-effects/how-to/multiple-graphics-text-csv.html?playlistPath=/services/playlist.helpx/products:SG_AFTEREFFECTS_1_1/learn-path:key-techniques/set-header:animation-techniques/playlist:topic/ja_JP.json
これも良いチュートリアルで、外部データをマスタープロパティと組み合わせてスマートに使いこなしている。

とってもよさそうな機能なのだが、1点気になるのがデータの読み込みが動的でないという点。

データが読み込まれるタイミング

AfterEffectsでの作業中は、json・csvを更新してAfterEffectsをちょっと触るとそれだけで最新のデーターが読み込みなおされる。再インポートをせずともよい。いい感じにデーターが同期され、通常はこれで十分なのだが、問題なるのがAfterEffectsを立ち上げず、aerenderコマンドで動画をエクスポートする下記のような場合。

aerender.exe -project "myproject.aep" -comp "mycomp" -s 0 -e 1000 -output "D:out\mycomp.png" -mp

この場合で出力された動画・画像は、リンクしているjson(たぶんcsvも)の内容を反映してはくれず、コンポジションにあらかじめ設定してあるデフォルト値が使われてしまう。
調査したがこれをなんとかするオプションはなさそうだ。> aerender によるレンダリングの自動化

この問題は、代わりに afterfx コマンドを用いることで回避できた。

afterfx.exe -s "var file = new File('D:/blog_header.aep');app.open(file);app.project.renderQueue.render();" -noui

afterfx コマンドは After Effects を立ち上げるコマンドだが、noui オプションをつけることで、ツールを立ち上げず、コマンドラインインターフェースのまま処理を行える。ついでに終了処理を書かないでも処理後に勝手に終了してくれる。当然セーブしますか?のダイアログも出ない。良い。

ここでは、aep ファイルを開いて、レンダーキューにある書き出し設定でレンダリングして終了するjsx処理をさせている。jsonの再ポート処理などは必要なく、コマンド開始時にシステムが自動で行ってくれるようだ。

その他コマンド動作について

aerender コマンド

素材として aep に読み込まれている画像などのメディアは aep から素直に外部参照されている状態なので、After Effectを立ち上げずに外部で同名のまま内容を入れ替えて aerender コマンドでレンダリングした場合でも、その入れ替えた画像等を反映してレンダリングが行える。jsonやcsvもそのように扱えるオプションが aerender コマンドに欲しい。

afterfx コマンド

上記例のように -s オプションで直接 スクリプト処理を記述する場合、ファイルパスのフォルダ区切り文字に逆スラッシュ(=半角¥記号)を用いると After Effects が正しくファイルを読み込めずエラーになる。スラッシュでフォルダを区切る事でこの問題を回避できる。関連記事あり。

この記事を参照している他の記事

Previous post 2022年度版 AfterEffectsのエクスプレッションを外部ファイルに記述する
Next post afterfxコマンド実行時のカレントフォルダ指定