Illustratorの複合パスのような機能を使うと、After Effectsでもパスの変形アニメーションを作成できます。
シェイプのアニメーションだけでも多彩なモーショングラフィックスを作成できます。
シェイプの結合

種類
After Effectsの「パスの結合」には以下の5種類があります。
- 結合:1つの合成パスにまとめるモード
- 追加:すべての入力パスの領域(輪郭)を合わせた領域を作成するモード
- 型抜き:最上位のパス領域から下位のパス領域を取り除くモード
- 交差:すべての入力パスが重なり合う領域のみを残すモード
- 中マド:入力パスが重なり合っている領域を除外するモード
サンプル1:左右で異なる表現のアニメーション

左側のアニメーション
- 同一シェイプレイヤー内に「移動する側のシェイプ(楕円形)」と「受ける側のシェイプ(長方形)」を作成します。
- 「パスの結合」を追加し、モードを「追加」に設定して2つの形状の輪郭を結合します。
- 2つのシェイプと「パスの結合」をグループ化し、名前を「図形グループ」にします。
- 画面の右半分全体を覆う長方形シェイプを追加します。
- 「パスの結合」を追加し、モードを「型抜き」にして右半分を削ります。
- これらをさらにグループ化し、名前を「アニメーショングループ_左」にします。
右側のアニメーション
- 「アニメーショングループ_左」を複製し、名前を「アニメーショングループ_右」に変更します。
- 「図形グループ」内に「パスのオフセット」を2つ追加し、線の結合を「ラウンド」にして「量」で角の丸みを調整します。
- もう一方の「パスのオフセット」の量は、エクスプレッションで正負逆の同じ値になるよう設定します。
- 「アニメーショングループ_右」直下の「パスの結合」のモードを「交差」に変更し、画面右半分のみを表示します。
-content("アニメーショングループ_右").content("図形グループ").content("パスのオフセット 1").amount正負のパスのオフセットを組み合わせると境界を丸められますが、細い部分や鋭い角の形状が元と完全に一致するとは限りません。量を0にした形とも比較してください。
コンテンツ(左右のアニメーショングループの親)
- 最上位に「パスの結合」を追加し、モードを「追加」にして左右のアニメーショングループを結合します。
- 「塗り」や「線」は個別ではなく、この親階層にまとめて追加して一括調整します。
参考シーン:https://t.co/TsuSWm99yJ
サンプル2:リピーターを使った繰り返しアニメーション

作成方法
- シェイプツールでベースとなる図形を作成します。
- 作成したシェイプをグループ化し、「図形グループ」とします。
- 横用リピーターを追加し、コピー数5・位置[80,0]・スケール[100,100]・回転0にします。その下へ縦用リピーターを追加し、コピー数3・位置[0,80]・スケール[100,100]・回転0にします。横5×縦3の15個が基本の格子になります。
- グループ内に「塗り」や「線」を追加します。
- 「パスの結合」を追加し、モードを「追加」に設定します。
- 「パスのオフセット」を2つ追加して結合を「ラウンド」にし、一方の量をマイナス値にしてサイズを元に戻しつつ丸みを付けます。
- 「トランスフォームのウィグル」を追加し、サイズがランダムに変動するアニメーションを設定します。
サンプル3:エクスプレッションを使った線アニメーション

