AfterEffects

【AfterEffects】エクスプレッションを外部参照する方法

afterefects-externally-reference-expressions

エクスプレッションを外部参照できると知りまして、試してみました。

外部参照エクスプレッション

  • まず適当な場所(デスクトップ)に下記の内容のテキストを作成
var text1="おはよう";
var text2="こんにちは";
var text3="おやすみ";
  • AEを立ち上げ、テキストを作成し、ソーステキストのエクスプレッションを作成(目玉マークをAlt+クリック)下記のエクスプレッションを挿入
    ※パスのバックスラッシュは1個ではなく、2個つけていくこと!
$.evalFile ("file://C:\\Users\\min\\Desktop\\text.txt");
text.sourceText=text1;

これでおはようと表示されます

$.evalFile ("file://C:\\Users\\min\\Desktop\\text.txt");
text.sourceText=text3;

とするとおやすみと表示されます。

ちなみにMACの場合は

$.evalFile ("/work/text.txt");
text.sourceText=test1;

というようなパスになります。

カラーの値の場合

RGBの値は変数を下記のような感じで入力すると簡単です。

var color1=[255,0,0,255]/255;
var color2=[0,255,0,255]/255;
var color3=[0,0,255,255]/255;

スライダーの値で変数を変化をさせる場合

  • ヌルを作成し、エフェクト>エクスプレッション制御>スライダー制御を作成

  • テキストのエクスプレッションは下記を参考

num = thisComp.layer("ヌル 1").effect("スライダー制御")("スライダー");
$.evalFile ("file://C:\\Users\\min\\Desktop\\text.txt");
if (num == 1) text.fillColor=text1;
if (num == 2) text.fillColor=text2;
if (num == 3) text.fillColor=text3;

*あとはスライダーの値を変えていくとテキストの内容が変化します。

コンポジション名で変数を変化させる場合

コンポジション名(例:コンポ1とか)を取得して(アンダーバー)で区切って、右側の数字を取得、数字が一致したら、値が変化

var str = thisComp.name.split("_")[ 1 ];
num = Number(str);
$.evalFile ("file://C:\\Users\\min\\Desktop\\text.txt");
if (num == 1) text.sourceText= text1;
if (num == 2) text.sourceText= text2;
if (num == 3) text.sourceText= text3;

※[ 1 ]は半角を消してください。ブログの都合上わざと半角をいれています。

まとめ

いまのところ実用的な方法がそこまで思いつかず。
外部から変化する値(天気とか)をこのように外部参照して、動画出力するなどしても面白いかもしれません。

参考

エクスプレッションの外部ファイル化

AfterEffectsの参考紹介

参考記事

  • After Effectsに関連するまとめ記事45選!
  • 参考書籍

    ABOUT ME
    すいみん
    東京在住。デザイナー寄りのテクニカルデザイナー。 ブログは技術検証の備忘録として書いています。