After Effectsのwiggleに6秒の周期を持たせ、同じ揺れを繰り返す方法です。2Dシェイプの回転に式を入れ、数値の周期と書き出しの境界を確認します。
エクスプレッションでランダムな動きを付けつつ、周期的にループさせたい場面で役立ちます。

6秒の周期と出力フレームを確認する練習
練習コピーに30fps・6秒のコンポジションと2Dシェイプを用意し、回転のキーなし・元の回転0度から始めます。
回転のストップウォッチをAlt/Optionを押しながらクリックし、下のloop-wiggleの式を貼り付けます。
レイヤーの開始を周期の0秒とし、6秒ずれた時刻で同じ段階を繰り返す式です。
これは揺れを逆順に戻すピンポンではなく、2つの評価時刻の揺れを補間して周期をつなぐ例です。
loopSecは0より大きい秒数にし、0・1・2秒と6・7・8秒の比較には確認用に尺を12秒へ延ばします。
境界の直前と直後も再生し、跳びや停止が気にならないか確認します。
元の回転のキーやほかの式を加えると、この静止した基礎値の確認条件から変わります。
6秒の出力に戻すと30fpsで180フレームとなり、フレーム番号は0〜179で、6秒ちょうどのフレームは含みません。
このため最終フレームと先頭フレームの数値が同一かだけで、ループの良し悪しを判断しません。
短く書き出して再読み込みし、2回続けて再生した境界を確認します。
終了後は回転の式をOFFにして0度へ戻し、元コピーを開いて練習ZIPの記録欄へ周期と結果を残します。
2026年10月14日、Windows 11 Pro(OSビルド26200)・After Effects 26.5(26.5×89、Build 89)のJavaScriptエンジンで、以下の式と6秒の連番出力を検証しました。Adobe公式のwiggle・easeの仕様では、wiggleの最後の引数が評価時刻、easeが端で緩やかに変化する補間として説明されています。
| 確認すること | 期待する結果 | 違ったとき |
|---|---|---|
| 6秒の周期 | 同じ段階を前向きに反復 | ピンポンと区別 |
| 出力の端 | 0〜179の180フレーム | 2回再生して境界を見る |
| 元へ戻す | 回転0度 | 式OFFと元コピーを確認 |
Windowsで確かめた6秒周期
960×540、30fpsのコンポジションに、上端をアンカーポイントとする単色の三角形を作りました。回転0度・キーなし・親なし・2Dです。freq=0.3、amp=90、loopSec=6の本文の式をそのまま使い、数値比較時だけ尺を12秒にしました。グラデーションと放射状ブラーは今回の検証には含めていません。
0秒と6秒はどちらも−67.7753度、1秒と7秒は−32.2642度、2秒と8秒は23.2231度でした。同じレイヤーで6秒後の回転が一致し、式エラーはありませんでした。乱数を使うため、別のレイヤーでこの角度になることは保証しません。

レイヤーのイン点を2秒へ変更すると、2秒・3秒・4秒の値が、変更前の0秒・1秒・2秒と一致しました。8秒・9秒・10秒も同じでした。周期の基準はコンポジションの0秒ではなくinPointです。式を無効にすると、0秒・1秒とも元の回転0度へ戻りました。
尺を6秒へ戻してTIFF連番をレンダーすると、loop_00000.tifからloop_00179.tifまで180枚でした。30fpsで再読み込みしたフッテージの長さも6秒です。下の画面は同じ連番を0〜6秒と6〜12秒に並べ、2回目の先頭に移動した状態です。

境界直前の179フレーム(5.9667秒)は−67.8702度、6秒ちょうどは−67.7753度、181フレーム(6.0333秒)は−67.5981度でした。最終フレームと先頭の差は約0.0949度で、同一フレームではありません。6秒ちょうどを末尾に追加すると先頭が重複するため、180枚の範囲で出力します。
つなぎ目で大きく跳ぶ場合は、まず回転のキーを外した練習コピーで周期を比較し、loopSec、イン点、出力範囲、再読み込み時のfpsを確認してください。回転にキーがある条件、別のエクスプレッションエンジンやAEバージョン、グラデーション・ブラーを重ねた作例は未検証です。練習ZIP全体の動作も今回の検証対象外です。
シェイプの作成
動作確認用にサンプルとなるシェイプを作成します。
- ペンツールなどで三角形のパスを作成し、アンカーポイントを上端に配置します
- 塗りをグラデーション(円形)に設定し、下方向へ広がるように調整します
- メニューの「エフェクト」>「ブラー&シャープ」>「ブラー(放射状)」を適用します
アニメーションの作成
- シェイプレイヤーの「回転」プロパティにあるストップウォッチをAlt/Optionを押しながらクリックします
- 表示された入力欄に下記のエクスプレッションを入力します
var freq = 0.3;
var amp = 90;
var loopSec = 6;
var t = ((time - inPoint) % loopSec + loopSec) % loopSec;
var a = wiggle(freq, amp, 1, 0.5, t);
var b = wiggle(freq, amp, 1, 0.5, t - loopSec);
ease(t, 0, loopSec, a, b);
2つの評価時刻の揺れを補間し、時間を周期内に戻して同じ向きに反復します。
After Effectsの基本的な操作や関連テクニックは、まとめ記事からご覧いただけます。

MOTOKI-LLC/cg-method-codeは以前の実装の参照先です。
ランダムな動きを作るエクスプレッションは、ほかにもあります。



