「タイムリマップでレイヤー管理するエクスプレッション(フリーズフレーム)」で作ったフレーム選択エフェクト追加+タイムリマップのON+エクスプレッション適用をスクリプト化。
[チュートリアル動画]
あったらヤなチュートリアルを作りました。スクリプトの動きと概要を掴めます。
[概要]
複数の整列させるレイヤーの管理を効率化するエクスプレッションを仕込むスクリプト。
[使い方]
- 別コンポジションに1フレーム1画像で配置する
- 整列させるメインコンポジションに配置する
- レイヤー名の末尾に「_1」や「01」と半角数値でリネームする
- 該当レイヤーを選択状態でスクリプトを実行する
- コンポジションレイヤーを複製する(自動連番になる)
- 補助スクリプト「numSliderSetter(#).jsx」を実行する
[解説]
function f_timeRemapSelectorSetterF(){
var actCmp=app.project.activeItem;
var sel=actCmp.selectedLayers;
for(i=0;i<sel.length;i++){
if(sel[i].canSetTimeRemapEnabled==false){
return;
}
frm=actCmp.frameDuration;
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.setInterpolationTypeAtKey(1, KeyframeInterpolationType.HOLD);
sel[i].timeRemap.expression=
'ind=effect("#リマップ番号")(1)-1;\r'+
'ind*thisComp.frameDuration;';
}
}
app.beginUndoGroup("timeRemapSelectorSetterFreeze");
f_timeRemapSelectorSetterF();
app.endUndoGroup();
選択したレイヤーをタイムリマップON状態にし、0フレーム目のキーフレームだけにし、さらにキーフレームを固定に変更。
タイムリマップに直接数値を入力しようとすると、現在時間にキーフレームが追加されてしまい入力が面倒なため、エフェクトには入力用(表示させるフレーム選択用)の「#リマップ番号」というスライダーエフェクトを追加します。
注意点
ただし、コンポジションレイヤーを複製したところで全てのタイムリマップが0のままとなるため、連番で入力されて欲しいわけです。
この場合は、当初layer(index)で自動連番にさせていたのですが、素材の順序を変更したい際に調整が効かないため、手動指定の余地を残しています。
そのため「レイヤー名末尾の数値を吸い上げ、#リマップ番号の数値を書き換えるスクリプト」をセットで使用するという案に落ち着きました。以下の2つのスクリプトは一連のセッティング動作の中で2つとも使用します。
この記事へのコメントはありません。