time構文とposterizeTimeメソッド
(Animoplex Youtube Channelより)
time構文
time
- 現在時間を返す。
- 基本単位は「秒 seconds」。
- timeエクスプレッションはプロパティの安定した、いつまでも続く動きを作るのに便利。
秒で指定するメリット
コンポジションでは、毎秒何フレームにするか(Frames Per Second)を設定できる。そのため、フレーム数で換算すると、その設定によって時間が変わってしまう。
例:ロケットが月の周りを回るアニメーション
- ・ロケットの親であるヌルオブジェクトのZ回転のプロパティを表示(ショートカット「R」)
- ・[Z回転]にエクスプレッションを追加(Altキーを押しながらストップウォッチを押す)
- ・エクスプレッションフィールドに
time
とだけ書く。タイムインジケーターをスクラブすると、わずかに回転しているのがわかる。これは「毎秒1°ずつ」回転しているから。
- 今度は
time*360
と記述。すると「毎秒1°×360=360°」回転することになる。一秒間に一回転する。
- 速度を落としたい場合、たとえば
time*(360/5)
とすれば、1/5の速度で回転することになる。
例:月のアニメーション
月の親のヌルの[Y回転]に、ロケットの親ヌルのZ回転で書いたエクスプレッションをコピペする。
- 先ほどのロケットのZ回転のエクスプレッションをコピーする。
- 月の親ヌルのY回転にエクスプレッションを追加
- エクスプレッションフィールドにペーストする。
例:彗星Cometのアニメーション
- 彗星の位置プロパティを開く(ショートカット「P」)
- Y軸に対してアニメーションをつけたいので、次元に分割する([位置]を右クリック>次元を分割 separate dimensions)
- Y位置にエクスプレッションを追加
- エクスプレッションフィールドに
value+time*-1000
と書く。valueはそのプロパティの現在時間での値を表す。彗星は速く動くようにしたいので、timeの-1000倍を現在値(オリジナルの値)に加えるようにした。※After Effectsでは垂直下方向がY軸のプラス
posterizeTimeメソッド 4:20
「ポスタリゼーション時間」は3つの部分から構成される
posterizeTime(fps);value
- メソッドの名前…posterizeTime
- 毎秒何コマでポスタライズするか…()内の数字
- 現在時間の値…;のあとに記述
実際に使ってみる。さきほどの惑星の周りをまわるアニメーションにポスタリゼーションがかかるようにする。
ロケットのアニメーションに「ポスタリゼーション時間」を追加
ロケットの親ヌルのZ回転のエクスプレッション・フィールドに付け加えて
posterizeTime(3); time*(360/5)
と記述。読みやすいよいにセミコロンのあとにスペースを入れた。RAMプレビューするとロケットだけ「3フレーム/秒」で動くのがわかる。
※posterizeTime(fps) は単独では使用できない。ポスタライズするプロパティ(valueやvalueAtTimeなど)が必要。
※註:時間ポスタリゼーションは「ポスタリゼーション時間」エフェクト(エフェクト>時間>ポスタリゼーション時間)を利用したほうが便利な場合があります。適宜、使い分けましょう。
エクスプレッション言語メニュー
エクスプレッション言語メニューの[Global]カテゴリーのなかにtimeエクスプレッションがあります。