今回はAfterEffectsのプロジェクト内で使用されているエフェクト一覧を出力するスクリプトです。このスクリプトは各コンポジションごとに配置されているレイヤーに施されているエフェクトをテキストファイルに書き出します。
スクリプトを実行すると結果を保存するファイル名を入力するように聞いてきます。ファイル名を入力するとプロジェクト内にある全てのコンポジションを調べて、コンポジションに配置されているレイヤーのエフェクトを書き出します。なお、AfterEffectsでは表示されているエフェクト名と内部で使用されているエフェクト名が異なります。そこで、以下のスクリプトでは表示されている名前と内部での名前の両方を出力するようにしてあります。
function outputEffectsList(output){
for(var k=1; k<=app.project.items.length; k++){
var t = app.project.item(k).typeName;
if (t != "コンポジション"){ continue; }
var compName = app.project.item(k).name;
output.writeln("●コンポジション名:"+compName);
for(var j=1; j<=app.project.item(k).layers.length; j++){
try{
var layName = app.project.item(k).layer(j).name;
output.writeln("■レイヤー名:"+layName);
}catch(e){
break;
}
for(var i=1; i<256; i++){
try {
var prop = app.project.item(k).layer(j).property("effect").property(i);
output.writeln(prop.name + " ("+prop.matchName+")");
}catch(e){
output.writeln("----------------------------------");
break;
}
}
}
output.writeln("=======================");
}
}
(function(){
var savefile = File.saveDialog("エフェクト一覧を保存するテキストファイル名を入れてください");
if (!savefile) { return false; } // キャンセルされたら何もしない
var flag = savefile.open("w");
if (!flag){
alert("ファイルに書き込めませんでした");
return;
}
//outputEffectsList($); // ESTKのJavaScriptコンソールに出力する場合
outputEffectsList(savefile);
alert("処理が終わりました");
})();
上記のスクリプトを実行すると以下のように書き出されます。()内にある文字が内部で使われているエフェクト名になります。また、コンポジションに何も配置されていないか、レイヤーにエフェクトが施されていない場合はエフェクト名は書き出されません。
【例】
●コンポジション名:FM
■レイヤー名:keiba.mov
回転 (ADBE Twirl)
モザイク (ADBE Mosaic)
輪郭検出 (ADBE Find Edges)
トーンカーブ (ADBE CurvesCustom)
----------------------------------
■レイヤー名:keiba.mov
輪郭検出 (ADBE Find Edges)
----------------------------------
■レイヤー名:genba.mov
----------------------------------
=======================
●コンポジション名:test
■レイヤー名:keiba.mov
回転 (ADBE Twirl)
----------------------------------
=======================
●コンポジション名:コンポ 1
=======================
ということで、今回は短めです。AfterEffectsのスクリプト制作で役立つページでも紹介して今回はおしまいです。
・After Effects スクリプトリファレンス
http://aejsx.hiroshisaito.net/home
[
サンプルをダウンロード]