動画はプロジェクトウィンドウ>右クリック>フッテージを変換>ループ回数を指定で簡単にループ化できますが、コンポジションはループ設定がないため、タイムリマップでループさせることになります。
ちょっとしたアニメーションでループさせたいことが多いので、レイヤーを続けて何個も配置するのはレイヤー管理上好ましくないため、エクスプレッションで1レイヤーをループさせてみます。
- タイムリマップを適用
- 最終フレーム1フレーム前にキーを追加
- 最終フレームのキーフレームの値を0に変更
- タイムリマップにエクスプレッション適用
という流れになります。
レイヤーにタイムリマップを適用すると、自動でキーフレームが2つ打たれます。
しかし最終フレームのキーフレームは、コンポジションの最終フレーム+1フレームです。このままループさせると1フレーム余分でこれが空のフレームなので、1フレーム前にキーフレームを打ち直します。
最終フレーム1フレーム前にキーフレーム追加
すると、コンポジションの持っているデュレーションとタイムリマップが一致します。
最終フレームのキーフレームを0に設定し直す
現在最終フレームにはレイヤーコンポジションの最終フレーム+1フレームの時間が入っていますが、これを削除ではなく「0」に修正します。
これがミソです。
これやらないでキーフレームが2つだけだと、たまにループ状態のどこかのフレームが飛ぶ謎の仕様があります。
この状態でも稀に飛ぶフレームが存在する場合がありますが、大体キャッシュを削除すると解決することが多いです。
タイムリマップにエクスプレッション適用
これでループさせるキーフレームが完成です。タイムリマップにエクスプレッション「loopOut()」を打ち込みましょう。
loopOut();
今回覚えるエクスプレッション
今回新しく学べるエクスプレッションは
loopOut(type,numKeyframes);
これが本来のかたちです。
ただし、カッコの中の引数は2つとも省略可能なのですぐにカッコを閉じてOKです。
同じカテゴリのエクスプレッションにloopIn()やloopInDuration()、loopOutDuration()もあり、それぞれtypeは4種類、numKeyframesも半角数字と、それぞれ省略せずなにが指定できるのか気になる方は、すでに解説が溢れていますのでネットで検索してみてください。
記事の中で登場した場合、当サイトでも解説が入る予定です。
今回は「初めから終わりのフレームまでを繰り返す」という動きのため、loopOutの一番の省略形「loopOut()」で済みます。丸暗記でいいです。
一番覚えたいのはこんな短いエクスプレッションではなく、After EffectsにおけるloopOutの仕様です。
フレームが飛ぶ可能性があるので、本来キーフレームは2つでいいものを最後に0のキーフレームを余分に打つと狙った動きになるという点を伝えられればと思い記事にしました。
この記事へのコメントはありません。