maemaewaterの日記

エンジニア兼ゲーマーの人の日記です。PHP/Python/JavaScript/C#/C++などによるプログラムに関することを主に書いています。

After Effects: エクスプレッションで共通で使える関数ライブラリを作成する

After Effectsでエクスプレッションを記述していて他のレイヤーでも使えないのかなと思っていたのですが、バージョン15以上からはfootageを利用してライブラリを記述できるようになっていました。 以下のページで説明されていたので試しに作成してみました。 helpx.adobe.com

この機能はカスタムエクスプレッション関数ライブラリと呼ばれているそうですね。

テキストエディタで関数を書く

テキストエディタ(Visual Studio Codeなど)で以下のファイル名で関数を書きます。この関数が共通で使えるようになります。

{
  add_value: function(a,b) {
    return a+b;
  },
  mul_value: function(a,b) {
    return a*b;
  }
}

この例ではファイル名をcustom.jsxとして保存しました。

After Effectsに読み込む

メニューの読み込みからcustom.jsxを選択して読み込みます。

エクスプレッションで利用する

ここではテキストのレイヤーのソーステキストにメニューの"アニメーション" > "エクスプレッションを追加"を選択してエクスプレッションの中身を次のようにします。

let x = footage('custom.jsx').sourceData;
x.mul_value(3,2);

確認する

テキストレイヤーの結果に6と表示されていればOKです! JavaScriptを外部のテキストエディタで編集しやすくなるのも良いのではないかと思います。