スクリプト

フェードイン・アウトを自動化するスクリプト「[auto]fIn_fOut.jsx」

[概要]

レイヤーのフェードイン・フェードアウトを自動化するエクスプレッションを仕込むスクリプト。「[auto]volfIn_fOut.jsx」の不透明度版。

レイヤーのインポイントからのフェードインと、アウトポイントまでのフェードアウトがキーフレームなしで動作しますので、レイヤーの長さ変更時にキーフレームをズラす手間がなくなります。

スライダーのfIn、fOutに秒数を指定して使用します。(※フレーム数ではないことに注意)

仕様としてフェードイン中でもフェードアウトが優先して始まります。

[使い方]

  1. 適用したいレイヤーを選択し、スクリプトを実行します。
  2. 開いたプロンプトにフェードイン時間を秒数で入力します。
  3. 次のプロンプトにフェードアウト時間を秒数で入力します。

[オプション]

  • キーフレームを打っても合わせて動作します。
  • 不透明度が”0″<->”セットしている値”でフェードします。
  • 不透明度50なら0->50にフェードイン、50->0にフェードアウトします。

[解説]

function autoFadeSetter(){
    var actCmp=app.project.activeItem;
    var selItmAll=actCmp.selectedLayers;
    var fInTime = prompt("fInの時間を入力", 1);
    var fOutTime = prompt("fOutの時間を入力", 1);
    var fx=[];


    for(i=0;i<selItmAll.length;i++){
        if(selItmAll[i].property("エフェクト")("fIn")==null){
            fx[0]=selItmAll[i].property("ADBE Effect Parade").addProperty("ADBE Slider Control");
            fx[0].enabled=false;
            fx[0].name="fIn";
            fx[0](1).setValue(fInTime);
            fx[1]=selItmAll[i].property("ADBE Effect Parade").addProperty("ADBE Slider Control");
            fx[1].enabled=false;
            fx[1].name="fOut";
            fx[1](1).setValue(fOutTime);
        }else{
            break;
        }
    
    selItmAll[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));';
    
    }//for
}

app.beginUndoGroup("[auto]fIn_fOut");
autoFadeSetter();
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→不透明度値にする
  }
}

となります。

これでフェードを含むレイヤーが増える度に、多数のレイヤーへ打ち込む、またはコピペする時間が短縮でき、クリエイティブに割く時間を増やせるのです。

ダウンロード

フェードイン・アウトをエクスプレッションで自動化する前のページ

セット済みのフェード時間を調整するスクリプト「[batch]@fIn_fOut.jsx」次のページ

ピックアップ記事

  1. なぜ?After Effectsの操作を「スクリプト」で効率化
  2. なぜ?After Effectsのレイヤーをエクスプレッションで効率化
  3. フリーランスの開業届提出は開業freeeでとにかく簡単に

関連記事

  1. スクリプト

    パスに沿ってレイヤーを均等配置するスクリプト「masktoPosPathAlign.jsx」

    全選択レイヤーをパスに沿って配置するスクリプト。…

  2. スクリプト

    ウィグルを簡単に適用するスクリプト「posWigglr.jsx」

    位置へのウィグルエクスプレッション適用時に、スライダーを噛ませることで…

  3. スクリプト

    After Effectsのスクリプトの書き方

    After Effectsのスクリプトを作るのに必要なものを紹介します…

  4. スクリプト

    レイヤーを自動で拡大・縮小させるスクリプト[auto]scaleAnimator.jsx

    選択レイヤーのインポイントからアウトポイントにかけて、指定した%サイズ…

  5. スクリプト

    セット済みのフェード時間を調整するスクリプト「[batch]@fIn_fOut.jsx」

    既に[auto]fIn_fOut.jsxで追加された自動フェード用のス…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA