[概要]
レイヤーのフェードイン・フェードアウトを自動化するエクスプレッションを仕込むスクリプト。「[auto]volfIn_fOut.jsx」の不透明度版。
レイヤーのインポイントからのフェードインと、アウトポイントまでのフェードアウトがキーフレームなしで動作しますので、レイヤーの長さ変更時にキーフレームをズラす手間がなくなります。
スライダーのfIn、fOutに秒数を指定して使用します。(※フレーム数ではないことに注意)
※仕様としてフェードイン中でもフェードアウトが優先して始まります。
[使い方]
- 適用したいレイヤーを選択し、スクリプトを実行します。
- 開いたプロンプトにフェードイン時間を秒数で入力します。
- 次のプロンプトにフェードアウト時間を秒数で入力します。
[オプション]
- キーフレームを打っても合わせて動作します。
- 不透明度が”0″<->”セットしている値”でフェードします。
- 不透明度50なら0->50にフェードイン、50->0にフェードアウトします。
[解説]
var sel=app.project.activeItem.selectedLayers;
function f_auto_fIn_fOut(){
for(i=0;i<sel.length;i++){
if(sel[i].property("ADBE Effect Parade")("fIn")==null){
var fInTime = prompt("fInの時間を入力", 1);
var fOutTime = prompt("fOutの時間を入力", 1);
var fx=[];
fx[0]=sel[i].property("ADBE Effect Parade").addProperty("ADBE Slider Control");
fx[0].enabled=false;
fx[0].name="fIn";
fx[0](1).setValue(fInTime);
fx[1]=sel[i].property("ADBE Effect Parade").addProperty("ADBE Slider Control");
fx[1].enabled=false;
fx[1].name="fOut";
fx[1](1).setValue(fOutTime);
sel[i].opacity.expression= // 選択レイヤーの不透明度にエクスプレッションを適用
'fIn = effect("fIn")(1);\r'+
'fOut = effect("fOut")(1);\r'+
'(time >= outPoint-fOut )?ease(time,outPoint-fOut ,outPoint,opacity,0):((fIn==0)?opacity:ease(time,inPoint,inPoint+fIn,0,opacity));';
}else{
alert("fInというエフェクトがすでにあります");
break;
}
}//for
}
app.beginUndoGroup("[auto]fIn_fOut");
f_auto_fIn_fOut();
app.endUndoGroup();
新しく覚える知識は「prompt」です。
prompt("fInの時間を入力", 1);
ユーザーがテキストを入力できるウィンドウを表示するスクリプトで、引数1でウィンドウに表示するテキスト、引数2でデフォルトの値を指定できます。
選択レイヤーへエクスプレッション制御>スライダーを適用し、名前を「fIn」「fOut」へ変更。
プロンプトで入力した数字をそれぞれ設定します。
自分でスライダーを追加・リネームし、不透明度へ下記のエクスプレッションを打ち込んでも同じ結果です。
不透明度のエクスプレッションとしては
(time >= outPoint-fOut )?ease(time,outPoint-fOut ,outPoint,opacity,0):((fIn==0)?opacity:ease(time,inPoint,inPoint+fIn,0,opacity));
と短縮形で一行で書いていますが、読みやすい表記方法では
if(time >= outPoint-fOut ){ //フェードアウト時間内であれば
ease(time,outPoint-fOut ,outPoint,opacity,0); //フェードアウト秒前からアウトポイントへ不透明度値→0にする
}else{ //フェードアウト時間内でなければ
if(fIn==0){
opacity;
}else{ //フェードイン秒数が0以外なら
ease(time,inPoint,inPoint+fIn,0,opacity)); //インポイントからフェードイン秒で0→不透明度値にする
}
}
となります。
これでフェードを含むレイヤーが増える度に、多数のレイヤーへ打ち込む、またはコピペする時間が短縮でき、クリエイティブに割く時間を増やせるのです。
この記事へのコメントはありません。