《2パターン解説!》レイヤーの動きを簡単に追従させる方法

AfterEffectsでレイヤーの動きを追従させる場合、valueAtTimeというエクスプレッションを使うと簡単に実現できます。

この具体的実現方法を2パターン説明していきたいと思います。

valueAtTimeとは?

指定時刻のプロパティ値を取得するエクスプレッションです。具体的な動作は以下の動画をご覧ください。

過去や未来の位置、不透明度、回転など、指定した時刻のプロパティ値を自由に取得できます。今回は過去の位置を取得するのに利用します。

実現イメージ

実際にvalueAtTimeを使った追従動作が以下の動画です。

この追従部分の作り方を説明していきます。

事前準備

① 新規コンポジションを作成(1920×1080)

② シェイプレイヤーを作成し、「楕円形」「塗り」を適用して、名前を「layer0001」に変更。

② このシェイプレイヤーをコピーして3個にし、「layer0003」の名前を「topLayer」に変更。

※ 今回はレイヤーインデックスは使わないので、自由に並び替えて問題ありません。

これで準備完了です。

処理イメージ

処理イメージ

追従レイヤー「layer0001」「layer0002」に、先頭レイヤー「topLayer」の過去の位置を指定することで、追従するような動作にしています。過去位置の取得にvalueAtTimeを使います。

処理内容

先頭レイヤー「topLayer」の位置に以下のエクスプレッションをコピペします。これで自動的に動き出します。

wiggle(0.5, 400);

一般的な方法

追従レイヤー「layer0001」の位置に以下のコードをコピペします。

thisComp.layer("topLayer").transform.position.valueAtTime(time - 0.2);
※ timeは、現在時刻を取得するエクスプレッションプロパティです。

次に、「layer0002」の位置に以下をコピペします。

thisComp.layer("topLayer").transform.position.valueAtTime(time - 0.4);

これで、再生すると、先頭レイヤーの動作を追従する動きができていると思います。

レイヤーコピペで対応する方法

追従レイヤー「layer0001」「layer0002」の位置の先ほどのコードを削除して、以下のコードをコピペします。

//© 2021 COLORCODE-AE
//レイヤー名末尾の数字を数値として返す
function getNumericFromLayerName(nDigit){
    var sLayerName = thisLayer.name;
    var sNumeric = sLayerName.slice(-nDigit) ;
    return parseInt(sNumeric, 10);
}
var nLayerIndex = getNumericFromLayerName(4);
var nTime = time - (nLayerIndex * 0.2);
thisComp.layer("topLayer").transform.position.valueAtTime(nTime);

これで先ほどと同じ動作になったと思います。更に、「layer0002」のレイヤーをコピペしていくつか増やしてみてください。

増やしたレイヤーも追従する動作になっていると思います。

処理説明

関数 getNumericFromLayerName では、レイヤー名の数字を数値に変換しています。「layer0001」からは1を取得することで計算に利用しています。この処理は以下記事で解説しています。

関連記事

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

レイヤーをコピペするだけで処理を変える方法
※ 関数については以下の記事で説明していますのでご覧ください。
関連記事

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

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

具体的な遅延時間の計算は下から2行目で行っています。

  • 現在時刻-(レイヤー番号×遅延量)

先頭レイヤーは、現在の時刻「time」の位置にいるので、現在の時刻から遅延させる時間を計算しています。遅延時間を変えたい場合は、下から2行目の「0.2」を別の秒数に変えます。

まとめ

追従動作は難しそうに見えますが、仕組みがわかってしまえば意外と簡単です。

今回は、valueAtTimeを過去位置の取得に使用しましたが、色や、回転など他の動作に使っても面白い効果を出せますのでお試しください。

最新情報をチェックしよう!
>Aeをもっと便利に。「COLOR CODE - AE」

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

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

CTR IMG