crftロゴ

Math.sin(time);

このエントリーをはてなブックマークに追加

Math.sin(time);

サインカーブとかいうとわかりにくいですが、早い話0~1~0の1周期をおおよそ6秒で繰りかえす命令です。なぜおおよそ6秒なのかは、まったくの謎です。math.sin(time);ではなくMath.sin(time);と最初のMは大文字にしないとエラーになります。最後の;(セミコロン)は日本語でいうところの”。”みたいな感じで命令文の最後というしるしです。

0>1>0>を繰り返されても、なんの得もないように思えますが、実はいろいろなことに応用が利きます。要は数字が変化して元に戻って繰り返すことができるわけで、

例えば透明度 100~0

例えば座標 Xの位置を左右に揺らす

などなど

たとえば透明度を変化させて明滅

100*Math.sin(time*6);

対象になるレイヤーは何でもよいんですが、例えばテキストレイヤーで”BLINK”と入力しましょう。

レイヤープロパティの不透明度を開いて、ストップウォッチのアイコンをOptionキーもしくはaltキーを押しながらクリックします。スクリプトを記述するエリアが表示されるので、そこへ上のスクリプトをペーストします。

これだけでもかなり便利ですが、After Effectsのウイップレットというやつがここで真価を発揮します。幸か不幸かループのタイミングが約6秒ということで、上の例文ではその約6秒をつかさどっているtimeをtime*6とやって6倍の速さにしました。しかしプロジェクトを作っている過程でこのループを2秒にしたくなったり、15フレームにしたくなったり、さらには点滅スピードを変えたくなったり。

1. 新規調節レイヤーを追加して、エフェクトメニューからエクスプレッション制御>スライダー制御と選択します。

2. 先ほど入力したスクリプトをハイライトして、time*6の6の部分だけを選択します。不透明度にあるウイップレットをぎゅーんと1で作った調節レイヤーのスライダー制御でドロップします。ひもでつなげる感じです。

ただしく接続されるとスクリプトが以下のように書き換わります

100*Math.sin(time*thisComp.layer("調整レイヤー 1").effect("スライダー制御")("スライダー"));

なんだか、さっぱりわからない見た目になりましたが、

thisComp.layer(“調整レイヤー 1”).effect(“スライダー制御”)(“スライダー”)

これでひとかたまりになっています、和訳すると

このコンポジションの調整レイヤーのエフェクトのスライダー制御のスライダー

ということになります。.(ピリオド)を”の”に置き換えると結構意味が見えてきます。

つまり、スライダーで設定した値がtime*の後に代入されるわけです。仮に値を変えたいレイヤーが複数あった場合でも、スライダーで一括して制御することができるし、さらには点滅のスピードを速くしたり、遅くしたりアニメーションすることもできるようになります。