作成方法
- ペンツールなどでアニメーションさせるパス(ライン)を作成します。
- 「パスのトリミング」を追加し、「終了点」にキーフレームを打って線が伸びるアニメーションを作成します。
- 開いたパスを使う場合は「線」を追加し、「線幅」を10にします。パスのオフセットは輪郭の位置を変える操作で、線幅の調整とは分けます。
- パス・パスのトリミング・線を「G_01」へまとめ、その親グループを「線群」と命名します。G_01内の演算子名は「パスのトリミング 1」「線 1」に揃えます。
- 「G_01」を複製して「G_02」を作成します。
- レイヤーへスライダー制御を2つ追加し、「遅延(秒)」=0.1、「線幅差」=2と命名します。G_01のトリミング終了点は0秒=0%、1秒=100%の2キーを作ります。
「G_02」のパスのトリミングの「終了点」にエクスプレッションを追加します。
// G_02以降の「パスのトリミング 1」→「終了点」へ貼付。
var match = thisProperty.propertyGroup(3).name.match(/^G_(\d+)$/);
var id = match ? Math.max(1, Number(match[1])) : 1;
var delay = Math.max(0, effect("遅延(秒)")(1));
var master = thisLayer.content("線群").content("G_01")
.content("パスのトリミング 1").end;
master.valueAtTime(time - delay * (id - 1));
G_02以降の「線 1」の「線幅」には次の式を貼ります。G_01の線幅は10のままにし、参照元へこの式を貼らないでください。
// G_02以降の「線 1」→「線幅」へ貼付。
var match = thisProperty.propertyGroup(3).name.match(/^G_(\d+)$/);
var id = match ? Math.max(1, Number(match[1])) : 1;
var step = Math.max(0, effect("線幅差")(1));
var master = thisLayer.content("線群").content("G_01")
.content("線 1").strokeWidth;
Math.max(0, master.value - step * (id - 1));
正規表現で末尾の数字全体を読むため、G_100は100になります。終了点と線幅の直上は演算子、2つ上はコンテンツ、3つ上はG_02となる階層を前提にしています。余分なグループを挟むとpropertyGroup(3)の参照先が変わるため、階層を揃えてください。timeから遅延を引く式なので、遅延(秒)が0.1ならG_02は0.1秒、G_03は0.2秒遅れます。旧式の加算は同じ値だけ先行する動作でした。
- 「G_03」「G_04」と、線の先端が自然に細くなるまでグループを複製します。
- G_01〜G_05の「線」を各グループ内に置きます。親の線を使うとグループごとの線幅差を付けられません。参照するG_01を残して複製します。
After Effectsの他の操作やテクニックは、まとめ記事から確認できます。

入力例・参照エラーの切り分け・戻し方
| 入力 | 期待する数値 |
|---|---|
| G_02 / 遅延0.1 / 線幅差2 | 0.1秒遅れ、線幅8 |
| G_03 / 同じ設定 | 0.2秒遅れ、線幅6 |
| G_100 / 同じ設定 | 9.9秒遅れ、線幅0に制限 |
| グループ名が違う | 番号は1扱い。G_数字の名前へ直す |
式の数値と参照名をローカルで確認しています。
今回のAE本体での階層選択・描画・取り消しは未確認です。
参照エラーの場合は「線群」「G_01」「パスのトリミング 1」「線 1」とエフェクト名を照合し、名前変更より先に入力先と階層を確認します。
パスの結合は同じグループ内で上にあるパスを入力にし、型抜きは最上位のパスから下のパス領域を引きます。
形を反転して抜いてしまう場合は、塗りより上のパス順と型抜き演算子の位置を確認します。
練習前に別名AEPを保存し、戻すときは複製側の式をOFFにしてG_01だけを表示します。
パスの結合は演算子の有効スイッチをOFFにして元のパスと比較します。
元のグループ構造まで戻す場合は保存したAEPを開き直します。
Adobe:パス演算とリピーター、Adobe:propertyGroupとvalueAtTime。
シェイプを使ったアニメーションの記事は、ほかにもあります。

まとめ
- パスの結合には「結合」「追加」「型抜き」「交差」「中マド」の5種類がある
- パスのオフセットを正負2つ組み合わせることで、サイズを維持したまま角の丸みを表現できる
- リピーターやトランスフォームのウィグルを併用することで、複雑なモーションを効率的に作成できる
- エクスプレッションでグループ名や数値を参照すれば、複製するだけで連動する制御が可能になる
