キーフレームアニメーションの途中だけループさせるエクスプレッションの使い方


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の数値を入力してください。
これで指定したキーフレームのループと停止を行うことができます。













 


PAGE TOP