Amazonで商品を見るセール会場へ

After Effects│選択したレイヤーの繋ぎ目の重なりを調整するスクリプト

選択したレイヤーの重なりを切り、上のレイヤーの終了を、次に選択されているレイヤーの開始へ合わせるスクリプトです。タイムライン上の順番で処理し、未選択レイヤーと最後の選択レイヤーは変更しません。

レイヤーを移動して隙間を埋める処理や、クロスフェードではありません。アウトポイントだけを変更するため、アニメーションのキーフレームも元の時刻に残ります。

目次

未選択レイヤーを残して重なりを切る練習

練習コンポジションを別名保存し、タイムラインの1番と3番のレイヤーを選択します。

1番を0〜5秒、2番を1〜7秒、3番を3〜6秒にします。2番は選択しないでください。

下のコードをoverlap.jsxとして保存し、対象のコンポジションで「ファイル」→「スクリプト」→「スクリプトファイルを実行」から実行します。

選択したレイヤーをタイムラインの上から順に扱い、1番のアウトポイントを次の選択レイヤーである3番のインポイントへ切り詰めます。

期待する区間は1番が0〜3秒、3番が3〜6秒で、未選択の2番の時刻は変わりません。

クリックした順番や未選択の隣接レイヤーは参照しません。

この例は重なりを切る用途で、隙間を埋めて素材を延長する処理はしません。

2枚未満、変更対象のロック、終了が開始以前になる組み合わせ、延長が必要な組み合わせは変更前に止めます。

Undo処理はfinallyで1回だけ閉じますが、処理中の例外で変更が途中まで進む場合はあります。

例外の後に別方向の変更を試す処理は行わず、Ctrl+Z/Command+Zか元コピーで復元します。

確認すること期待する結果違ったとき
1番と3番を選択1番のoutが3秒タイムラインの番号を確認
2番を未選択元のin/outを維持対象の選択を確認
隙間を埋める必要あり変更前に停止素材を延ばす操作は別途確認
スポンサーリンク

Windowsで確認した区間と取り消し

2026年10月14日、Windows 11 Pro(OSビルド26200)・After Effects 26.5(26.5×89、Build 89)で本文のコードを検証しました。960×540、30fps、8秒のコンポジションに3枚の2D平面を置き、3番→1番の順で選択しました。実行後は1番が0〜3秒、2番は1〜7秒、3番は3〜6秒でした。クリック順による逆転はありませんでした。

選択した1番の終了と3番の開始が3秒で揃い、未選択の2番と1秒・4秒のキーが残ったタイムライン
実行後、1番の終了だけが5秒から3秒へ変化。2番は1〜7秒、3番は3〜6秒のままです。1番の4秒のキーは、新しい終了時刻の外に残ります。 2026年10月14日、Windows 11 Pro・AE 26.5(Build 89)で撮影。

1番の不透明度に置いた1秒・4秒のキーフレームは、実行後も同じ時刻に残り、開始時間も0秒のままでした。4秒のキーは新しいアウトポイントの外です。したがって、5秒で終わるアニメーションを3秒へ圧縮したい場合には、この処理だけでは足りません。必要なキーの時刻を別途調整してください。

Adobe公式のレイヤーの選択と配置でも、イン/アウトポイントだけの変更ではキーフレームは移動しないと説明されています。トリミングは元の素材ファイルのフレームを削除する操作でもありません。

実行直後にWindowsのCtrl+Zを1回押すと、1番の終了は5秒に戻り、2番・3番の区間とキー時刻は維持されました。これは通常終了した今回の例の結果です。別の編集を挟んだ場合は、その編集から順に取り消されるので履歴を確認してください。

警告が出たときに確認すること

「Open a composition and select at least two layers.」なら、コンポジションを開き、変更したいレイヤーを2枚以上選びます。「Only overlapping, unlocked selected layers can be trimmed. Nothing changed.」なら、変更対象のロック、上下の並び、各レイヤーのイン/アウトポイントを確認します。開始時刻で自動ソートするコードではありません。

実機では、1枚だけの選択、変更対象のロック、上が2秒で終わり下が3秒から始まる隙間、次の開始が上の開始と同じになるケースで、変更されずに警告が出ました。さらに3枚選択し、最初の組は切り詰め可能でも後の組で開始・終了が逆転する条件を作ると、最初のレイヤーも変更されませんでした。コードは全対象の条件を確認してから書き換えます。検証時は警告文をログへ記録しました。

今回確認したのは2D平面と不透明度キーです。動画・音声、タイムリマップ、負の伸縮、別バージョンのAfter Effectsでは未検証です。特に音の繋がりや時間を加工した素材は、コピーで実行し、境界付近を再生してから採用してください。

APIの補足にはコミュニティのLayerリファレンスを参照しています。上記の実測結果と、APIの説明は区別しています。

選択したレイヤーの繋ぎ目の重なりを調整するスクリプト

(function () {
    var comp = app.project && app.project.activeItem;
    if (!(comp instanceof CompItem) || comp.selectedLayers.length < 2) {
        alert("Open a composition and select at least two layers."); return;
    }
    var layers = [], plans = [], i;
    for (i = 0; i < comp.selectedLayers.length; i++) { layers.push(comp.selectedLayers[i]); }
    layers.sort(function (a, b) { return a.index - b.index; });
    for (i = 0; i < layers.length - 1; i++) {
        var layer = layers[i], end = layers[i + 1].inPoint;
        if (layer.locked || !isFinite(end) || !isFinite(layer.inPoint) ||
            !isFinite(layer.outPoint) || end <= layer.inPoint ||
            end > layer.outPoint || Math.abs(end) > 10800) {
            alert("Only overlapping, unlocked selected layers can be trimmed. Nothing changed."); return;
        }
        plans.push({layer:layer, end:end});
    }
    app.beginUndoGroup("Trim overlap of selected layers");
    try {
        for (i = 0; i < plans.length; i++) { plans[i].layer.outPoint = plans[i].end; }
    } finally { app.endUndoGroup(); }
})();

After Effectsのほかの操作やテクニックは、まとめ記事から確認できます。

以前の実装は、GitHubのMOTOKI-LLC/cg-method-codeを参考にできますが、本稿の修正版とは異なります。

レイヤーやテキストを整列・配置するスクリプトは、ほかにも紹介しています。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次