《物理演算!》レイヤーを放物運動させる方法

Adobe AfterEffects での物理演算第二弾記事です。今回は、物を投げた時の運動である、放物運動(斜方投射)について処理を作成してみました。

風や空気抵抗などの様々な要因は考えず、シンプルに二次曲線を描く方法で実現していきます。

※ エクスプレッションの使い方については以下の記事で説明していますのでご覧ください。
関連記事

AfterEffectsには、エクスプレッションという、Javascriptのエンジンを使ったプログラミングができるようになっています。 このエクスプレッションを使うことで、様々な計算やアニメーションを自動化し、制作を最大限に効率化[…]

エクスプレッションの使い方

実現イメージ

以下の動画のように放物線を描く動きを作ります。

処理イメージ

処理イメージ

x軸方向は一定速度、y軸方向は自由落下の公式を使って位置を計算します。放物線の頂点時刻がt=0となるように計算で補正します。

事前準備

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

② シェイプレイヤーを作成し、「楕円形」と「塗り」を追加し、レイヤー名を「layer0001」にします。

これで準備OKです。

処理内容

放物運動後の位置を取得する関数を作成しました。

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

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

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

以下のコードを「layer0001」の位置のエクスプレッションにコピペします。

//c 2021 COLORCODE-AE
//放物運動後の位置を返す
function getProjectileMotionPosition(anTopPosition, nTopTime, n1mPx, nSpeed){
    var nG = 9.8;
    var nT = time - nTopTime;
    var nAddX = nSpeed * nT;
    var nAddY = nG * n1mPx * Math.pow(nT, 2);
    return add(anTopPosition, [nAddX, nAddY]);
}
//関数を使う
var anTopPosition = [960, 100];
var nTopTime = 1;
var n1mPx = 100;
var nSpeed = 500;
getProjectileMotionPosition(anTopPosition, nTopTime, n1mPx, nSpeed);

これで完成です。再生すると、赤い円が放物線を描く動作をすると思います。

処理説明

今回作成した関数「getProjectileMotionPosition」を使うことで、放物運動の位置を取得します。

関数の使い方

関数「getProjectileMotionPosition」には引数が4つあります。

  1. anTopPosition・・・放物線の頂点位置
  2. nTopTime・・・放物線の頂点時刻(秒)
  3. n1mPx・・・1mを表す画面内サイズ(ピクセル) ※重力計算に使用
  4. nSpeed・・・1秒あたりのx方向の移動量(ピクセル)

①と②で放物線頂点の位置と座標を指定します。③は今回は100pxにしていますが、10pxにすれば落下速度が1/10になります。④はマイナスの値を指定するとx方向の移動が逆になります。

関数説明

関数「getProjectileMotionPosition」では以下の処理をしています。

  1. 放物線頂点が時刻0となるよう補正
  2. x方向は時刻に比例して等速直線運動
  3. y方向は自由落下同様に二次曲線計算
  4. 頂点座標に移動量を加える

まとめ

今回は使いやすくするために、放物線の頂点座標と時刻を指定できる処理にしました。

速度や重力を調整することで色々なアニメーションが作れますのでお試しください。

レイヤーを放物運動させる方法
最新情報をチェックしよう!
>Aeをもっと便利に。「COLOR CODE - AE」

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

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

CTR IMG