time|キーフレームなしで回転・移動するAEエクスプレッション

timeで回転するラインの作例。60度毎秒で0秒から2秒まで進む角度。

図形を一定の速さで回したい。時計の長針と短針を連動させたい。そんなときは、現在の時間を表す time を使うと、キーフレームなしで動きを作れます。

AEエクスプレッション集の第4弾は、回転の基本から、レーダー風のライン、長針と短針が連動する時計まで。速さを決める数値と、動き始める時間の基準を順に見ていきます。

この記事で使用したAEプロジェクトを無料ダウンロードできます。ダウンロードは記事の最後から。

目次

まずは完成形:一定の速さで回転させる

左:式なし/右:回転にtimeを適用。右のラインは1秒に60度、時計回りに回ります。 6秒・音声なし。再生ボタンで動きを確認できます。

右のラインは、0秒で0度、1秒で60度、2秒で120度。時間に比例して角度が増えます。回転のキーフレームは0個です。

コピーして使える基本コード

value + time * 60;

回転のストップウォッチを、MacはOption、WindowsはAltを押しながらクリック。式の入力欄に貼り付けます。コードはテキストなので、選択してコピーできます。

要素意味
value式を適用する前の値。今回の回転は0度
timeコンポジションの現在時刻。単位は秒
601秒に増やす角度。今回の速さは60度/秒

time 自体は回転専用の機能ではありません。秒数に数値を掛け、その結果を回転へ渡しているだけです。time * 60; でも回せますが、元の角度を保ちたいときは value + を付けます。たとえば元が30度なら、1秒後は30+60=90度になります。

使う場所と再現手順

項目今回の条件
制作環境After Effects 26.5(26.5×89)/macOS/JavaScriptエクスプレッションエンジン
コンポジション1280×720/30fps/6秒/8bpc
基本例長さ110pxのライン。根元を回転の中心に配置
適用先2Dレイヤーの「回転」。元の値0度、キーなし
素材・フォントAE内の図形と文字。Hiragino Sans W6/Arial Bold。追加プラグイン・外部素材なし
  1. 1280×720・30fps・6秒のコンポジションを作ります。
  2. シェイプレイヤーで上向きのラインを描き、アンカーポイントをラインの根元へ合わせます。
  3. 回転を0度にします。通常クリックでキーを打つ必要はありません。
  4. 回転のストップウォッチをOption/Alt+クリックします。
  5. value + time * 60; を貼り付けます。
  6. 再生して、根元を中心に一定の速さで回ることを確かめます。

エフェクトメニューではなく、動かしたいプロパティに直接入力します。回転する中心がずれている場合は、速さの数値より先にアンカーポイントを確認してください。

After Effectsの実タイムライン。1秒時点のTIME_ROTATIONの回転は60度。
実際のAE画面。時刻0:00:01:00で、回転は0x+60.0度です。赤い数値はエクスプレッションで変化している値です。

速さと方向を変える

基本コードの60を変えるだけで、回転の速さが変わります。下の画像は元の角度を0度に揃えた、同じ1秒時点の比較です。

30、60、120度毎秒の回転を同じ1秒時点で比較。
30なら30度、60なら60度、120なら120度。掛ける値を2倍にすると、同じ時間で進む角度も2倍になります。
数値回り方1周にかかる時間
30時計回りにゆっくり12秒
60時計回り6秒
120時計回りに速く3秒
-60反時計回り6秒
0元の角度で静止回転しない

1周の時間は 360 ÷ 速さの絶対値 で求められます。timeは角度を増やし続けますが、360度を超えても見た目はそのまま回転を続けます。途中で停止する指定は、この基本コードには含まれていません。

途中から登場するレイヤーは、時間の基準に注意

timeは「レイヤーが出てから何秒か」ではなく、コンポジションの時刻です。表示開始を1秒へずらしただけでは、回転も0度から始まるとは限りません。

レイヤー開始1秒・現在時刻1秒で、timeは60度、time-inPointは0度になる比較。
両方のレイヤーは1秒から表示。timeをそのまま使う左は、登場時点ですでに60度。inPointを引く右は0度から始まります。

inPoint はレイヤーの表示開始時刻です。time - inPoint とすると、表示開始を0秒として扱えます。レイヤーを途中から登場させる作例では、次の形が使いやすくなります。

実践1:レーダー風の回転ライン

ラインはコンポジションの1秒から登場し、その時点の0度から1秒に90度ずつ回転します。 6秒・音声なし。再生ボタンで動きを確認できます。
value + (time - inPoint) * 90;
設定値
対象02_RADAR_SCAN内のRADAR_ARM/回転
元の回転0度
レイヤーの表示開始コンポジションの1秒
速さ90度/秒(1周4秒)
コンポジション2秒時点表示開始から1秒なので90度
キーなし

基本例から変えるのは、速さの60を90へ上げ、timeからinPointを引く点です。配布例では、半径61・122・183pxの円と十字線、点を背景に置き、長さ180pxのラインだけを回しています。

