前記事の続き

AfterEffectsのレイヤーが持っているレイヤープロパティの値を各フレームごとに書き出すという試みです。
吐き出す情報の整形を行ってないのもありますし、AEアニメーションを別のメディアで取り扱うための基幹になるものだと思うので、ここから自由に改変・配布しても構いません。

Download Scripts → layerPropertyPickerPackage

セットアップはアプリケーションの中のScriptsに、layerPropertyPicker.jsxを入れてください。
※動作確認はMacのAE CS6で、今回使ったサンプルもいれときました。動かなかったら教えて下さい!固定パスの記述がないので、多分Winでも動くと思います。

このスクリプトによる大雑把なワークフローを記載しとくと、

1.いつもどおり、コンポジションを作る。
2.トランスフォームにキーフレームを打ってアニメーションを作る。
3.レンダリングするワークエリアを調整する。
4. プロパティ情報を書き出したいレイヤーを選択して、layerPropertyPickerを実行。

という流れになります。

1.いつもどおり、コンポジションを作る。

今回は15fps (秒間15枚)にしました。プログラム上29.97とか端数でない限り、正常に書き出されると思います。動作確認のためにshapeが回転しながら移動するシンプルな作品をつくるとします。

2.トランスフォームにキーフレームを打ってアニメーションを作る。

ささっとコンポ作成→シェイプ作成→キーフレームをうちこんな感じに。

3.レンダリングするワークエリアを調整する。

今回はコンポジションサイズではなく、ワークエリアのIN/OUTで柔軟に書き出せるようにしました。なのでそこをいじって抜き出したい情報の範囲を調整することも可能です。そして書き出したいトランスフォームプロパティをもつレイヤーを選択して、スクリプトを実行。

4. プロパティ情報を書き出したいレイヤーを選択して、layerPropertyPickerを実行。


テキストデータを吐き出すので、出力先を選んで決定。


するとキーフレーム以外の値も含めて、各フレームごと、今回はワークエリアが1秒なので15フレーム分の値が出力されます。レイヤー未選択、ないしコンポがない状態の処理はかなり適当なので大目にみてください。

もちろんこれは、複数レイヤーのプロパティ出力にも対応しています。

書き出したい複数レイヤーを選択して、スクリプトを実行。
で 各レイヤーごとに、位置、アンカー、回転、スケール、(不透明度)が出力されます。

整形もXMLにするなり、JSONにするなりでストックしていくと後々面白いですね。
思ったのは、AEScriptingは他ツールより比較的ドキュメントがしっかりしていたのでスクリプトを組み易かったのと、AEは外部プラグインで育ってきたアニメーションツールなんだな、ということでした。

◯課題
レイヤーの親子関係だったりを抽出しようとすると、フリーズしてしまったりするところがあったり不安定だったりするので、更に良くしていきたいです。エフェクトのキーフレーム抽出もこの手の応用なので試してみたいですね!
参考:クリエイター手抜きプロジェクト