AfterEffectsのExpressionでは
index
で自分自身のレイヤー番号を取得できるみたい。
なのでこれを使って、僕がVJやるときよく使う「プロジェクターの領域確認用映像」を作り直してみた。
まず、一つ目のシェイプレイヤーの画面中央に真円を作る。
線の太さは10px。
楕円形サイズをExpression設定できるようにして(ストップウォッチのアイコンをopt(WinではAlt)押しながら押すのよ)
r = index * 50;
[r, r]
と記述。
これで、円の大きさがレイヤー番号*50pxになった。これはindex番号が1のレイヤーなので、半径50pxの円。
次に不透明度にキーフレームを打つ。
今回は
- 1秒の5f前に25%
- 1秒ジャストで100%
- 1秒の20f後に25%
の三つを打つ。
このレイヤーをコピーしてindex2に設定(最初に作ったレイヤーの下に設定できてればオッケー)
この index2 レイヤーは不透明度だけいじる。
さっき設定した不透明度のキーフレームがあると思うけど、それは削除。
で、以下のExpressionを設定。
thisComp.layer(index - 1).transform.opacity.valueAtTime(time-1);
この意味は、ひとつ上のレイヤーの1秒前の透明度を適用する、という意味。
つまり、一つ上のレイヤーに1秒遅れて不透明度が変わるということですね。
ここまでやったら index2 のレイヤーをどんどんコピぺ。
全レイヤーにキーフレーム打ちすると、キー打ちするフレームがずれちゃったりしてタイミングが気持ち悪くなったりするけど、これならそんな心配要らない。
そもそも、いちいちキーフレームを正確に打つ手間が省けるので最高にはかどる。
ということで、単純作業だと小一時間くらいかかる作業がほんの数十秒で完結。
Expressionすばらしい。
ただ、気づいているかもしれないけどindex2以降のレイヤーで時間を無限参照に近い形にしているので、エンコードとかプレビューに時間かかるかも。
Quadro2枚刺ししてるXeon 3GHzのマシンで30秒の動画作るのにエンコードに6分弱かかってるので・・・どの程度GPUがエンコードに聞いてくるのかはわからないけど、それなりの覚悟は必要かも。
で、出来上がりました。
追記:
あと、「AfterEffectsって平面の色変えられない」と思い込んでて、めんどくさいけど毎度毎度平面を新規作成していた。
のだけど、
平面レイヤーを選択 -> メニューの「レイヤー」 -> 「平面設定」
で変更できるということをついさっき知りました。
また賢くなったぜ。