スクリプト

タイムリマップでレイヤー管理するスクリプト(2フレーム以上)「tRemapSelectorSetter@time.jsx」

「タイムリマップでレイヤー管理するエクスプレッション(2フレーム以上)」で作ったフレーム選択エフェクト追加+タイムリマップのON+秒数の指定+エクスプレッション適用をスクリプト化。

[チュートリアル動画]

あったらヤなチュートリアルを作りました。スクリプトの動きと概要を掴めます。

[概要]

複数の整列させるレイヤーの管理を効率化するエクスプレッションを仕込むスクリプト。補助スクリプトも合わせて使用する。

[使い方]

  1. 別コンポジションにアニメーションを均等秒数で配置する
  2. 整列させるメインコンポジションに配置する
  3. レイヤー名の末尾に「1」や「01」とリネームする
  4. 該当レイヤーを選択状態でスクリプトを実行する
  5. 開いたプロンプトで再生させたい秒数を指定する
  6. コンポジションレイヤーを複製する(自動連番になる)
  7. 補助スクリプト「numSliderSetter(#).jsx」を実行する

[解説]

JavaScript
function f_timeRemapSelectorSetterT(){
    var actCmp=app.project.activeItem;
    var sel=actCmp.selectedLayers;
    var frm=actCmp.frameDuration;
    var seconds=prompt("1セットの秒数",1);

    for(i=0;i<sel.length;i++){
        if(sel[i].canSetTimeRemapEnabled==false){
            alert("タイムリマップ可能なレイヤーを選択してから実行");
            return;
        }else{
            sel[i].property("ADBE Effect Parade").addProperty("ADBE Slider Control");
            sel[i].property("ADBE Effect Parade")("ADBE Slider Control").enabled=false;
            sel[i].property("ADBE Effect Parade")("ADBE Slider Control").name="#リマップ番号";
            sel[i].property("ADBE Effect Parade")("#リマップ番号")(1).setValue(1);
            sel[i].timeRemapEnabled = true;
            sel[i].timeRemap.removeKey(2);
            sel[i].timeRemap.setValueAtTime(sel[i].inPoint,0);
            sel[i].timeRemap.setValueAtTime( sel[i].inPoint+(Math.round(seconds/frm)-1)*frm,(Math.round(seconds/frm)-1)*frm);
            

            sel[i].timeRemap.expression=
            'dur='+seconds+';//リマップ長さ秒;\r'+
            'value+(effect("#リマップ番号")("スライダー")*dur-dur);\r';
        }
    }
}

app.beginUndoGroup("timeRemapSelectorSetter@time");
    f_timeRemapSelectorSetterT();
    alert("コンポジションの中は30fpsか確認\r29.97など小数点あるとズレ発生");
app.endUndoGroup();

選択したレイヤーに「#リマップ番号」という名前のスライダー制御を追加し、タイムリマップON状態にし、プロンプトで指定された秒数分だけキーフレームを設定する。

タイムリマップの数値を変更しようとすると、2つのキーフレームを変更することになり非常に煩雑になるため、エフェクトには入力用(表示させるフレーム選択用)の「#リマップ番号」というスライダーエフェクトを追加する処理にしている。

注意点

ただし、コンポジションレイヤーを複製したところで全てのタイムリマップが0秒スタートのままとなるため、連番で入力されて欲しいわけです。

そのため「レイヤー名末尾の数値を吸い上げ、#リマップ番号の数値を書き換えるスクリプト」をセットで使用するという案に落ち着きました。以下の2つのスクリプトは一連のセッティング動作の中で2つとも使用します。

ダウンロード

タイムリマップでレイヤー管理するエクスプレッション(2フレーム以上)前のページ

tRemapSelectorSetterした2つのリマップ番号を入れ替えるスクリプト「numSliderSwapper(#).jsx」次のページ

ピックアップ記事

  1. YouTubeで一時停止中のコントローラーを非表示にするブックマークレット

  2. amazonのスポンサー商品(広告)を非表示にするブックマークレット「amazO…

  3. なぜ?After Effectsのレイヤーをエクスプレッションで効率化

  4. なぜ?After Effectsの操作を「スクリプト」で効率化

  5. フリーランスの開業届提出は開業freeeでとにかく簡単に

関連記事

  1. スクリプト

    裏面を非表示にするスクリプト「hideBackface.jsx」

    3Dレイヤーの裏面を非表示にするスクリプト。…

  2. スクリプト

    これ以上ヌルレイヤーを増やしたくない人へのスクリプト「smartNuller.jsx」

    平面レイヤーフォルダに並ぶ複数のヌルレイヤーが気になる方へのスクリプト…

  3. スクリプト

    全選択レイヤーのデュレーションを一致させるスクリプト「durationMatcher.jsx」

    全選択レイヤーを1つめに選択したレイヤーのデュレーションと一致させるス…

  4. スクリプト

    なぜ?After Effectsの操作を「スクリプト」で効率化

    出来る範囲はマウスやキーボードで編集者が直接できる操作に限られますが、…

コメント

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

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

CAPTCHA


PAGE TOP