本記事ではAfter Effectsに関する実際に使ってみて便利だったエクスプレッションをまとめて紹介いたします。
AE:エクスプレッションのデバッグログを表示する方法
エクスプレッション書いているとこの値、取得できているかなーと確認したいことがあります。
いちいちテキストへ値を表示させてもよいのですが、ESTKにログを表示させる設定をしてみました。
[timeline]
[tl label=’STEP.1′ title=’AEを起動しCtrl+Alt+;から環境設定を開きます’]
[/tl]
[tl label=’STEP.2′ title=’環境設定をエクスプローラーで表示’] [/tl]
[tl label=’STEP.3′ title=’設定が上書きされないように、まずはAEを閉じます’]
AEを開きっぱだと、あとで閉じた時に環境設定が保存されてもとに戻ってしまうので注意
[/tl]
[tl label=’STEP.4′ title=’環境設定のテキストを開き下記のパラメーターを1に変更します’]
C:\Users\<ユーザー名>\AppData\Roaming\Adobe\After Effects\バージョン\Adobe After Effects バージョン 環境設定.txt
192行目のEnableExpressionsDebuggingAtYourOwnRisk” = 1にします
[/tl]
[tl label=’STEP.5′ title=’あとはAEを起動しAdobe ExtendScript Toolkit CCも起動しておきます’] [/tl]
[tl label=’STEP.5′ title=’テキストを作成して下記のエクスプレッションを挿入’]
str="CGメソッド"; $.writeln(str);
以上です、ESTKのコンソールにログが表示されます!
[/tl]
[/timeline]
エクスプレッションで詰まった時にデバッグログを確認できるのはとても便利ですね!
ちなみに毎フレーム、ログが吐き出されるので扱いには注意したほうが良いです。
AE:エクスプレッションを外部参照する方法
エクスプレッションを外部参照できると知りまして、試してみました。
外部参照エクスプレッション
- まず適当な場所(デスクトップ)に下記の内容のテキストを作成
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;
いまのところ実用的な方法がそこまで思いつかず。
外部から変化する値(天気とか)をこのように外部参照して、動画出力するなどしても面白いかもしれません。