《完全自動化!》分割画面をレイヤーコピペだけで作る方法

AfterEffectsの整列機能で、分割画面を作る方法を以下の記事で紹介しました。

関連記事

AfterEffectsで4画面、9画面、16画面などの分割画面を手動で位置調整するのはなかなか大変な作業です。 分割画面を簡単に作成するには、整列パネルを使います。具体的な手順をまとめていきたいと思います。 この記事で出来る[…]

簡単に分割画面を作る方法

しかし、この方法だと、10×10など分割数が増えると大変な作業になります。そこで、もっと簡単に分割画面を作る処理を作成したのでご紹介します。驚くほど簡単に分割画面が作れるようになります。

実現イメージ

以下の例は2×2の4画面ですが、分割数がもっと大きいものでも簡単に実現できます。

処理イメージ

処理イメージ

画面を4つ並べた場合は上記のようになります。レイヤー数に応じて、自動的に配置位置とスケールを計算します。

事前準備

① 新規コンポジションを作成

② 平面レイヤーを作成(名前はデフォルトのまま)

③ コンポジション内で名前を「layer0001」に変更

②の平面レイヤー作成時点で、「layer0001」としてしまうと、レイヤーコピーで「layer0002」のように数がインクリメントしてくれません。その為、②では、「layer0001」以外の名前にしてください。

処理内容

位置の処理と、スケールの処理を関数にして作成しました。

※ 関数については以下の記事で説明していますのでご覧ください。
関連記事

AfterEffectsのエクスプレッション内で、時間計算など、同じ処理を何度もする場合もあると思います。 そんな時は、関数を使うと記述量を大幅に減らせる可能性があります。 この関数の使い方についてご紹介します。 関数と[…]

自作関数を使って処理を再利用する方法

以下のコードを「layer0001」の位置にコピペします。

//© 2021 COLORCODE-AE
//レイヤー名末尾の数字を数値として返す
function getNumericFromLayerName(nDigit){
    var sLayerName = thisLayer.name;
    var sNumeric = sLayerName.slice(-nDigit) ;
    return parseInt(sNumeric, 10);
}

//現在のコンポジションに分割画面として配置したレイヤー位置を返す
function getSplitScreenPosition(nTargetIndex, nExclusionLayerNum){
    var nCompWidth = thisComp.width;
    var nCompHeight = thisComp.height;
    var nIndex = nTargetIndex - 1;
    var nLayerNum = thisComp.numLayers - nExclusionLayerNum;
    var nDivisionNum = Math.floor(Math.sqrt(nLayerNum - 1)) + 1;
    var nOffsetXSpace = nCompWidth / (nDivisionNum * 2);
    var nOffsetYSpace = nCompHeight / (nDivisionNum * 2);
    var nXSpace = nCompWidth / nDivisionNum;
    var nYSpace = nCompHeight / nDivisionNum;
    var nXIndex = (nIndex % nDivisionNum) + 1;
    var nYIndex = Math.floor(nIndex / nDivisionNum) + 1;
    var nPositionX = nOffsetXSpace + (nXSpace * (nXIndex - 1));
    var nPositionY = nOffsetYSpace + (nYSpace * (nYIndex - 1));
    return [nPositionX, nPositionY];
}
var nIndex = getNumericFromLayerName(4);
getSplitScreenPosition(nIndex, 0);
※ ルートの計算 Math.sqrt() はこちらを参考にしています。

続いて、「layer0001」のスケールに以下のコードをコピペします。

//© 2021 COLORCODE-AE
function getSplitScreenScale(nExclusionLayerNum){
    var anOrgScale = thisLayer.transform.scale;
    var nLayerNum = thisComp.numLayers - nExclusionLayerNum;
    var nDivisionNum = Math.floor(Math.sqrt(nLayerNum - 1)) + 1;
    return [anOrgScale[0]/nDivisionNum, anOrgScale[1]/nDivisionNum];
}
getSplitScreenScale(0);

これで、準備完了です。「layer0001」をコピペすると、自動的に分割画面が作成されます。レイヤーを100個にコピペすれば、自動的に10×10の画面になります。

この配置したレイヤーの一つを選択し、プロジェクトパネルにあるコンポジションなどを、Windowsの場合は[Alt]、Macは[Option]を押しながら、選択したレイヤーにドラッグ&ドロップして置換することで、分割画面が完成します。

処理にはレイヤー名を使用しているので、レイヤー名は変更せずにご利用ください。

関数の使い方

位置

関数 getSplitScreenPosition には、引数が2つあります。

  1. nTargetIndex・・・現在のレイヤー番号
  2. nExclusionLayerNum・・・カウントから除外するレイヤー数

①はレイヤー名から自動取得します。②は分割画面以外でレイヤーを使いたい場合に、カウントから除外するレイヤー数を指定します。通常は0にします。例えば、背景用に1つレイヤーを追加したい場合は、②を1にします。

この関数を実行すると、コンポジション内のレイヤー数に応じて、分割配置後の位置を返します。

①の自動取得処理 getNumericFromLayerName は、以下の記事で解説していますのであわせてご覧ください。

関連記事

AfterEffectsのエクスプレッションで、レイヤーごとに少しずつ処理を変えたい場合があると思います。その場合は、レイヤーをコピペをするだけで、レイヤー毎に違う動作をする処理が作れます。 具体的には、以下の2種類のどちらかの数値[…]

レイヤーをコピペするだけで処理を変える方法

スケール

関数 getSplitScreenScale には、引数が1つあります。

  1. nExclusionLayerNum・・・カウントから除外するレイヤー数

①は位置の関数の引数と同じ役割です。

この関数を実行すると、コンポジション内のレイヤー数に応じて、分割配置後のスケールを返します。

関数の説明

ざっくり書くと以下の処理をしています。

位置

getSplitScreenPosition 関数

  • コンポジションサイズを自動取得
  • レイヤー総数の平方根から分割数を算出
  • X方向と、Y方向の間隔計算
  • 配置位置を計算し、結果を返す

スケール

getSplitScreenScale 関数

  1. スケールを自動取得
  2. レイヤー総数の平方根から分割数を算出
  3. 分割数からスケールを計算し、結果を返す

まとめ

3×3程度の画面分割であれば、以下の整列機能を使った方が早いかもしれません。

関連記事

AfterEffectsで4画面、9画面、16画面などの分割画面を手動で位置調整するのはなかなか大変な作業です。 分割画面を簡単に作成するには、整列パネルを使います。具体的な手順をまとめていきたいと思います。 この記事で出来る[…]

簡単に分割画面を作る方法

それ以上の画面分割を作る場合は、今回の処理を使った方が早いと思いますので、是非おためしください。

分割画面をレイヤーコピペだけで作る方法
最新情報をチェックしよう!
>Aeをもっと便利に。「COLOR CODE - AE」

Aeをもっと便利に。「COLOR CODE - AE」

AfterEffectsをもっと便利に使う為のコンテンツを制作・発信しているブログです。YouTube「COLOR CODE - AE チャンネル」では、エフェクト、エクスプレッション、プリセット、プラグインのリファレンス動画を公開しています。チャンネル登録もお待ちしています!

CTR IMG