ラインのレイヤー開始を1秒へ移動し、根元を円の中心に合わせて式を入力します。円や点には同じ回転を入れず、ラインだけを動かすとレーダーのような見え方になります。円や点は図形で、検出や追尾をする機能はありません。

実践2:長針と短針が連動する時計

10時10分から進む時計。長針をtimeで回し、短針は長針の回転を参照します。動きを見やすくするため、1秒で10分進む早回し。6秒・音声なし。

長針が1周すると、短針は30度だけ進む。この比率を式でつなぐと、長針の速さを変えるだけで、短針も正しい割合で動きます。2本を別々にアニメーションさせる手間を減らせる作例です。

文字盤の上向きを0度とし、10時10分から始めます。長針のレイヤー名を MINUTE_HAND、短針を HOUR_HAND にしてください。

長針の「回転」へ貼り付けるコード

60 + (time - inPoint) * 60;

最初の60は10分の角度(10分×6度)。最後の60は1秒あたりの回転角です。長針は6秒で1周するので、時計の1時間分が6秒に短縮されます。実際の時間と同期する時計ではありません。

短針の「回転」へ貼り付けるコード

300 + thisComp.layer("MINUTE_HAND").transform.rotation / 12;

300は10時の基準角(10時間×30度)。そこへ長針の角度を12で割って足します。開始時は300+60÷12=305度となり、短針も10と11の間へ少し進んだ位置になります。長針だけの速度変更に、短針が自動で追従します。

コンポジション時刻長針の回転短針の回転時計の時刻
0秒60度305度10:10
3秒240度320度10:40
6秒420度(見た目は60度)335度11:10
設定値
コンポジション03_CLOCK_LINKED_HANDS
長針/短針長さ145px/105px。どちらも上向きの線
位置・回転の軸どちらも[640, 400]。アンカーポイントは針の根元
レイヤー開始両方0秒。3Dはオフ、親子付けなし
開始時刻10:10
速度長針60度/秒、短針5度/秒
キーフレーム両方なし
  1. 丸い文字盤を作り、中心から上へ伸びる長針と短針を別々のシェイプレイヤーで用意します。
  2. 両方のアンカーポイントを根元へ合わせ、同じ文字盤の中心へ置きます。
  3. 長針の名前を半角でMINUTE_HAND、短針をHOUR_HANDにします。親子付けはしません。
  4. 長針の回転へ1つ目の式、短針の回転へ2つ目の式を入力します。
  5. 再生して、長針が1周する間に短針が1目盛り分の30度だけ進むことを確かめます。

時計の進む速さを変えるときは、長針の式の最後の60だけを変更します。たとえば30なら1秒で5分、0.1なら実際の時計と同じ進み方です。短針の式はそのままで連動します。開始時刻の定数は、今回は10時10分用です。

長針の角度を360で折り返さないことが大切です。420度は見た目では60度と同じでも、1周進んだ履歴を持っています。短針へ渡す前に % 360 などで60度へ戻すと、短針も前の時間へ戻ってしまいます。レイヤー名が違うと参照エラーになるため、MINUTE_HANDの表記も揃えてください。

動かない・思った位置から始まらないとき

症状確認すること
動かない式が有効か、再生で時刻が進んでいるか、掛ける値が0になっていないかを確認
登場時点ですでに回っているtimeはコンポジション時刻。表示開始から始めるならtime – inPointを使う
元の角度が消えるtime * 60だけでは元の角度を含まない。value + time * 60へ変更
中心が大きくずれる回転の軸となるアンカーポイントを確認
速度が途中で変わる基本・レーダー例のコードは元の値に時間の変化を足す。元の値にキーがある場合、その動きも加算される
時計の短針で参照エラーになる長針のレイヤー名をMINUTE_HANDに揃え、同じコンポジション内に置きます
動きがループしないtimeは時間を増やす値。位置の折り返しや往復を自動で作るものではない

時間を使った回転の基本はAdobeのエクスプレッションの基本でも紹介されています。まずは回転なら度/秒、位置ならpx/秒として数値を決めると、狙った速さへ近づけやすくなります。

作例プロジェクトをダウンロード

基本の回転、レーダー風ライン、長針と短針が連動する時計、速さと開始時刻の比較を収録しています。各レイヤーの式や数値を編集して試せます。

項目内容
版・容量v1.1/93,979バイト(約92KiB)
内容編集可能なAEP、expressions.txt、はじめに.txt
制作環境After Effects 26.5×89/JavaScriptエクスプレッションエンジン
フォントHiragino Sans W6/Arial Bold。フォント本体は同梱していません
利用条件学習・個人制作で利用と改変可。商用利用は個別相談

商用利用はお問い合わせページからご相談ください。ほかのコードと作例はAEエクスプレッション集から探せます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

フリーランスとしてPASを運営し、モーションデザインや映像制作を中心に活動しています。

映像をつくることだけでなく、情報をどう捉え、どう組み替え、どう伝えるかという「編集」に関心があります。

また、越境学習に関わる現場にも参加し、対話や問いを通じた学びの場づくりにも取り組んでいます。

コメント

コメントする

目次