Adobe After Effects
キーフレームのループを停止して再度キーフレームを有効にするエクスプレッション
キーフレームでループアニメーションを作る際は、エクスプレッションの「loopOut」が主流です。「loopOut」は簡単に呼び出せて使いやすいエクスプレッションです。ですが、ループを途中で止めることはできません。そこで今回は、キーフレームとキーフレームの間だけをループさせることができるエクスプレッションをご紹介します。
var fps = 60; // コンポジションのフレームレート var loopEndFrame = 5 * fps + 15; // ループ終了時間指定 var loopEndTime = loopEndFrame / fps var loopStart = thisProperty.key(1).time; // ループ開始のキーフレーム指定 var loopEnd = thisProperty.key(3).time; // ループ終了のキーフレーム指定 var loopDuration = loopEnd - loopStart; if (time < loopStart) { value } else if (time < loopEndTime) { var t = (time - loopStart) % loopDuration valueAtTime(loopStart + t) } else { var t = (loopEndTime - loopStart) % loopDuration var lastLoopValue = valueAtTime(loopStart + t) if (thisProperty.numKeys > 3) {; // ループ終了のキーフレーム指定 var nextKeyTime = thisProperty.key(4).time; // 再開するキーフレーム指定 if (time < nextKeyTime) { linear(time, loopEndTime, nextKeyTime, lastLoopValue, thisProperty.key(4).value); // 再開するキーフレーム指定 } else { value } } else { lastLoopValue } }
このエクスプレッションの使い方
数値を自分の制さないように合わせて変更します。
・var fps = 60; // コンポジションのフレームレート
ここにコンポジションのフレームレートと同じ数値を入力します。ここでは60fpsのコンポジションなので60と設定。
・var loopEndFrame = 5 * fps + 15; // ループ終了時間指定
ここにループを止める時間を入力します。初期設定は「5 * fps + 15;」で5秒15フレームとなります。
・var loopStart = thisProperty.key(1).time; // ループ開始のキーフレーム指定
左から何個目のキーフレームをループの開始範囲とするか指定します。初期設定のkey(1)では、1つ目のキーフレームを指定しています。
・var loopEnd = thisProperty.key(3).time; // ループ終了のキーフレーム指定
左から何個目のキーフレームをループの終了範囲とするか指定します。初期設定のkey(3)では、3つ目のキーフレームを指定しています。
・if (thisProperty.numKeys > 3) {; // ループ終了のキーフレーム指定
ループ終了後の処理の設定です。スムーズに次のキーフレームに繋ぐために上記項目で設定したループの終了範囲と同じ数値を指定してください。
・var nextKeyTime = thisProperty.key(4).time; // 再開するキーフレーム指定
・linear(time, loopEndTime, nextKeyTime, lastLoopValue, thisProperty.key(4).value); // 再開するキーフレーム指定
この2行に、上記で指定したループの終了範囲のキーフレーム+1の数値を入力してください。
これで指定したキーフレームのループと停止を行うことができます。