2019年4月25日 (木)作業を少しは楽にするためには
おはようございます。本日の当番、プログラマのY.Nです。
今回は単純な作業を楽するためにはってお話です。
AMではプログラマでもAfterEffectsを使うことがあるのですが、正直結構めんどくさいなと思っている作業があります。
そう!!!
それが素材のループ化です。
背景や図柄など同じ映像を繰り返し再生する際に行うのですが、正直ボタン一つでできるってわけではなく、タイムリマップを指定してエクスプレッションを書く必要があり、とても面倒だと感じています。
なので、ボタンをぽちっとするだけでループになるスクリプトを書いてみました。
↓↓↓こんな感じ
#target aftereffects
var comp = app.project.activeItem;
var fps = comp.frameRate;
// レイヤーが1つ以上選択されているかどうか?
if(app.project.activeItem.selectedLayers.length > 0){
// 選択されてる数だけ回します。
for(i = 0; i < app.project.activeItem.selectedLayers.length; i++){
var layObj = comp.selectedLayers[i];
// リマップが設定可能か?
if(layObj.canSetTimeRemapEnabled){
// リマップが有効かどうか?
if(false == layObj.timeRemapEnabled) {
var layerDurationInFrame = Math.floor( (layObj.outPoint - layObj.inPoint) * fps );
if(layerDurationInFrame > 1){
layObj.timeRemapEnabled = true;
layObj.timeRemap.expression = "loopOut(Type=\"cycle\");";
var firstKeyframeTime = layObj.timeRemap.keyTime(1);
var lastKeyframeTime = layObj.timeRemap.keyTime(2);
var endKeyframeTime = lastKeyframeTime - firstKeyframeTime;
layObj.timeRemap.setValueAtTime((lastKeyframeTime * fps -1) / fps, (endKeyframeTime * fps -1) / fps);
layObj.timeRemap.setValueAtKey(3, 0);
}else{
layObj.timeRemapEnabled = true;
layObj.timeRemap.removeKey(2);
}
layObj.outPoint = comp.duration;
}
}
}
}
案外簡単ですね。
って事で今ではスクリプトなしでは素材のループができない思考になってしまいました。
でも、楽ができてとても幸せです。
困っている方がいましたらどうぞご自由に使ってみてください。
最近のコメント