タイムリマップを使ったフォントアニメーションについて

まつらいです。

以前AEオフの時にyama_koさんが「タイムリマップを使った一次元管理」の中でタイムリマップの有用性について話していたので、今回はそれを使ってアニメーションの複製をしてみます。

今回作るのはこのアニメーションです。

今作っている映像用に作った諸々ですが、せっかくなのでチュートリアル的なのを公開。

ついでに最近ハマってるランダムに色を変更しながら表示、みたいのも作ります。

やること

  1. 適当に背景のアニメーションを作る
  2. エクスプレッションで背景アニメーションに色をつける
  3. 文字のアニメーションを作る
  4. エクスプレッションで文字アニメーションに色をつける
  5. レイヤーのインアウトポイントとタイムリマップで制御してみる
  6. 文字をコンポ名から参照させる
  7. スクリプト使って文字の分だけ複製する
  8. スクリプト使って歌詞表示を自動化したい

0.アニメーションのコンポジションを作る

comp

まずは複製元になるコンポジションを作成します。
取り敢えず入りが3秒、抜きが3秒として作っていきます。(あとでタイムリマップ側でついでに速度調整します)

デュレーション 00:00:06;00 でコンポジションを作成します。サイズはとりあえず400×400で。

1.適当に背景のアニメーションを作る

_text_with_frame

背景のアニメーションを作成します。(省きます)

基本的にはパスのトリミングを使ってアニメーションさせてます。

3秒時点を静止して使いますので、イージングとかしてイイ感じに止まるようにしておきます。

bg_conf

2.エクスプレッションで背景アニメーションに色をつける

_text_with_frame_c

本題に入ってきたので細かめに解説。
別コンポジションに常にランダムで動いてる色を持ったレイヤーを作り、それを参照して諸々します。

コンポジション「_global」の設定

  • コンポジション「_global」を作成
  • ヌルレイヤー「gData」を作成
  • エフェクト「エクスプレッション制御 > カラー制御」を追加
  • カラー制御の名前を「RandomColor」に変更
  • 「RandomColor」のカラーにランダムな色を出すエクスプレッションを追加(下のRandomColor.js

global

背景コンポジション側の設定

  • ヌルレイヤー「data」を作成
  • エフェクト「エクスプレッション制御 > カラー制御」を追加
  • カラー制御の名前を「ColoredIn」に変更
  • ColoredIn」のカラーに、comp("_global").layer("gData").effect("RandomColor")を取得、時間によって色を変化させるエクスプレッションを追加(下のColoredIn.js
  • 各シェイプレイヤーの色にthisComp.layer("data").effect("coloredIn")("カラー")を参照するエクスプレッションを書く

coloredIn
ColoredIn_layer

これで背景が完成です。

・「_global」は後々参照しやすいように僕が勝手に作ってるだけです。
・挫折してはいけない。
・説明下手ですみません

3.文字のアニメーションを作る

文字を上に重ねるためのコンポジションを作成します。

こちらもデュレーション 00:00:06;00 で400×400で。

letter_origin

テキストアニメーションを使って動きをつけていきます。

スケールを小さくしながら入り、下に移動しながら薄くなって消えるようにしました。

text_white

4.エクスプレッションで文字アニメーションに色をつける

先ほどのテキストに「塗り」でアニメーションを追加し、色のプロパティを先ほどと同じくランダムで変わるようにエクスプレッションを書きます。

文字色の設定

  • ヌルレイヤー「data」を作成
  • エフェクト「エクスプレッション制御 > カラー制御」を追加
  • カラー制御の名前を「ColoredIn」に変更
  • ColoredIn」のカラーに以下のエクスプレッションを追加
//文字のランダムカラー取得
var RandomColor = comp("_global").layer("gData").effect("RandomColor")("カラー")
var c = [1,1,1,1];
if(time>inPoint+1.3){
    c = [1,1,1,1]
}else if(time>inPoint+0.8){
    //0.8秒以降は徐々に白に
    var key = time-inPoint-0.8;
    c[0] = key;
    c[1] = RandomColor[1]+key;
    c[2] = RandomColor[2]+key;
    c[3] = RandomColor[3]+key;
}else if(time>inPoint+0.6){
    c[0] = 0;
    c[1] = RandomColor[1];
    c[2] = RandomColor[2];
    c[3] = RandomColor[3];
}else if(time>inPoint+0.4){
    c[0] = RandomColor[1];
    c[1] = RandomColor[2];
    c[2] = RandomColor[0];
    c[3] = RandomColor[3];
}else if(time>inPoint+0.2){
    c[0] = RandomColor[0]+0.5;
    c[1] = RandomColor[1]+0.5;
    c[2] = 0;
    c[3] = RandomColor[3];
}else{
    //違うなら、
    c = RandomColor;
}
c
  • 各シェイプレイヤーの色にthisComp.layer("data").effect("coloredIn")("カラー")を参照するエクスプレッションを書く

letter_a_origin

5.レイヤーのインアウトポイントとタイムリマップで制御してみる

本題です

  • 表示用のコンポジションを作成し、先ほどの文字入りコンポジションを配置します。
  • 右クリック>時間からタイムリマップを適応します。
  • タイムリマップに以下のエクスプレッションを追加します。

これで、レイヤーの長さに合わせてかっこいいアニメーションでイン・アウトする文字が作れます。カッコイイ


以下蛇足です。

このままだと如何せん使いにくいので何とかします。(2015/07/20 今後書き足すかも)

6.文字をコンポ名から参照させる

現状だといちいちテキストレイヤーをいじらなくちゃで面倒なので、テキストをコンポジションの名前から参照するように変更します。

まずは文字が含まれているコンポジションの名前を「letter_あ」に変更してください。

次に、テキストレイヤーのソーステキストに以下のエクスプレッションを追加します。

thisComp.name.split("_")[1]

見たまま、このコンポジションの名前_で分けてその2個目の値、という意味です。

これでコンポジションの名前から自動的に文字を出してくれるようになります。

7.スクリプト使って文字の分だけ複製する

いちいちコンポジション複製してやるの面倒!!

自動化しましょう。

コンポジションを選択した状態で実行すると、予め書いておいた文字の分だけ複製するスクリプトを書きます。

上記のjsxファイルをダウンロードしたり書き写して保存、プロジェクトパネルで対象のコンポジションを選択した状態で AEの「ファイル>スクリプト」から実行してください。

これでコンポジションが複製されたはずです。

実際に使うときは、タイムリマップにエクスプレッションかけたコンポジションをCtrl+Dで複製、タイムラインとプロジェクトパネルで入れ替えたいものを選択した状態でCtrl+Alt+/して使いましょう

8.スクリプト使って歌詞表示を自動化したい

展望です。


以上、タイムリマップを活用したテキストアニメーションで文字を派手に表示しようという企画でした。

本動画の方は今月末に公開予定(死)ですので、お楽しみに。

  1. まつらい

    昨日あげてたやつのチュートリアル的なものをまとめました
    http://t.co/wIfucKIWCM http://t.co/zHl1cQwcap

この記事にコメントする

このページのリンクのついたTwitter上の発言を、一定時間ごとに自動的に取得してます。

残り140文字
 ツイートする